APP下载

基于ROS平台的智能车运动线控系统设计及实现

2019-09-19

测控技术 2019年4期
关键词:下位移动机器人上位

(上海大学 机电工程与自动化学院,上海 200444)

随着科学技术的日益发展,机器人技术逐渐渗透到各个领域,这些领域对自动化以及智能化的要求也越来越高,移动机器人就是其中的热点之一。智能车又称作轮式移动机器人,是一种集环境感知、车辆定位、运动控制三大基本功能于一体的综合系统[1]。由于移动机器人的定位、导航、避障、规划与决策算法都需要用硬件平台来进行实验验证,所以对于移动机器人平台的研究是整个移动机器人技术研究的基石。当下,市场上也有一些应用于科学研究的移动机器人平台,例如Pioneer 3-DX、TurtleBot、EAI、Autolabor等[2]。

研究表明,市面上现有的移动机器人平台仍然存在一些不足之处:① 虽然性能优良,运行也较为稳定,但是底层设计细节几乎是封闭式的,不支持完全开源且移植性能差,不利于二次维护和开发;② 方便搭载多个传感器且外形合适的硬件平台大多数产于国外,价格昂贵,中小型科研团队难以承担高昂费用[2]。基于以上原因,本文提出了一套适用于智能车的运动控制系统的硬件平台方案,完成了运动控制系统的相关线控设计,实现了低成本、以ROS(Robot Operating System)为主要软件平台的运动控制系统解决方案。

1 智能车整体结构分析与设计

所研究的智能车的最终目标是能够在园区、学校等一些公共场合,实现无人自主驾驶。这就表明智能车需要具有以下模块:① 环境感知模块,能够检测车体周围各种境况;② 车体定位模块,能够将环境感知模块检测到数据信息进行综合处理,进而确定车辆当前位置[3];③ 可靠的运动控制线控模块,在确认了车辆当前位置后,通过该模块实现对车辆速度和方向上的整体控制。所设计的智能车控制结构图如图1所示。

图1 智能车控制结构图

ROS是一个广泛使用的机器人系统的软件框架。ROS的基本原理就是无须改动就能够在不同的机器人上复用代码。它起源于斯坦福大学人工智能实验室的项目和机械人研发公司Willow Garage的个人机器人项目(Personal Robot Program)之间的合作,现在有很多的研究机构通过增加ROS支持的硬件或开放软件源代码的方式加入ROS的开发中[4]。

ROS提供一些标准的操作系统服务,如硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理等。它基于一个集中式拓扑的图结构,在节点中接收许多传感器、控制、状态、规划、执行器数据进行计算处理并发送[4-5]。各个库与功能包都是面向类UNIX系统的。智能车是一种轮式移动机器人,基于ROS以上优点,本文使用ROS为软件平台设计智能车的运动控制线控系统。

2 线控系统硬件方案设计

根据对智能车的整体分析,所设计的运动控制线控系统主要分为上位机和下位机两层,上位机主要是车载工控机,是整车的中央控制系统,负责控制全车的所有功能[6]。下位机是由STM32F013作为主控芯片负责控制信号的输出,实现对智能车的速度和方向的控制。另外,上下位机采用RS485总线进行通信,确保数据交流的实时性和可靠性。整个线控系统的硬件框架如图2所示。

图2 控制系统硬件框架图

下位机由车体、车轮、轮毂电机、电机驱动器、增量式编码器、STM32F103核心板、蓄电池电源组成。整个车体的运动控制分为横向控制和纵向控制两个部分。其中,横向控制是通过控制转向电机的旋转角度实现的。在转向电机的转向轴上安装增量式编码器用于提供转角反馈,结合转向电机的伺服电机驱动器,实现方向盘转角的闭环控制。纵向控制是通过控制前轮的两个轮毂电机转动速度实现的,轮毂电机采用两个直流无刷电机,并且安装增量式编码器提供速度反馈,通过双直流无刷电机驱动器实现纵向速度闭环控制。下位机的主要作用包括:① 将上位机发出的控制指令转换为驱动电机的速度控制信号和转向电机的方向控制信号,并将其输出到电机驱动器,实现智能车不同形式的运动;② 充当Modbus RTU从站。

上位机是装有ROS的车载计算机,ROS在环境模块和定位模块的基础上,计算智能车的位姿信息和里程信息以及速度信息等,最后负责下发智能车的移动指令。另外,上位机还是一个Modbus主站节点,能够实现和下位机之间的基于Modbus RTU通信协议的主从站通信。车载计算机采用普通笔记本,配置为:英特尔酷睿i5-4200H处理器、NVIDIA GTX 950M独立显卡、4G运行内存、 Linux操作系统为Ubuntu 14.04 LTS、 ROS的版本为indigo。

3 线控系统软件方案设计

根据车体运动控制的设计要求,系统软件主要是针对上位机和下位机进行设计的。上位机软件设计基于ROS,主要是在Linux平台下。上位机的功能主要是能够对智能车的信息进行综合计算处理,然后负责向下位机发送移动指令。下位机软件设计主要基于嵌入式系统,负责接收上位机的移动指令,并转换为相应的控制信号实现车体运动控制。

3.1 上位机软件设计

