ROS2导航SLAM建图探索

大家好,我是昨晚熬夜太多脑壳痛的小鱼。今天带大家一起探索一些ROS2+turtlebot3的slam建图。

先上最终效果图
ROS2导航SLAM建图探索_第1张图片

1.安装ROS2

第一步就是要有一个ROS2的环境,这个没有的请打开小鱼的fishros网站,选择一行代码安装ROS2进行安装。

2.安装turtlebot3

sudo apt install ros-foxy-turtlebot3*
sudo apt install ros-foxy-cartographer 

3.开始建图

3.1 配置

export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:`ros2 pkg \
prefix turtlebot3_gazebo \
`/share/turtlebot3_gazebo/models/

3.2 启动建图
分别打开三个终端
终端1启动gazebo仿真

export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

终端2启动建图

export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True

终端3启动键盘控制节点

export TURTLEBOT3_MODEL=burger
ros2 run turtlebot3_teleop teleop_keyboard

4.保存地图

ros2 run nav2_map_server map_saver_cli -f my_map

5.根据已有地图启动导航程序

5.1 启动导航程序

关闭或者退出上面三个窗口

重新启动gazebo仿真

export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

这里注意要指向刚刚的map地图位置才行

export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_navigation2 navigation2.launch.py \
use_sim_time:=true map:="you map address".yaml use_sim_time:=True

地图位置可以使用相对目录,比如小鱼这里

ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=true map:=map/my_map.yaml 

5.2 初始化机器人的位置

启动后,机器人最初并不知道它在哪里。默认情况下,导航程序等待您给出一个大致的起始位置。

我们必须手动机器人的初始位置和方向。此方法应用于 AMCL 定位算法。

以通过点击RVIZ上的位置估计按钮初始化
在这里插入图片描述

  • 单击"2D 姿势估计"按钮
  • 单击机器人所在的地图中的近似点,拖动箭头指出机器人所面朝的方向

如果一次搞定最好不过,不行可以多搞机器人,在导航过程中也可以使用这种方法来优化机器人位置的精准性。

设置完成初始化为自后,tf树就搞定了,接着就可以让机器人出发了。
ROS2导航SLAM建图探索_第2张图片

5.3 给定目标点动起来

同样使用RVIZ来操作

  • 单击 2D 导航目标按钮(也位于顶部菜单中)
  • 单击地图中的特定点以设置目标位置,并将光标拖动到 TurtleBot 最后应该面对的方向

绿色小箭头群是适应性蒙特卡洛定位 (AMCL)的可视化。每个绿色箭头代表机器人的可能位置和方向。请注意,在开始时,其分布分布分布在整个地图上。一旦机器人移动箭头得到更新,因为该算法纳入了新的测量。在运动过程中,箭头的分布变得不那么混乱,并越来越定居到机器人的位置,这最终意味着算法越来越确定机器人在地图中的姿势。

ROS2导航SLAM建图探索_第3张图片

参考文档:

  • https://ros2-industrial-workshop.readthedocs.io/en/latest/_source/navigation/ROS2-Turtlebot.html

你可能感兴趣的:(ROS2,机器人,SLAM,ROS2,导航,SLAM)