DAY12-机器人导航入坑 概述 SLAM建图
·
雷达小车的基本功能都实现了,下面要让小车实现导航功能。文档链接
<1>概述
- 导航有专业团队的功能包,我们只做上层设计。
- 现实案例映射,方便理解
- 官方图解,图如下:

<2>导航之坐标系
2.1两种定位方式
里程计定位: 根据 速度,运动时间,偏转角度推算自身位置
优点:里程计定位信息是连续的,没有离散的跳跃。
缺点:里程计存在累计误差,不利于长距离或长期定位。
传感器定位:根据参考物体的距离变化,推测自身位置变化。
优点:比里程计定位更精准;
缺点:传感器定位会出现跳变的情况,且传感器定位在标志物较少的环境下,其定位精度会大打折扣。
2.2坐标系变换
上述两种定位实现中,机器人坐标系一般使用机器人模型中的根坐标系(base_link 或 base_footprint),
里程计定位时,父级坐标系一般称之为 odom,
传感器定位,父级参考系一般称之为 map。当二者结合使用时,map 和 odom 都是机器人模型根坐标系的父级,这是不符合坐标变换中 "单继承"的原则 的,
所以,一般会将转换关系设置为: map -> doom -> base_link 或 base_footprint。
2.3 !!!注意事项!!!
虽然导航功能包集被设计成尽可能的通用,在使用时仍然有三个主要的硬件限制:
- 它是为差速驱动的轮式机器人设计的。它假设底盘受到理想的运动命令的控制并可实现预期的结果,命令的格式为:x速度分量,y速度分量,角速度(theta)分量。
- 它需要在底盘上安装一个单线激光雷达。这个激光雷达用于构建地图和定位。
- 导航功能包集是为正方形的机器人开发的,所以方形或圆形的机器人将是性能最好的。 它也可以工作在任意形状和大小的机器人上,但是较大的机器人将很难通过狭窄的空间。
<3>导航实现
准备工作 : 请先安装相关的ROS功能包:
安装 gmapping 包(用于构建地图):
sudo apt install ros-noetic-gmapping
安装地图服务包(用于保存与读取地图):
sudo apt install ros-noetic-map-server
安装 navigation 包(用于定位以及路径规划):
sudo apt install ros-noetic-navigation
新建功能包,并导入依赖:
gmapping map_server amcl move_base
3.1导航实现01_SLAM建图
!!!出现的问题!!!map_server使用之地图服务 无法读取到 话题 : /map
解决原因与方法:提前启动了roscore,launch启动了的话,就不用去特意启动roscore。
所以,重启vscode,直接运行launch文件即可。
3.2 yaml文件解读
image: /home/soarabyss/demo_05/src/nav_demo/map/nav.pgm
# 刻度尺 米每像素
resolution: 0.050000
# 地图的位置姿态信息
origin: [-50.000000, -50.000000, 0.000000]
# 取反,颜色变化,黑色变白色
negate: 0
# 黑色为1 白色为0, 占用区>占用阈值>未知区域>空闲阈值>空闲区域
# 占用阈值
occupied_thresh: 0.65
# 空闲阈值
free_thresh: 0.196
更多推荐
所有评论(0)