学习视频:【Autolabor初级教程】ROS机器人入门_哔哩哔哩_bilibili
Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
前沿知识
定位用于导航中,通过定位可以判断机器人的实际轨迹是否符合预期。
amcl用于实现导航中的机器人定位。
里程计本身也是可以协助机器人定位的,不过里程计存在累计误差且一些特殊情况时(车轮打滑)会出现定位错误的情况,amcl 则可以通过估算机器人在地图坐标系下的姿态,再结合里程计提高定位准确度。
- 里程计定位:只是通过里程计数据实现 /odom_frame 与 /base_frame 之间的坐标变换。
- amcl定位: 可以提供 /map_frame 、/odom_frame 与 /base_frame 之间的坐标变换。
项目实现步骤
1.下载松灵移动机器人模型hunter_se_description
2.模型文件准备
1)demo_laser.xacro
雷达部件,调整位置,安装在头部,并设置支架抬高,防止遮挡
2)base_footprint.xacro
加入base_footprint部件,作为后续的基坐标系
3)laser.xacro雷达配置文件
4)move.xacro
小车移动控制器,先为轮子配置驱动器,后使用四轮差速控制器的插件
从而生成里程计信息
5)whole.xacro集成上述所有文件,后续在launch文件中加载
3.环境准备
自己画一个环境,使用gazebo中的Building Editor,得到三维worlds文件
使用gmapping 功能包,通过键盘键盘控制小车,实现建图
同时,在rviz中可以显示gmapping发布的栅格地图数据了
下一步,将地图单独保存,即得到map,如下图所示:
4.amcl定位(amcl.launch)
这里的amcl定位是用于导航中,导航中,机器人需要按照设定的路线运动,通过定位可以判断机器人的实际轨迹是否符合预期。
AMCL(adaptive Monte Carlo Localization) 是用于2D移动机器人的概率定位系统,它实现了自适应(或KLD采样)蒙特卡洛定位方法,可以根据已有地图使用粒子滤波器推算机器人位置。
选择适用于差分移动机器人的amcl定位算法历程
调整粒子滤波器的粒子数,并指定里程计坐标系,机器人基坐标系和地图坐标系等。
5.路径规划(path.launch)
路径规划是导航中的核心功能之一,使用move_base 功能包。
move_base 功能包提供了基于动作(action)的路径规划实现,move_base 可以根据给定的目标点,控制机器人底盘运动至目标位置,并且在运动过程中会连续反馈机器人自身的姿态与目标点的状态信息。如前所述move_base主要由全局路径规划与本地路径规划组成。
在功能包下 param 目录,通过四个文件costmap_common_params.yaml、local_costmap_params.yaml、global_costmap_params.yaml、base_local_planner_params.yaml分别设置规划时调用的通用参数,局部代价地图参数设置,全局代价地图参数设置和局部规划器参数配置。
最后效果:
完整作品:
大作业—基于激光雷达的移动机器人室内AMCL定位点到点导航 (mbd.pub)