设置环境变量
echo " source ~/dev_ws/install/local_setup.sh" >> ~/.bashrc
是一个将ROS2 环境变量添加到 ~/.bashrc 文件中的命令。通过执行这个命令,每次打开一个新的终端窗口时,都会自动执行。dev_ws是你所创建的工作空间。
目录
1.在Gazebo仿真环境中实现SLAM(cartogarpher)
1.在Gazebo仿真环境中实现SLAM(cartogarpher)
1.1依赖包安装
首先需要安装Gazebo11,默认安装完的ROS2是不包含的:
$ sudo apt-get install ros-foxy-gazebo-*
后续我们会使用Cartographer进行SLAM,所以还需要安装Cartographer相关的功能包:
$ sudo apt install ros-foxy-cartographer
$ sudo apt install ros-foxy-cartographer-ros
接下来安装Turtlebot3相关的功能包:
$ sudo apt install ros-foxy-turtlebot3*
$ sudo apt install ros-foxy-turtlebot3-simulations
问题:在启动gazebo时gazebo黑屏以及加载缓慢。
解决:
cd ~/.gazebo/
mkdir -p models
cd ~/.gazebo/models/
wget http://file.ncnynl.com/ros/gazebo_models.txt
wget -i gazebo_models.txt
ls model.tar.g* | xargs -n1 tar xzvf
1.2开始建图
1.配置
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:`ros2 pkg \
prefix turtlebot3_gazebo \
`/share/turtlebot3_gazebo/models/
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
地图位置可以使用相对目录
ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=true map:=map/my_map.yaml
1.3 初始化机器人的位置
启动后,机器人最初并不知道它在哪里。默认情况下,导航程序等待您给出一个大致的起始位置。
我们必须手动机器人的初始位置和方向。此方法应用于 AMCL 定位算法。
以通过点击RVIZ上的位置估计按钮初始化
- 单击"2D 姿势估计"按钮
- 单击机器人所在的地图中的近似点,拖动箭头指出机器人所面朝的方向
如果一次搞定最好不过,不行可以多搞机器人,在导航过程中也可以使用这种方法来优化机器人位置的精准性。
设置完成初始化为自后,tf树就搞定了,接着就可以让机器人出发了。
1.4 给定目标点动起来
同样使用RVIZ来操作
单击 2D 导航目标按钮(也位于顶部菜单中)
单击地图中的特定点以设置目标位置,并将光标拖动到 TurtleBot 最后应该面对的方向
绿色小箭头群是适应性蒙特卡洛定位 (AMCL)的可视化。每个绿色箭头代表机器人的可能位置和方向。请注意,在开始时,其分布分布分布在整个地图上。一旦机器人移动箭头得到更新,因为该算法纳入了新的测量。在运动过程中,箭头的分布变得不那么混乱,并越来越定居到机器人的位置,这最终意味着算法越来越确定机器人在地图中的姿势。