动态环境复杂多变,机器人如何在动态环境下实现自主移动是一个难题。本文以麦克纳姆轮底盘为对象,基于机器人操作系统(ROS),设计并实现了开放性好和代码复用率高的全向移动自主导航系统。首先,先对麦轮底盘进行URDF建模,运动学分析,根据得到速度关系重写新的底盘ROS节点;其次结合MOVE_BASE框架,搭建自主导航系统,利用SLAM技术构建二维栅格地图,结合AMCL和路径规划算法的融合导航算法开展自主导航测试。实验结果表明,该方法可以实现机器人的自主移动和避障要求,提升路径规划效果,验证了机器人自主导航的可行性。 Dynamic environment is complex and changeable, so it is a difficult problem for robot to realize autonomous movement in dynamic environment. Based on the Robot Operating System (ROS), this paper designs and implements an omnidirectional mobile autonomous navigation system with good openness and high code reuse rate based on the Mecanum wheel chassis. Firstly, URDF modeling and kinematics analysis were carried out for wheat wheel chassis, and new chassis ROS nodes were rewritten. Secondly, the autonomous navigation system was built by combining MOVE_BASE framework, 2D raster map was constructed by SLAM technology, and autonomous navigation test was carried out by combining AMCL and path planning algorithm. Experimental results show that this method can achieve the requirements of autonomous robot movement and obstacle avoidance, improve the effect of path planning, and verify the feasibility of autonomous robot navigation.
动态环境复杂多变,机器人如何在动态环境下实现自主移动是一个难题。本文以麦克纳姆轮底盘为对象,基于机器人操作系统(ROS),设计并实现了开放性好和代码复用率高的全向移动自主导航系统。首先,先对麦轮底盘进行URDF建模,运动学分析,根据得到速度关系重写新的底盘ROS节点;其次结合MOVE_BASE框架,搭建自主导航系统,利用SLAM技术构建二维栅格地图,结合AMCL和路径规划算法的融合导航算法开展自主导航测试。实验结果表明,该方法可以实现机器人的自主移动和避障要求,提升路径规划效果,验证了机器人自主导航的可行性。
ROS,自主导航,全向移动,自主避障
Tang Tian, Tao Li, Chunyan Deng, Guichuan Hu*, Hang Zhao, Fei Mi
School of Mechanical and Power Engineering, Chongqing University of Science and Technology, Chongqing
Received: Jan. 5th, 2022; accepted: Feb. 16th, 2022; published: Feb. 23rd, 2022
Dynamic environment is complex and changeable, so it is a difficult problem for robot to realize autonomous movement in dynamic environment. Based on the Robot Operating System (ROS), this paper designs and implements an omnidirectional mobile autonomous navigation system with good openness and high code reuse rate based on the Mecanum wheel chassis. Firstly, URDF modeling and kinematics analysis were carried out for wheat wheel chassis, and new chassis ROS nodes were rewritten. Secondly, the autonomous navigation system was built by combining MOVE_BASE framework, 2D raster map was constructed by SLAM technology, and autonomous navigation test was carried out by combining AMCL and path planning algorithm. Experimental results show that this method can achieve the requirements of autonomous robot movement and obstacle avoidance, improve the effect of path planning, and verify the feasibility of autonomous robot navigation.
Keywords:ROS, Autonomous Navigation, Omnidirectional Movement, Autonomous Obstacle Avoidance
Copyright © 2022 by author(s) and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
近年来,随着智能制造、网络信息和高集成度芯片等新兴技术的飞速发展,移动机器人在智能仓储、智能工厂和物流运输等行业内得到了广泛的应用 [
路径规划作为自主导航的核心,分为全局路径规划和局部路径规划。常用的全局路径规划算法有A*算法、蚁群算法以及RRT算法,针对原始算法存在的不足,国内外学者也做了大量的研究。Koenig S [
基于此,本文基于机器人操作系统(Robot Operating System, ROS)设计了一个由麦克纳姆轮驱动的全向移动导航系统。首先在GAZEBO中建立URDF机器人模型和地图环境,针对传统IMU存在的严重误差累积问题,融合IMU和AMCL信息增强定位;其次结合MOVE_BASE导航框架,在GAZEBO以及RVIZ中进行实验测试,使用基于ROS的A*导航算法和TEB规矩优化算法实现自主移动及动态避障。
URDF全称(United Robotics Description Format)统一机器人描述格式,是一个XML语法框架下用来描述机器人的语言格式 [
1) 麦轮底盘设计
编写底盘的URDF文件,使其能够接收由导航节点发布的cmd_vel指令、发布里程计数据。首先在SOLIDWORKS中创建机器人模型,并计算惯性参数和碰撞属性;其次在URDF文件中为车体框架和麦轮添加惯性参数和碰撞属性,对麦轮在额外添加传动装置和减速比;最后通过控制器插件(ROS_Control)配置机器人的移动模式,完成底盘设计。URDF结构图如图1所示,其中base_footprint为车体中心投影点,起定位作用,base_link表示车体部件,link1~link4表示麦轮部件,laser表示激光雷达,蓝色字体部分表示各关节状态,joint1~joint4为转动关节,其余为固定关节。
图1. URDF结构图
2) 底盘节点设计
当前普通差速轮式机器人在狭窄空间环境或者复杂结构环境中表现不佳,往往出现移动困难、转向失败等问题。其原因为常见的差速轮子只有X方向的线速度和Z轴的角速度,无法进行全向移动,导致在狭窄空间中卡死。而麦克纳姆轮由于包含三个自由度(X、Y方向上的线速度以及Z轴的角速度),转向时可以实现零转弯半径的旋转运动,适用性更广,可在多场景领域内应用。为此需要重新编写新的ROS麦轮底盘节点,更新Y方向上的线速度,底盘与麦轮的速度关系可由运动学模型分析得到。
ROS节点可以简单的理解为一个可执行文件,所有节点受RosMaster管理,节点之间通过话题通信、节点内部信息通过服务通信传输信息数据。对于麦轮底盘,其节点主要包含以下功能:① 在回调函数中添加麦轮底盘与轮子之间的速度关系公式,等待速度指令订阅消息、接收cmd_vel话题数据;② 发布里程计信息,将小车的位姿信息传递给ROS管理器。ROS节点可以通过订阅由导航节点发送的cmd_vel话题数据,控制小车行驶速度,然后根据底盘轮子直径和转速预估底盘的位置。
图2为底盘节点设计流程图,首先初始化底盘节点,创建节点句柄,根据句柄添加实例化对象,根据麦轮运动学模型在回调函数内添加麦轮与底盘之间的速度关系;其次底盘节点发布速度消息、订阅速度话题驱使小车运动;最后初始化里程计信息,根据行走的姿态数据计算里程计信息,在TF坐标变换后更新信息并发布给RosMaster。
图2. 底盘节点设计流程
和普通四轮小车不同的是,麦克纳姆轮在接收导航节点发送的cmd_vel速度控制指令时,需要额外增加一个Y方向上的速度分量。因此有必要先对麦轮进行运动学分析,以获取各个坐标方向上的分量速度,为机器人的全向移动提供理论依据。图3为麦轮安装结构,轮子布局方式采用“O”型安装方式 [
图3. 麦轮安装示意图
以1号轮为例,1号轮相对于地面的速度为:
v 1 = [ 0 sin α r cos α ] [ ω 1 v 1 r ] (式3-1)
1号轮相对于车体中心的速度为:
v 1 = [ 1 0 − l 2 0 1 l 1 ] [ v x v y ω ] (式3-2)
联立(式3-1)和(式3-2),
[ 0 sin α r cos α ] [ ω 1 v 1 r ] = [ 1 0 − l 2 0 1 l 1 ] [ v x v y ω ] (式3-3)
可得:
ω 1 = 1 r [ − 1 tan α 1 l 1 + l 2 tan α ] [ v x v y ω ] (式3-4)
同理,对其他轮有:
[ ω 1 ω 2 ω 3 ω 4 ] = 1 r [ − 1 tan α 1 l 1 + l 2 tan α 1 tan α 1 − l 1 − l 2 tan α − 1 tan α 1 − l 1 − l 2 tan α 1 tan α 1 l 1 + l 2 tan α ] [ v x v y ω ] (式3-5)
由于辊子的偏置角为45˚,所以化简整理得麦轮的逆运动学模型:
[ ω 1 ω 2 ω 3 ω 4 ] = 1 r [ − 1 1 l 1 + l 2 1 1 − l 1 − l 2 − 1 1 − l 1 − l 2 1 1 l 1 + l 2 ] [ v x v y ω ] (式3-6)
通过反解逆运动模型(式3-6)得到底盘的正运动学模型:
[ v x v y ω ] = 4 r [ − 1 1 − 1 1 1 1 1 1 1 l 2 + l 1 − 1 l 2 + l 1 − 1 l 2 + l 1 1 l 2 + l 1 ] [ ω 1 ω 2 ω 3 ω 4 ] (式3-7)
机器人的导航设计可分为3个部分,地图构建、自身定位和导航规划,三者之间彼此联系。在开始导航之前,首先需要通过SLAM技术得到全局地图信息;其次,基于IMU的轮式定位在长时间的运行下会不可避免地产生严重的累计误差,因此为了提高定位效果,在导航中融合AMCL算法增强定位的鲁棒性;最后则是利用导航算法实现全局地图的自主行走和避障。对于全局地图规划,采用A*算法寻找最优路径;利用基于TEB算法的局部路径规划器进行实时调整和避障。
1) A*算法
A*算法综合了Dijkstra算法和贪心算法均倾向于取最近节点信息的优点,因此即可以在两点之间找到最短路径,同时也能像贪心优先搜索算法一样,搜索最贴近目标点附近的节点信息,进而逐渐逼近目标点。基本原理为:A*算法最重要的是代价函数F(n)的设置,通过定义代价函数得到最小的值,进而确定最短的路径。代价函数由两部分组成(G(n)、H(n)),分别表示状态点距离初始状态的实际代价以及距离目标状态的估计代价,通常以F(n)=G(n)+H(n)表示。
2) TEB算法
TEB算法(Timed Elastic Band)针对A*算法生成的初始轨迹进行后续修正,从而得到平滑优化后路径。具体原理为:在相同的指定时间区间内以固定频率插入多个状态点,将连续时间内规划出的路径近似的认为是一条可以形变的时间弹性带,通过对弹性带实施约束,受力发生形变,这种形变就是它内部的优化算法。通过对其优化,便能找到满足各种约束的最优可行路径。
1) Gmapping地图建模
Gmapping是基于滤波SLAM框架的开源SLAM算法,可以实时构建环境地图且构建后的地图精度较高,在ROS中通过输入里程计数据和激光雷达数据输出二维栅格地图。图4为实现的原理框架:
图4. Gmapping建图流程
Gmapping通过运动模型给出预测后,以该预测为初值进行一次扫描匹配。找到一个使当前观测最贴合地图的位姿(在高斯分布内表现一个尖峰区域),之后根据该区域所代表的高斯分布的均值和方差进行计算,得到真实分布的最佳近似。同时,新的粒子继续在高斯分布中重采样得到。
2) AMCL融合定位
由于IMU在长时间运行下会发生严重的累计误差,此外,为了减少机器人在运动过程中发生的打滑现象,采用AMCL (自适应蒙特卡洛定位)融合IMU信息对机器人进行增强定位。通过对传感器数据和从地图反馈回来的预估传感器数据相比较,判断出机器人的真实位姿。动态环境下,AMCL的每个粒子都代表机器人位姿的估计,通过粒子滤波器跟踪机器人位姿,对实际感知状态和粒子群进行价值评估,使其不断趋近于机器人在地图中的真实位置。基于ROS实现的TF坐标变换对比如图5所示:
图5. TF坐标树对比图
MOVE_BASE是一个开源的导航框架,通过编写文件后缀名.yaml将文件内部信息导入给路径规划层,路径规划层又分为全局路径规划和局部路径规划。在己知环境地图下,全局路径规划为移动机器人计算出一条静态路径,可以快速找到移动机器人位置与目的地之间路径最优解,但是,当已构建环境地图中未知障碍物时,全局路径规划算法比较容易发生导航错误。因此需要结合局部路径规划实现避障。局部路径规划算法在沿着静态路径运动过程中,动态地对机器人进行运动控制,实现在导航过程中机器人的最优运动。MOVE_BASE工作流程如图6所示:
图6. MOVE_BASE工作流程图
首先通过开源SLAM算法Gmapping进行地图构建,将所建立好的地图上传到ROS中的参数服务器以供map_server节点调用。MOVE_BASE的路径规划层根据地图服务信息进行路径规划,结合定位算法向底盘节点发送速度指令(cmd_vel)驱使电机运动,实现机器人的行走,部分关键参数配置表如表1所示:
说明如下:
1) 全局地图参数:设定地图坐标系/map和基坐标系/base_footprint,以供接收地图信息,为了更好地接收地图信息,将发布频率和更新频率设置为1。
2) 局部地图参数:设置了地图坐标系、基坐标系以及局部地图尺寸大小。
3) 通用地图参数:设置机器人的外形尺寸,模拟机器人的障碍边界,源传感器的坐标系;为了保护机器人安全,设置冗余尺寸及膨胀半径。
4) 本地规划器:设置了机器人的速度和加速度,当机器人卡出时的退出速度,麦轮在y方向上的速度等。
global_costmap: global_frame: map robot_base_frame: base_footprint update_frequency: 1.0 publish_frequency: 1.0 map_type: costmap | local_costmap: global_frame: odom robot_base_frame: base_link width: 5.0 height: 5.0 resolution: 0.01 |
---|---|
map_type: costmap obstacle_range: 2.5 raytrace_range: 3.0 footprint: [[0.416,0.318], [0.416, −0.318], [−0.416, −0.318], [−0.416, 0.318]] footprint_inflation: 0.05 observation_sources: scan scan: {data_type: LaserScan, topic: /scan, marking:true,clearing:true, expected_update_rate: 0} | TrajectoryPlannerROS: max_vel_x: 0.45 min_vel_x: 0.1 max_vel_theta: 1.0 min_in_place_vel_theta: 0.4 acc_lim_theta: 3.2 acc_lim_x: 2.5 acc_lim_y: 2.5 holonomic_robot: true escape_vel: −0.1 y_vels: [−0.3, −0.1, 0.1, −0.3] |
表1. 部分关键参数配置表
仿真环境为ROS-Noetic版本,操作系统为Ubuntu 20.04,仿真器选用Gazebo物理仿真平台。在GAZEBO中建立模拟仿真环境,地图环境尺寸为:(长10 m,宽8 m),如图8(a)。实验目标为地图建模过程中的性能分析,定位效果分析以及自主避障测试;观察所建地图是否有缺失、定位效果是否失效以及是否能够完成自主避障;实验开始前需要配置好机器人的具体属性参数。
地图建模过程如下:
图7. Gmapping建图过程。(a) 开始建图;(b) 建图中;(c) 建图结束
首先打开Gazebo仿真环境,并导入机器人模型,小车初始出现的位置在地图的左下角;其次启动Gmapping节点,在RVIZ中点击2D_GOAL按钮指定目标点,小车向目标点前进并感知到更多的地图信息,直至完成地图的构建;最后使用map_server地图服务器工具保存创建好的地图。图7为地图建模的过程,可以发现,在指定目标点后,小车会自动前往所选目的地,感知周围环境信息及地图建模。
Gazebo物理仿真环境及建立完成后的地图如下,地图的分辨率大小为0.02:
图8. 建图后的对比图。(a) 物理仿真环境;(b) 建立完成后的二维地图
图8建图后的对比图,图8(a)为gazebo物理仿真环境,图8(b)为经Gmapping节点启动后建立的地图。可以发现,所得的地图与物理仿真下的环境相差无几。
为了测试在动态环境或未知环境下的导航效果,开展机器人的自主移动和避障测试。
图9. 避障实验对比。(a) Gazebo物理仿真环境下的避障模拟;(b) Rivz下的栅格地图避障模拟
图9为避障实验对比,图9(a)为Gazebo物理仿真环境下的避障模拟,图9(b)为Rivz下的栅格地图避障模拟。首先,在地图中随机选择目标点,可以发现,全局路径规划算法在机器人的基点到目标点之间规划出了一条绿色的路径,并且机器人逐渐向目标点前进;当向GAZEBO中添加障碍物后,DWA局部路径规划算法驱使小车移动绕开了障碍物,并且在RVIZ测试平台中逐渐补全地图信息,所建地图和GAZEBO中模拟环境中的地图差别不大,实现了良好的导航和避障效果。
本文首先对麦轮进行了运动学分析,重新设计了ROS底盘节点。结合ROS开源平台,编写了机器人模型,通过传感器感知里程计信息和深度信息建立了栅格地图,结合MOVE_BASE导航框架规划路径和动态避障,设计并实现了移动机器人自主导航功能。试验结果表明,该机器人可以有效地满足自主导航需求,能够完成实时避障,在未知环境下实现自主移动有积极意义,为之后程序移植到本体样机上提供了技术支撑。
重庆科技学院研究生科技创新计划项目,“基于视觉引导的搬运机器人的路径规划研究”(YKJCX2020313)。
田 塘,李 涛,邓春燕,胡桂川,赵 杭,糜 斐. 基于ROS的全向移动机器人导航系统设计与仿真Design and Simulation of Omnidirectional Mobile Robot Navigation System Based on ROS[J]. 人工智能与机器人研究, 2022, 11(01): 46-55. https://doi.org/10.12677/AIRR.2022.111006