1.SLAM建图算法
2.
词 | 解释 |
单继承 | 在坐标系转换时一个坐标系:只能有一个父级,可以有多个子级 |
定位跳变 | 无跳变:下一次计数都是基于上一次的计算,不会出现突然变大或变小 跳变:每次测距没有关系,都是从参考点开始的;传感器本身有误差,同一个距离测距,第一次是5m,第二次是4.9m,会有0.1m误差,这就情况就成为跳变。 |
雷达坐标系→基坐标系 | 雷达测距,测出来的是雷达的,还要转换成机器人自身与障碍物的距离 |
基坐标系→里程计坐标系 | 机器人走的过程中的定位有关 里程计和传感器结合使用 |
3.rviz显示
- 这里的Fixed Frame是参考的根坐标系:下拉可更改
<!-- 关键参数:坐标系 -->
<param name="base_frame" value="base_footprint"/><!--底盘坐标系-->
<param name="map_frame" value="map"/><!--地图坐标系-->
<param name="odom_frame" value="odom"/> <!--里程计坐标系-->
在这三种不同坐标系下展示的结果是不一样的
- 左下角Add添加的是组件,对应功能添加对应组件
4.保存地图的yaml文件的参数:
#1.声明地图图片资源的路径(相对路径或绝对路径)
image: /home/interest/fz6/src/navigation7/map/test.pgm #绝对路径
#2.地图刻度尺,单位是:米/像素
resolution: 0.050000
#3.地图的位姿(相对于rviz中的原点的位姿);
# 按照右手坐标系,红轴向上,绿轴向左,以右下角为参照偏移
# 值1:x方向上的偏移量
# 值2:y方向上的偏移量
# 值3:地图的偏航角度(单位是弧度)
origin: [-50.000000, -50.000000, 0.000000]
# 4、5.结合用来判断地图上的某个像素是否是障碍物
# 最终地图结果:白色是可通行区域,黑色是障碍物,蓝灰是未知区域
# 判断规则:
#规则1.地图中的每个像素都有取值[0,255];白色255,黑色0;像素值设为x
#规则2:根据像素值计算一个比例:p=(255-x)/255;白色0,黑色1,灰色是介于0-1的值
#规则3:判断是否是障碍物,p>occupied_thresh就是障碍物;p<free_thresh就是无物,可以自由通行
#4.占用阈值
occupied_thresh: 0.65
#5.空闲阈值
free_thresh: 0.196
# 6.取反,颠倒黑白
negate: 0
5.编写amcl定位节点相关的launch文件
interest@interest:~$ roscd amcl
interest@interest:/opt/ros/noetic/share/amcl$ ls
cmake examples package.xml
interest@interest:/opt/ros/noetic/share/amcl$ ls examples/
amcl_diff.launch amcl_omni.launch
interest@interest:/opt/ros/noetic/share/amcl$ gedit examples/amcl_diff.launch
//gedit打开文档内容
6.
静态层 | SLAM绘制的静态地图 |
障碍物层 | 导航中传感器感知的障碍物(可能是会移动的,不是固定的) |
膨胀层 | 给障碍物设置一个膨胀区,为避免碰撞而设置的安全区域 |
自定义层 | 根据需要自己设置的地图数据,地图上没有后来自己添加的 |
7.Vscode中Ctrl+F搜索后能全部替换
8.打印数据
rostopic echo /map >> map1.text 打印出一个文本
rostopic echo /map 打印到控制台
作者:21赛项负责人许燚