惟愿言行合一,砥砺前行

0%

ROS|⑤Turtlebot3汉堡Burger建SLAM地图并导航

# SLAM地图构建和导航

准备

  • 本实验新用的功能包:

    注意ros版本。

1
2
sudo apt-get install ros-noetic-map-server # 用到map_server中的map_saver
sudo apt-get install ros-noetic-navigation # 导航包navigation

正式开始

  1. 配置网络连接gedit ~/.bashrc。
  2. 建立远程控制连接。
  3. SLAM建图。
  4. 保存SLAM地图。
  5. 读取保存的地图文件并实现导航。

详见order.txt及注释。

order.txt

A表示主机,B表示从机,数字k表示第k个终端。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 1. 网络配置
A1:
ifconfig # 查看主机IP地址
gedit ~/.bashrc # 在.bashrc文件中进行网络配置
... # 详见上一篇博客https://shandianchengzi.gitee.io/2021/03/19/ROS%E8%BF%9C%E7%A8%8B%E6%8E%A7%E5%88%B6/
source ~/.bashrc # 使网络配置生效
roscore # 启动roscore并检验网络配置是否成功
B1:
ssh -Y pi@192.168.1.133 # ssh连接从机
ifconfig # 查看从机IP地址
gedit ~/.bashrc
...
source ~/.bashrc
roscore

# 2. 建立远程控制连接
B2:
ssh -Y pi@192.168.1.133
roslaunch turtlebot3_bringup turtlebot3_robot.launch # 在机器人桌面终端调用Turtlebot3 应用程序

# 3. SLAM建图
A2:
roslaunch turtlebot3_slam turtlebot3_slam.launch # 执行slam启动命令
A3:
rosrun rviz rviz -d `rospack find turtlebot3_slam`/rviz/turtlebot3_slam.rviz # 在Rviz中打开模拟界面
# rviz的使用说明:
# https://zhuanlan.zhihu.com/p/64603248
A4:
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch # 启动键盘控制teleop命令
# 操作:操控机器人把实验场地都浏览一遍
# 1、扫描过程中需要注意尽量不要使机器人与环境产生接触。
# 2、不要人为在机器人附近活动。
# 3、不要将机器人速度提升到太快,太快的移动速递会导致环境探测信号量减少。
# 4、按照规范操作,以便得到正确的地形数据。

# 4. 保存SLAM地图
A5:
sudo apt-get install ros-noetic-map-server # 若已经下载了map_server功能包,则可以略过这个指令
rosrun map_server map_saver -f ~/map # 保存SLAM地图至~/map。将生成map.pgm/map.yaml两个文件
A2/A3/A4:Ctrl+C # 停止A3/A4/A5中运行的程序

# 5. 读取保存的地图文件,并实现导航
A2:
rosrun rviz rviz -d `rospack find turtlebot3_slam`/rviz/turtlebot3_slam.rviz # 在Rviz中打开模拟界面
A3:
sudo apt-get install ros-noetic-navigation # 若已经下载了navigation功能包,则可以略过这个指令
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml # 读取测量好的地图数据~/map.yaml
# 操作:确定机器人相对于地图所处的位置和初始姿态:
# 点击工具栏2D Pose Estimate按键。
# 在地图上点击机器人相对于环境的正确位置并拖动箭头以确定机器人的姿态,可以通过多次调整确定最合适的初始位置设定。
# 注:完成设定后的绿色箭头便表示了机器人相对于地图所处的位置和初始姿态,机器人上的激光传感器同时会测量周围环境,可以通过实时测量的环境信息对初始位置进行校对(红点)。如果发现位置不正确可以重复定位操作。
# 操作:设定目标位置和目标姿态,设定方法如下:
# 点击工具栏2D Nav Goal按键。
# 点击一个确定的点并拖动箭头以设定目标位置和机器人最后停止的方向。
# 注:实验过程中要求操作者确定好初始位置和目的位置及姿态之后,机器人便会自行计算运行路径并移动至目标点。

常见问题

  本次实验建立在完整的连接和已有的控制命令中,不需要操作者参与计算,操作较为简单,可以在熟悉操作的情况下没有障碍的完成时实验。

  主要会出现的情况有:

  如果没有确定好初始位置开始进行扫描测量地形,其地图初始点未知,在导航实验中如果不能从原出发点开始运行,会产生地图定位不准的问题,所以在一定程度上也会影响到内部程序对轨迹规划的运算,因为在导航功能中小车的轨迹规划是同时计算原测量地图和实时雷达扫描障碍物的最优解。

  在开始导航前,应尽可能多次拖动箭头来精确的确定小车的位置,否则可能出现小车无法启动的情况,因为当构建的地图面积不大时,小车的起始位置的相对误差就会变大,所以为了能使小车精确的进行导航,应该尽可能精确地确定小车的起始位置。

  同时,在实验中杂乱的周边环境对导航功能也会产生较大影响。所以总的来说,小车的运行原理和计算能力对实验场地提出了一定要求。