摘 要:本文设计了一种基于双MCU的机器人移动平台。平台功能包括自主移动、障碍物检测、自动避障、里程计、环境数据检测等功能。双MCU由STM32和Arduino组成。其中STM32负责自主移动、电机驱动以及串级PID、里程计等功能, Arduino负责障碍物检测、环境数据检测、显示等功能, MCU间通过串口进行通信。本文设计以Arduino作为辅助, STM32实现核心功能, 增强系统的实时性和稳定性。
关键词:超声测距; 里程计; 机器人移动平台;
Abstract: This article designs a robot mobile platform based on dual MCU. Platform features include autonomous movement, obstacle detection, automatic obstacle avoidance, odometer, and environmental data detection. Dual MCU consists of STM32 and Arduino. Among them, STM32 is responsible for functions such as autonomous movement, motor drive, cascaded PID, and odometer. Arduino is responsible for functions such as obstacle detection, environmental data detection, and display. The MCU communicates through the serial port. This article is designed to use Arduino as an aid, STM32 to achieve the core functions, and enhance the real-time and stability of the system.
Keyword: ultrasonic ranging; odometer; robot mobile platform;
引言
随着生产生活中自动化程度的日益提高, 机器人也广泛地应用在生产和生活中。从广义上来说, 自动执行某种功能的机器即可命名为机器人。现在广泛使用的大致分为两种机器人:一种是家庭中使用的语音类教育机器人、玩具类舞蹈机器人;另外一种是移动机器人, 主要应用于巡视等固定线路的场景。本文设计的双MCU移动机器人平台适用于此场景。
1、 总体设计
为适应机器人移动底盘的需求, 本设计采用双轮驱动加一个万向轮的三轮结构, 此种结构简单易于实现。
轮式移动机器人具有机动灵活、运行稳定、速度快及载质量大等特点, 广泛应用于工程实际当中[1].系统中分为STM32和Arduino Mega 2560两个核心控制器。功能按照处理功能和速度有所区分。Arduino Mega 2560负责处理占用系统时间长且相对为辅助功能的硬件控制, 平台主要集成测距避障传感器、人体传感器和环境参数检测传感器。STM32负责电机控制、编码器输出检测、陀螺仪数据采集及滤波输出等。STM32和Arduino通过传统进行数据通信, 主要完成里程计数据通信、避障距离和避障方向参数的设置、实时平台八方向机器人与障碍物距离的传输, 当测量到障碍物时, 辅助人体检测传感器数据判断障碍物是否为生物。环境监测数据主要完成对温湿度、PM2.5、可燃气体及特殊气体测定等。
图1 总体设计结构图Fig.1 Overall design structure
针对巡视机器人需求, 平台预留里程计设计, 使用陀螺仪及编码器输出进行融合, 以极坐标形式与上位机或控制器进行连接。
2、 硬件设计
平台执行电机为两个MD36组成, 电机自带500线光电编码器输出, 其输出端接入1:27减速器, 起到增加电机扭矩和提高编码器精度两个作用。电机额定电压为24V, 采用工业级双H桥XY-160D电机驱动模块, 可同时驱动两台直流电机, 宽电压6.5V~27V, 单路7A大功率。光耦隔离输入信号, 带隔离和欠压保护, 符合电磁兼容EMC设计规范, 有静电泄放回路, 稳定可靠。
陀螺仪使用MPU6050模块, 该模块输出三维加速度等数据, 作为里程计速度来源使用。
陀螺仪原始数据伴随着大量噪声, 数据直接应用于计算将使得移动平台的控制出现抖动现象。使用卡尔曼滤波器进行滤波处理, 得到稳定的角度输出。卡尔曼滤波是一种对系统状态进行估计的有效算法[2], 是一种利用线性系统状态方程, 通过系统输入输出观测数据, 对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响, 所以最优估计也可看作是滤波过程。
测距传感器使用超声波测距模块, 型号为KS103, 模块盲区为1cm, 测量大平面物体量程达到7m~8m, 3m范围时的平均精度2mm~3mm.该模块同时具备了温度补偿功能, 提高了测量的精确程度。
图2 硬件结构及供电系统Fig.2 Hardware structure and power supply system
图3 超声测距模块分布Fig.3 Distribution of ultrasonic ranging module
图3为测距传感器的分布图, 在移动平台的圆形底盘上每隔45°进行分布, 安装时可进行每个位置两个传感器以增加相互验证的效果。模块采用I2C总线通信, Arduino可同时连接多个模块。
人体检测传感器采用HC-SR505模块, 该模块价格低廉可节约成本。测量范围在3m范围之内, 锥形测距角度小于100°, 静态电流小于60μA, 降低平台功耗。
环境检测传感器主要集中了温湿度传感器SHT30、PM2.5传感器GP2Y1014AU、一氧化碳传感器solidsense4CO-500等。
系统电池电量检测采用IM1253微型电能计量模块, 该模块电压量程为0V~260V, 电流量程10m A~16A, 并提供URAT通信接口, 实时监测系统电量。
电源系统由外部锂电池提供直流24V电压, 内部可转换12V、5V和3.3V等电压作为系统供电电源。
3、 软件设计
移动平台采用的ROS (Robot Operating System, 机器人操作系统) 系统, 是近年来国际上正在迅速发展的一种开源机器人操作系统开发平台。通过提供统一接口, 点对点松耦合通讯方式使得代码重用和模块化设计变得更加简便, 可显着提高机器人控制系统应用开发速度, 降低开发成本[3].
图4 ROS节点结构设计Fig.4 ROS Node structure design
本文ROS节点如图4所示, Rviz可视化节点和系统其它节点为用户上位机自行设定。
节点结构设计中, 底层控制板、PID控制方程、底盘、底盘数据采集板为移动平台提供, 其它节点由上位机进行发布。
底层的服务订阅和发布直接由Arduino进行调配, 通信间隔10Hz, 以解放STM32专门进行运动控制。
4、 PID控制
在模拟控制系统中, 控制器最常用的控制规律是PID控制。模拟PID控制系统原理框图如图5所示, 即具备比例 (P) 、积分 (I) 、微分 (D) 3种调节规律的调节器, 简称为PID调节器。其调节规律的数学表达式是:
PID调节器在调节开始时, 微分先起作用, 使输出信号发生突然地大幅度变化;同时, 比例也起作用进行调节, 使偏差幅度减小;接着积分起作用, 慢慢地把静差消除。
运动角度控制, 单片机执行PID控制后, 首先将陀螺仪的Yaw轴数据AD与设定Yaw轴值SETAD相减, 得到角度基本偏差e (t) .判断|e (t) |是否在角度范围a之内, 如果超过角度范围a, 则输出全脉冲, 即占空比为100%, 使电机全速工作, 接着将累积温度差sum归零。如果|e (t) |在温度范围a之内, 则进行PID控制:由本次角度基本偏差e (t) 与上一次角度基本偏差e (t-1) 相减获得相对偏差Δe, 将e (t) 累加计入累积偏差sum, 再将e (t) 的值传递给e (t-1) 以便下一轮的PID计算;再计算控制输出中间量PIDOUT=Kp*e (t) +Ki*sum+Kd*Δe, 使输出脉宽控制量PWMFINAL=5000-PIDOUT, 然后进入控制PWM子程序。
图5 运动角度控制流程Fig.5 Movement angle control process
5、 结语
本文设计的双MCU移动机器人平台可有效地配置底层控制资源, 将实时性控制要求较高的部分用专用STM32进行处理, 其它耗费系统资源的非实时性性能由Arduino处理。
参考文献:
[1]阴贺生, 张秋菊, 宁萌。基于驱动轮同步转向机构的全向移动机器人[J].轻工机械, 2018, 36 (01) :24-28.
[2]李成龙, 钟凡, 马昕, 等。基于卡尔曼滤波和随机回归森林的实时头部姿态估计[J].计算机辅助设计与图形学学报, 2017, 29 (12) :2309-2316.
[3]张颖, 平雪良, 仇恒坦, 等。ROS平台下多轴机器人PVT运动控制研究[J].组合机床与自动化加工技术, 2017 (11) :57-60.