朱衍明,林九根,宋家平,王天昊
(中国船舶工业系统工程研究院,北京 100094)
海洋面积约占地球总面积的百分之七十一,并且在广阔的海洋里蕴含着丰富的生物和矿物资源[1]。随着人类工业化和城市化的进程加剧,以及全球航海运输的进一步发展,陆上资源日益枯竭,世界各国的能源开发正在由陆地转向海洋,对海洋资源的争夺和开发在21世纪将逐渐成为海洋大国的最重要研究方向之一[2]。
受海洋水下条件以及人类自身条件的约束,在对海洋的探索和开发过程中,无论在民用还是军用产品上,人们通常选择使用无人装备,即水下机器人。无人水下航行器( UUV, unmanned underwater vehicle)正是这样一种优秀的水下无人装备平台,其运行方式为半自主式或智能自主式。能够通过自身携带的能源和各种传感器设备,完成对任务区域的探测和任务执行并顺利返航[3]。
近十几年,随着微电子技术的发展以及人工智能技术的突破,无人水下航行器得到了长足发展,UUV的控制系统也随之越来越强大和复杂。传统的集中式计算控制系统架构已经难以满足复杂的任务控制需求,基于分布式分层理论的控制系统架构已越来越多地被各科研机构和开发商所采用[4-6]。本文正是在分层式UUV控制系统架构的基础上,提出了一种基于嵌入式系统STM32的UUV运动控制层设计方案,艇体采用X型舵加推进器进行运动执行,能够很好地缓解决策层的运算压力,提高控制系统的整体可靠性。
UUV的系统架构会直接影响控制系统的设计和实现难度,并影响航行器的稳定性、可靠性以及航行器的运动能力。合理的系统架构能够使UUV通过自身的各种传感器获得自身的运动信息和周围环境的相关信息,能够使UUV的决策系统做出合理的决策,并准确合理地驱动实体层的具体执行机构,同时还具有一定的与其他系统相兼容的特点,并且更容易进行系统能力扩展,例如增添其他传感器设备等。目前业界广泛使用的系统架构如图1所示,其系统结构分为4层,这4层既包含了硬件系统架构,也包含了软件系统架构[7-9]。
图1 分层式系统架构
任务层是整个UUV控制系统的最高层,主要负责接收岸基端发来的任务指令,之后将要执行的复杂任务解析成若干个子任务后传递给下一层,同时还要负责电池剩余电量的推算等相关系统管理任务。
决策规划层主要涉及到UUV各种算法的实现,包括导航定位、地图构建、障碍检测、状态监视,并据此进行路径规划,实时确定出下一步的运行动作,如航行方向和航行速度。
运动控制层的作用是根据决策和规划层得到的运行动作指令,采用一定的运动控制算法来解算出UUV各运动部件的具体运行参数,然后传递命令给实体层的各运动执行部件,从而使UUV完成上层系统所规划的运动路径。
实体层指安装在UUV上的推进器、航向控制舵机等运动执行设备以及其他传感器等设备,所涉及的传感器通常有深度计、高度计、多普勒测速仪、光纤陀螺仪、三轴加速度计、北斗、摄像头、前视声呐和侧扫声呐等。
UUV控制系统中的各层之间的通信以及传感器的通信通常选用工业控制领域成熟的总线,如RS232总线、RS485总线、CAN总线和EtherCAT总线。其中CAN总线因相较RS232、RS485总线有更高的可靠性;相较EtherCAT总线具有低成本和易用性,因而在工业控制领域中得到了更广泛的应用,常被用在工业自动化、汽车、船舶、医疗设备、工业设备等领域[10]。
CAN(controller area network)总线是由德国Bosch公司研制开发的一种串行数据通信协议,应用在汽车内部在各部件之间进行数据交互。CAN总线已被ISO国际标准组织制定为国际标准,并且广泛应用于嵌入式系统和分布式控制领域。CAN总线由OSI模型发展而来,但是CAN总线只有物理层、数据链路层和应用层协议,较简练的协议使得CAN总线具有较高的实时性[11]。CAN总线是对等总线,总线上每个节点都可以主动发起总线访问,每个节点都有优先级设定,并支持点对点、点对多和广播等通信模式。CAN总线的传输介质通常是传统的双绞非屏蔽线,总线通信速率会影响总线通信长度,在最高速率1 Mbps下的通信距离可达40 m。CAN总线节点在检测出错误后会自动退出总线,使得其传输可靠性很高[12]。
UUV的控制系统具有分布式节点数量大的特点,因为UUV为获得丰富的外界环境信息,通常会挂载众多的各种传感器设备。众多传感器使UUV具备更好的任务执行能力,智能UUV则更是如此。CAN总线最高1 Mbps的传输速率对于UUV控制系统的运动控制信号和相关传感器数据信号足以满足需求。UUV所携带的水下传感器一般比较昂贵,且UUV所在的水下工作环境相对比较恶劣,因而对控制系统通信链路的可靠性要求相对较高,因为一旦通信环节出现故障,将很可能会对UUV造成难以挽回的损失。而CAN总线协议的传输层和数据链路层具有完善的错误检测和数据重发功能,保障了数据通信的高靠性,很好地满足了工作环境要求。
因此本文设计的运动控制层选择CAN总线完成与决策规划层的控制指令数据交互,并通过CAN总线实现推进器的运动控制通信和其他传感器的读取。
意法半导体的STM32系列处理器是专为要求高性能、低成本、低功耗的嵌入式应用而设计的基于ARM公司Cortex-M的32位Flash微控制器。它为用户提供了很高的开发自由度,既可以使用底层寄存器进行编程,也可以很方便地使用官方提供的库文件进行编程,两种编程方式都可以很方便地移植到同系列的32位产品中。STM32系列处理器具有高性能、实时性好、低功耗和低电压操作等特性,同时还具有易于开发和集成度高的特点。按内核架构分为主流产品、超低功耗产品和高性能产品。
本文选用STM32F407ZGT6型高性能微控制器作为UUV运动控制层的核心计算机,它采用Cortex M4内核,带FPU和DSP指令集,最高运行频率可达168 Mhz,并且拥有2个CAN、3个12位ADC、3个SPI、2个全双工I2S、3个IIC、6个串口、1个10/100 M以太网MAC控制器、12个16位定时器、2个32位定时器、1个RTC等众多接口和资源,完全能够满足运动控制层的接口需求和算力需求。
一般分布式控制系统从纵向看具有分层的特点,且层与层之间通过网络总线通信,从横向看则具有模块化分散的特点,每个模块之间也是通过各种工业总线进行数据通信的。本文设计的UUV运动控制层通过CAN总线与决策规划层通信,接收其下发的运控控制指令,通过另外一条CAN总线与实体层的推进器以及其他传感器进行通信,进行推进器驱动和传感器数据采集。一些传感器设备亦可通过RS232或者其他工业总线与更高的其他层进行数据交互。具体的运动控制层总线网络架构如图2所示。
图2 运动控制层总线网络架构
以STM32F407ZGT6为运动控制层核心控制器,设计两路CAN总线、2路RS232总线和1路485总线、4路PWM输出,并利用IIC接口外接一片2 Kbit存储空间的EEPROM,用以保存舵机的初始偏差等掉电不丢失的参数。其中EEPROM实际电路如图3所示。
图3 EEPROM存储电路
所谓舵机,其本质就是自带简易反馈系统的伺服电机,常见的舵机主要指的直流伺服电机,通过调节电机输入信号的PWM占空比可以实现电机较精准的舵机转动角度控制。PWM(pulse width modulation)就是脉冲宽度调制,也就是占空比可变的脉冲波形。PWM的占空比,就是指高电平保持的时间,与该PWM时钟周期时间之比。
舵机的控制一般需要一个20 ms左右的时基脉冲,该脉冲的高电平部分一般为0.5~2.5 ms内的角度控制脉冲部分,总间隔为2 ms的时间长度。
本文使用D30型水下舵机,该舵机是一种空心杯直流电机,耐压深度可达水下300 m,额定工作电压为7.4 V,额定扭矩为15 kg·cm,转动角度范围为270°,信号范围为0.5~2.5 ms,信号频率为50~300 Hz。
该舵机的接线定义为红色线为电源正极,黑色线为电源负极,白色线为控制信号输入线即PWM信号线。STM32通过输出PWM波即可完成舵机转动角度的控制。
STM32F407ZGT6通过定时器产生PWM波形,其定时器除了TIM6和TIM7,其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。而通用定时器也能同时产生4路的PWM输出。本文设计的UUV运动控制层需要输出4路独立的PWM波形来分别控制4个舵机。因此STM32F407ZGT6有足够的定时器资源来输出4个独立的PWM波。
STM32F407ZGT6通过定时器产生PWM波形的原理如图4所示。图中,我们假定定时器工作在向上计数PWM模式,且当CNT 图4 定时器产生PWM波形的原理 ISO 国际标准组织先后制定了ISO11898和ISO11519-2两种CAN 总线协议标准,其中CAN 总线的高速通信标准为ISO11898 标准,其通信速度范围为125 kbps~1 Mbps,CAN 总线的低速通信标准为ISO11519 标准,其通信速度范围为 125 kbps 以下。两种标准的数据链路层的定义是相同的,但是物理层定义不同。本文采用通信速率较高的ISO11898 标准设计,其物理层特征如图5所示。 图5 ISO11898标准CAN总线物理层特性 从图5的ISO11898 标准物理层特性可以看出,显性电平是CAN_H和CAN_L两根信号线电压之差2.5 V左右,对应逻辑为0;而隐性电平是CAN_H和CAN_L两根信号线电压之差为0 V,对应逻辑为1。CAN总线具有线与逻辑的特点,当总线上某一个CAN节点输出显性电平,即逻辑0时,那么总线上的线与逻辑就总为逻辑0,即总为显性电平,因而CAN总线上显性电平具有优先权。同理隐性电平则需要总线上所有节点都输出隐性电平。另外,ISO11898 标准CAN总线协议的物理层要求在总线的两端各加一个120 Ω的终端阻抗匹配电阻,以减少传输线上的回波反射,从而提高信号的完整性。因此本文的CAN收发电路设计如图6所示。 图6 CAN收发电路 如图6所示,STM32F407ZGT6的两个CAN口都被利用起来,一个CAN口用于与决策规划层通信,另一个CAN口用于与实体层的推进器或者其他传感器通信。CAN物理层接口芯片采用TJA1050,它是控制器区域网络(CAN)协议控制器和物理总线之间的接口,该器件完全兼容ISO11898标准,为总线提供差分发射能力并为CAN控制器提供差分接收能力。 当代UUV的日益关注水下机动性能,除了追求高航速之外,航行器的机动灵活性也成为衡量航行器战术性能的重要指标,而航行器尾舵作为航行的关键装置,经过近几十年的演化和发展,逐渐形成“十字型”和“X型”两种流派,尤其是近年X型尾舵日渐获得新一代航行器的青睐,逐渐成为先进UUV的标配[13-14]。 随着科技的发展,X型尾舵的操控性复杂性、可靠性和安全性不可同日而语,在克服控制方式复杂度等固有缺点之后,X型舵操控的优势愈加突出。X型尾舵的舵效要高于十字型尾舵,因为X型舵4个舵面可以同时参加航行器单一方向的机动,会提供更大的能量,而且每个舵面都可以单独动作,即便出现其中一两个舵面损坏的极端情况,航行器仍然能够正常工作,这便大大提高了控制系统的冗余性和安全性[15]。 X型舵的4个舵面都能在水平面和垂直面产生操纵力,且4个舵面布置在航行器尾部的对角线上,因此在不突出筒体艇身筒体尺寸的情况下,舵面可以更好地让航行器完成坐底海床的动作,不会撞坏底部舵面。因此更适合在浅海海域活动,靠岸也更安全,同时十分有利于UUV的布放和回收操作。因此本文的UUV运动控制层针对X型舵设计完成打舵控制。 X舵布局方式如图7(a)所示,从尾部按顺时针方向看,4个独立舵舵角分别标记为δ1、δ2、δ3、δ4,且规定向右打舵为正,向左打舵为负。图7(b)为十字舵布局方式,其中δs、δr分别表示尾升降舵角和方向舵角[16-18]。 图7 X舵与十字舵布局方式 任意一个舵面偏转后都会产生一个空间力F,该力可以分解为公式(1): (1) 其中,X、Y、Z为X舵舵力在艇体坐标轴上的分量,K、M、N为坐标轴上的舵力矩分量。艇体只做潜浮运动时,十字舵表达为δr=0、δs≠0,X舵表达如公式(2)所示: (2) 艇体只做转向运动时,十字舵表达为δr≠0、δs=0,X舵表达如公式(3)所示: (3) X型舵由于其空间布局方式,不存在直接的方向舵和升降舵,每个舵面的偏转都会引起航行器的潜浮与转向,因此需要多个(4个或者2个)舵面的协同控制来实现单一方向的航向或者深度控制。以向左转向运动为例,同时打下舵(δ1=δ2<0)或者同时打上舵(δ3=δ4<0)或者同时打左舵(δ2=δ3<0)或者同时打右舵(δ1=δ4<0)在理论上都能实现艇体向左转,但考虑到艇体尾部对水流的影响,以及为避免艇体横倾,同时打左舵(δ2=δ3<0)是最佳方案[19-20]。同理向右转向运动最好同时打右舵(δ1=δ4>0),上浮运动最好同时打上舵(δ3=(-δ4)>0),下潜运动最好同时打下舵((-δ1)=δ2>0)。 将通用运动控制层控制器作为下位机与UUV尾段参照图2进行电气连接,其中上层通讯CAN总线通过仿真器与上位机电脑相连,下层CAN总线进行推进器控制,PWM输出用于舵机控制。之后将UUV尾段置于水箱中进行运动控制测试,实测图如图8所示。 图8 UUV尾段实测图 主要测试项目和测试方法如表1所示,测试目的在于完成运动控制层的核心能力验证,即对上层通信和对下层运动控制。 表1 测试项和测试方法 下位机通过上层通讯CAN总线与上位机通信时需要自定义控制命令格式,此处CAN通信采用1 Mbps的通信速率,并通过标准数据帧格式进行通信,且其数据字段长度为8个字节,数据字段格式直接采用推进器通信协议里的定义,如图9所示。这样下位机在收到CAN总线数据帧后进行解析,如果是推进器的控制指令则直接转发给推进器控制器,从而完成推进器的控制测试。 图9 数据字段格式 同样,如果下位机在收到CAN总线数据帧后解析为打舵控制命令,则其携带数据被转换为X舵的4个舵机舵角的PWM控制量输出,从而完成舵机的控制测试。 按照以上方法进行实验测试。测试结果表明本,采用该设计方案完成的通用运动控制层控制器能够实现X型舵的上下左右打舵操作,以及推进器的正推、反推控制,并且完成与上层通信的1 Mbps速率的CAN总线数据交互。达到了UUV运动控制层的设计目标。 以嵌入式系统STM32为核心构建的UUV运动控制层设计方案,符合分布式计算和模块化设计的原则,能够实现UUV实体层X型舵的打舵控制和推进器的推力控制以及同上层的通信,并能提供富裕的接口和算力进行各类传感器的数据交互。该设计方案具有较强通用性,提供了比较完整的UUV运动实体层和运动控制层解决方案。 本设计方案需要进一步完善X型舵的控制策略,解决例如单舵卡舵情况下的航行器运动控制问题[21]。2.4 CAN总线设计
3 X型舵的控制
3.1 X舵的优点
3.2 X舵到十字舵的等效控制
4 实验与测试
5 结束语