基于ROS系统的可二次开发四轮驱动平台

2021-05-24 10:34赵宸锐白英良
物联网技术 2021年5期
关键词:四轮驱动下位上位

赵宸锐,白英良

(防灾科技学院,河北 廊坊 065201)

0 引 言

现在越来越多的地方需要非人力设备进行工作,特别是危险的巡检工作,因巡检的环境、地形以及工作任务的特殊性,对非人力设备有着不同的要求。本文设计的基于ROS系统的可二次开发四轮驱动平台能够快速满足开发任务要求,大大节约了前期可移动平台搭建的时间,在此过程中可根据需要安装激光雷达、深度摄像机以及其他各种传感器,或者更换扭矩更大的电机。

1 四轮驱动车平台整体设计

良好的平台设计能减少系统对自身位置判断的误差及不必要的能量损耗,所以移动平台采用37-520直流减速电机,其铝合金底盘尺寸为324 mm×200 mm×3 mm,有4个60 mm×24 mm的麦克纳姆轮,以及mpu9250九轴加速陀螺仪和STM32F103RCT6下位机主控芯片,电池则采用12 V,10 A·h的大容量锂电池。

下位机通过编码器和IMU获得自身位置信息,通过rosserial协议和STM32(ST库)与上位机进行通信,上位机则通过实际需要选择配置,文中使用的上位机搭载Ubuntu 16.04系统,硬件为i5-8300H+GTX1050ti+16 GB的笔记本电脑。

2 硬件控制层

硬件控制流程如图1所示。

图1 硬件控制流程

2.1 底盘和驱动

底盘材质选用厚度为3 mm的铝合金,其可以承受更多的设备重量进行具体功能的开发,同时铝合金具有质量轻和坚硬的特性,能减少不必要的电机负载和意外撞击的损失。4个电机采用带有霍尔编码器的12 V直流减速有刷电机,最大扭矩为5 kg·cm,可以满足大部分实验所需,电机上的霍尔编码器可以实时获取电机的转动数据,从而更加准确地控制小车直线运动和曲线运动,并获取小车的二维坐标位置,同时,4个电机驱动有较好的稳定性和灵活性。驱动芯片采用常见的TB6612FNG芯片,TB6612FNG是基于MOSFET的H桥集成电路,效率远高于晶体管H桥驱动器;相比L293D每通道平均600 mA的驱动电流和1.2 A的脉冲峰值电流,它的输出负载能力提高了一倍;相比L298N的热耗性和外围二极管续流电路,它无需外加散热片,外围电路简单,只需外接电源滤波电容。因为它的性能优越,于是采取1个芯片控制2个电机的方法,加以配合PWM脉冲宽度调制以及PID算法进行闭环控制,PID最优化参数是在保持PID一定的鲁棒性下,寻找最优化的参数配置[1],这样可以使其运动更加平滑稳定。电机驱动模块电路如图2所示。

图2 电机驱动模块电路

2.2 下位机串口通信和IMU模块

下位机采用STM32F103RCT6,它属于Cortex-M3基础型MCU,内部具有多个定时器,自身集成了CAN控制器,支持CAN协议2.0A和2.0B,同时有较多的开源资料可供开发使用,同时工作频率可达到72 MHz,可作为控制四轮驱动车运动的处理器,还支持3个USART接口,有丰富的可拓展性。串口通信电路采用CH340G芯片,只需通过在外围电路附加晶振和电容就可以实现USB转串口功能,支持硬件全双工串口,内置收发缓冲区[2],软件使用rosserial协议和STM32(ST库)进行通信[3],通过这样的P2P数据传输以及通信协议,可以与上位机进行4个电机、IMU数据交互,以及上位机对下位机运动的控制。STM32以及串口通信的电路图如图3所示。

图3 STM32以及CH340G芯片电路

惯性测量仪模块采用MPU9250,它内部集成了3轴的陀螺仪、加速度计和磁力计,输出为16位的数字量,可通过集成电路总线(I2C)与单片机进行数据交互,传输速率最高可达400 kHz/s,满足下位机及时获取四轮驱动车方向信息的要求,上位机可及时记录和调整控制[4]。IMU电路模块如图4所示。

图4 IMU电路模块

3 四轮驱动车运动模型建立

本文选择差速模型,前后一共有4个驱动轮,转弯灵活,同时能产生很大的驱动力,可以实现圈地转向,为了更好地控制平台的转向,减小不必要的摩擦力,需要对模型进行运动力学和摩擦力学的分析,找到电机转速与轮距和小车自身重量的关系。