智能车上位机的功能都是通过ROS节点实现的,每个节点程序实现不同功能,节点之间通过发布和订阅主题的方式进行通信。上位机ROS中的节点总体框架图如图3所示。

图3 ROS节点总体框架图

各个节点的功能如下。

Decision_cmd:通过环境模块和定位模块的处理结果,生成具有运动控制层所需的速度和方向信息的Twist类型的消息,并通过/cmd_vel主题进行发布。

Teleop_keybord:模拟发布Twist类型消息,用于测试本文设计方案是否能够有效地完成运动控制。

Ros_stm32_modbus:综合计算处理智能车信息,并且是ROS系统下的Modbus主站,实现和下位机之间的基于Modbus RTU通信协议的主从站通信,在/odom话题上发布里程计消息。

Rviz :提供一个可视化界面,主要是用来显示上位机的所有节点状态。

3.2 下位机软件设计

下位机的主要作用是接收并解析上位机发送的移动指令。为了能和上位机进行通信,在主控芯片STM32F103移植FreeModbus协议,搭建了Modbus RTU从站,实现了基于Modbus RTU通信协议的主从站通信[7-9]。下位机接收到上位机的移动指令后,将其解析生成轮毂电机驱动器所需的PWM控制信号和转向电机驱动器所需的RS485电平信号,实现了速度的闭环控制和转向的闭环控制。下位机的软件设计流程如图4所示。

下位机软件程序运行过程如下:首先执行整个系统的初始化工作,包括GPIO口、串口、定时器等,此外,Modbus传输协议的初始化也是必要的。然后使之能通信协议栈,并且检测是否有事件发生。如果没有一个事件发生,则继续检测。如果有一个事件发生,则开始读取上位机发送的数据,然后解析并且生成控制信号。最后将解析后生成的信号输出到对应电机驱动器,实现对智能车的运动控制。

4 实验结果分析

整个运动控制线控系统设计完成后,为了验证本文设计的线控系统方案是否能够有效地控制车轮速度和方向盘转角,在搭建的智能车硬件平台车上进行实验,智能车实物图如图5所示。

图4 下位机软件设计流程图

在ROS中,Twist类型消息包含了运动控制层所需的速度和方向信息,通过在ROS中设计测试节点,用于发布Twist类型消息进行实验。为了方便试验,还需要准备另外一台手持的笔记本电脑,通过局域网的方式加入车载计算机的ROS通信网络,这样就能够通过手持的笔记本电脑控制发布Twist类型消息,从而观察所设计的运动控制线控系统解决方案的控制效果。

图5 智能车实物图

实验的操作流程为:首先启动智能车整车系统,待一切正常后,由手持的笔记本电脑的键盘向上位计算机ROS中发布Twist类型的消息。观察上位机发送的控制信号能否控制智能车进行相应的运动。

实验前,先完成各部分接线,并且进行安全检查。然后将手持的笔记本电脑和上位计算机连上同一Wi-Fi。随后配置好两台计算机的 ROS_MASTER_URI 和ROS_HOSTNAME。ROS_MASTER_URI应该设置为一样,但是ROS_HOSTNAME则需要设为各自的IP。然后在上位机的笔记本电脑上运行roscore,并启动ROS中所有的节点。最后在手持的笔记本电脑上运行测试节点文件Teleop_keybord,然后通过键盘上的方向键控制智能车的运动。通过ROS的内置插件rqt_plot,可以监测到实时数据变化。实验过程图如图6~图9所示,其中图6~图8中的曲线表示转向轴转角的变化,图9中的曲线表示小车速度的变化,横轴是时间轴。

图6 转向轴左转到60°曲线图

图8 转向轴横向控制转角曲线图

图9 纵向运动控制速度曲线图

从图6和图7的实验结果可知,实验分别单次控制了转向轴左转到60°位置和右转到60°位置,控制效果良好。图8实验中控制转向轴由0°位置先左转到90°位置,然后再由90°位置右转回到0°位置,表明本文方案可以完成转向轴左右转的切换,实现转向的闭环控制。图9实验中控制小车以1 m/s的速度行驶,小车速度相对平稳,可以看出低速情况下的纵向闭环控可行有效。

实验结果表明,与人工驾驶控制系统相比,该方案摆脱了对人工的依赖性,更加智能化;另外该方案执行上层决策结果,能够较为准确地执行具体运动指令,而人工驾驶可能需要不断调整。总体来说,所设计的运动控制线控系统可以实现小车的纵向运动和横向运动控制,并且是有效可行的。

5 结束语

本文提出一种基于ROS和嵌入式的智能车控制系统方案,然后详细阐述了该方案的硬件和软件的设计及实现细节。通过使用Modbus通信协议将ROS和嵌入式系统相结合,使设计的系统具有成本低、可扩展性强的特点,为后续研究智能车的控制方案提供了基础。本设计仅适用于低速的无人车平台设计,如果提高速度,需要采用频率更快的通信协议,如Modbus TCP协议等。

猜你喜欢

下位移动机器人上位
移动机器人自主动态避障方法
提高火力发电厂自动电压控制系统投入率的措施
发射机房监控系统之下位机
特斯拉 风云之老阿姨上位
基于Twincat的移动机器人制孔系统
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
围观党“下位”,吐槽帝“登基”
CAN总线并发通信时下位机应用软件设计
极坐标系下移动机器人的点镇定