泊车机器人控制系统硬件主要包括嵌入式运动控制平台、行走驱动电机、举升驱动电机、视觉传感器、AGV导航读码器、超声波避障传感器、网络通信模块、电源动力模块等组成。

 

控制系统软件框架整体设计

泊车机器人控制系统运动平台软件设计可分为基于嵌入式Linux操作系统开发的控制器软件部分和基于FreeRTOS实时操作系统开发的驱动器软件部分。泊车机器人运动控制系统软件流程如图所示:

 

泊车机器人协同载车板移动到达目标位置完成泊车任务时嵌入式运动控制系统平台首先进行系统资源初始化,同时在驱动板中FreeRTOS实时操作系统创建各子任务并对任务属性进行定义以满足系统实时性要求。系统通过任务调度器完成子任务的切换实现并行操作,不同优先级支持抢占式调度策略,同优先级任务支持时间片轮询调度策略。其中二维码识别定位子任务优先级定义为最高,执行二维码定位任务时将识别到的位置坐标信息与目标位置坐标比对,若为目标坐标点则移动到指定坐标位置此时泊车任务结束,若不是目标位置将当前位置坐标与栅格地图比对后确定出下一位置坐标点相对于当前位置坐标的方位,结合视觉巡线导航和全向运动控制使得泊车机器人移动到下一位置坐标点再次与目标位置坐标点进行比对,循环此过程直至机器人移动到指定目标位置并将运行结果上传至调度系统,至此本次泊车任务结束。

嵌入式Linux操作系统具有源码公开,支持GPL协议等特点,通过裁剪和配置内核和文件系统移植到嵌入式设备完成系统的定制化。应用程序中用户通过系统调用函数可以实现对内核的使用,实现即使不了解Linux内核结构也可以使用内核的目的。Linux系统由引导加载程序、系统内核、根文件系统、应用程序组成,层次结构如图所示:

 

泊车机器人信号线图像处理程序属于基于Linux操作系统的上层应用程序,通过Linux操作系统的V4L2接口驱动视觉传感器实时捕获信号线图像信息,同时利用OpenCV视觉库进行信号线图像处理得到泊车机器人的位姿信息,使用串口通信方式实现控制板与驱动板之间的数据传输,驱动板接收到控制板发送的机器人位姿信息参数结合运动控制算法协同控制多路电机完成视觉巡线操作。

 

ROS通讯机制

当选用Ubuntu16.04(xenial)操作系统,其适配的ROS版本为Kinetic具有较好的兼容性。ROS操作系统中节点是可执行程序的最小单位,节点之间通过话题(rostopic)、服务(rosservice)方式完成信息传输。采用ROS中的话题通信机制方式实现节点间的信息传输,在进行话题通信时所有的消息均被有序的存储在对应的话题中,节点将消息发布到一个或多个话题中实现信息分享,节点通过订阅该信息所存放的话题就能获取数据信息[38]。话题通讯方式是单向数据传输,单个节点发布数据信息,一个或多个节点接收信息。其中采集信号线图像信息并进行图像信息发布称为发布者,获取信号线图像信息并进行图像处理的称为订阅者,通过ROS通信机制实现泊车机器人在进行视觉巡线导航的同时完成二维码定位、超声波避障、全向运动控制等操作。

多路电机的协同控制是泊车机器人运动控制的核心,驱动板STM32是单时钟系统无法实现对多路电机的协同控制,多CPU控制会造成资源浪费以及控制任务之间同步的问题。微处理器不支持大型操作系统的移植同时不能满足多任务的并发操作,嵌入式实时操作系统占用内存较小满足微处理器内存要求,单个CPU一次执行一个任务,通过任务调度器进行任务切换使得多个任务并行且满足系统实时性要求。

主从设备间可以一对一进行信息传输也支持通过广播地址实现同时控制所有从机设备。当主从设备间一对一进行信息传输时从机设备接收到主机设备发送的信息帧,根据信息帧中的从机地址进入寻址到的从机设备,从机设备进行信息帧处理去掉信息帧帧头并进行CRC校验判断无误后执行主机请求的任务,将结果以信息帧的方式回传至主机设备,出现任务异常则返回一个错误信息帧,异常码表示可能出现的异常情况。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