3.1 运动学分析

参考阿克曼转向几何原理,即在汽车转向时4个轮子都近似围绕一个圆点做圆周运动,以此保证转弯的稳定性,由此得出四轮差速驱动车的运动学模型如图5所示。

在图5中:前左轮和后左轮的转角为α1;前右轮和后右轮的转角为α2;左右轮间距为2L;前后轮轴距为2K,车子重心的线速度为v;角速度为ω;4个轮子实际的运动方向分别为V1,V2,V3,V4,R=V/ω,通过图5可以得出:

图5 四轮驱动车运动学模型

综上可得,电机的角速度ωn为:

式中:i为减速器的减速比;r为车轮半径。根据公式ωn可得到影响小车运动的主要因素有轮距和4个电机的转速,根据此关系式可以得到较好的运动模型,以此控制小车,使其稳定地前后移动和平滑转弯[5]。

3.2 摩擦动力学分析

由于4WD没有转向机制,所以小车在转向时会产生一定的摩擦力。当小车原地旋转时,受到的摩擦力可以分为静摩擦力F,滑动摩擦力Fo,滚动摩擦力Fμ,各个力的方向如图6所示。

图6 原地旋转时轮子受力方向

假定小车以O点为圆心做匀速圆周运动,小车质量为m,动摩擦因数为μ,则可得出:

两式和并得到:

由此可以看出,如果轮胎和地面之间的接触面积较大,即动摩擦因数大,所产生的摩擦力不仅不能忽略,而且还对电机和轮胎产生一定的损耗,进而对PID系数产生浮动影响,使其控制影响因素变多,使用麦克纳姆轮就可以很好地解决这些问题[6-7]。

4 软件搭建

4.1 下位机程序

下位机主程序流程如图7所示,程序分为IMU信息处理程序、运动控制程序、串口程序。惯性测量单元(IMU)收集小车运动方位,通过程序进行数据处理,将得到的位置运动信息经过串口程序发送给上位机,运动控制程序则通过串口程序接收到上位机指令,通过解析从而进行相应的运动,串口程序主要是与ROS进行信息交互,使用rosserial协议可以很方便地让ROS与非ROS设备进行P2P通信。

图7 主程序流程

通信格式为:[第一字节-同步标志(0xFF)][协议版本][消息长度-低字节][消息长度-高字节][消息长度校验和][主题ID-低字节][主题ID-高字节][消息数据]…[消息数据]…[主题ID和消息数据校验和]。

4.2 ROS配置

机器人操作系统(Robot Operating System)并不是传统意义上的操作系统,本文将ROS操作系统安装在Ubuntu操作系统上,因为目前两者的兼容性是最好的。ROS操作系统的通信部分采用发布/订阅、客户端/服务器的方式,开发者若想使用只需要了解规则即可,这种操作模式大大提高了工作效率。同时,ROS操作系统具有免费开源、模块化、支持多种语言等特点[8-10],本文的ROS订阅与发布列表见表1所列,订阅下位机STM32F103RCT6发送过来的数据,其他功能包可对其引用计算。

表1 ROS话题列表

5 4WD平台的通信和运动试验

4WD平台试验验证步骤为:

(1)修改.bashrc文件,使下位机和上位机的通信协议匹配。

(2)更新修改后的.bashrc配置文件,使系统处于最新配置。

(3)运行bringup.launch文件,进行上位机与下位机串口通信,获得下位机的详细信息数据,如图8所示。

图8 ROS系统接收显示的下位机信息

(4)运行teleop_twist_keyboard.py文件,可以使用键盘控制4WD平台移动,如图9所示。

图9 测试使用的4WD平台

6 结 语

本文基于可快速二次开发的4WD移动平台,实现了使用ROS机器人操作系统与下位机使用C语言开发的嵌入式系统来控制平台的基础移动和对搭载传感器的通信。本文设计智能机器人平台的运动控制流程和相关运动控制电路,并通过对四轮驱动的运动学和摩擦力学分析得出使用麦克纳姆轮能更好地解决摩擦力问题。同时,参考ros_lib库文件和rosserial协议搭建了上位机与下位机的信息交互。通过对上述问题的解决,最终为二次快速开发做出了较为全面的设计。

猜你喜欢
四轮驱动下位上位
选育用管四轮驱动 打造高素质专业化年轻干部队伍
发射机房监控系统之下位机
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”
四轮驱动 促青少年健康成长
以新思路促推现代农业上位
CAN总线并发通信时下位机应用软件设计