雷达小车的基本功能都实现了,下面要让小车实现导航功能。文档链接

<1>概述

  1. 导航有专业团队的功能包,我们只做上层设计。
  2. 现实案例映射,方便理解
  3. 官方图解,图如下:

在这里插入图片描述

<2>导航之坐标系

2.1两种定位方式

里程计定位: 根据 速度,运动时间,偏转角度推算自身位置

优点:里程计定位信息是连续的,没有离散的跳跃。
缺点:里程计存在累计误差,不利于长距离或长期定位。

传感器定位:根据参考物体的距离变化,推测自身位置变化。

优点:比里程计定位更精准;
缺点:传感器定位会出现跳变的情况,且传感器定位在标志物较少的环境下,其定位精度会大打折扣。

2.2坐标系变换

上述两种定位实现中,机器人坐标系一般使用机器人模型中的根坐标系(base_link 或 base_footprint),
里程计定位时,父级坐标系一般称之为 odom,
传感器定位,父级参考系一般称之为 map。当二者结合使用时,map 和 odom 都是机器人模型根坐标系的父级,这是不符合坐标变换中 "单继承"的原则 的,
所以,一般会将转换关系设置为: map -> doom -> base_link 或 base_footprint。

2.3 !!!注意事项!!!

虽然导航功能包集被设计成尽可能的通用,在使用时仍然有三个主要的硬件限制:

  1. 它是为差速驱动的轮式机器人设计的。它假设底盘受到理想的运动命令的控制并可实现预期的结果,命令的格式为:x速度分量,y速度分量,角速度(theta)分量。
  2. 它需要在底盘上安装一个单线激光雷达。这个激光雷达用于构建地图和定位。
  3. 导航功能包集是为正方形的机器人开发的,所以方形或圆形的机器人将是性能最好的。 它也可以工作在任意形状和大小的机器人上,但是较大的机器人将很难通过狭窄的空间。

<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


DAY13-导航实现_定位

Logo

聚焦RDK与具身智能,汇集机器人开发教程、开源案例和技术交流

更多推荐