没有真实小车的情况下,利用gazebo的仿真,操作小乌龟来学习ros2。废话不多说,直接上命令。
Install Gazebo
sudo apt install ros-humble-gazebo-*
        Install Cartographer
假如前一节未安装源码版本的cartographer,那就安装apt版本的。
sudo apt install ros-humble-cartographer
sudo apt install ros-humble-cartographer-ros
        Install Navigation2
sudo apt install ros-humble-navigation2
sudo apt install ros-humble-nav2-bringup
        Install TurBot3 Packages
source ~/.bashrc
sudo apt install ros-humble-dynamixel-sdk
sudo apt install ros-humble-turtlebot3-msgs
sudo apt install ros-humble-turtlebot3
sudo apt install ros-humble-turtlebot3-gazebo
        Install Teleop
sudo apt-get install ros-humble-teleop-twist-keyboard
        打开终端,启动机器人gazebo
ros2 launch turtlebot3_gazebo turtlebot3_house.launch.py
        另开终端,再启动cartographer启动节点
ros2 launch turtlebot3_cartographer cartographer.launch.py 
        另开终端,启动键盘启动节点,控制机器人
ros2 run teleop_twist_keyboard teleop_twist_keyboard
        另开终端,结束构图,停止接受新数据
ros2 service call /finish_trajectory cartographer_ros_msgs/srv/FinishTrajectory "{trajectory_id: 0}"
        序列化保存其当前状态
ros2 service call /write_state cartographer_ros_msgs/srv/WriteState "{filename: '/home/develop/bags/mymap.pbstream'}"
        将pbstream转化为pgm和yaml,在cartographer_pbstream_to_ros_map目录下执行
cd /opt/ros/humble/lib/cartographer_ros
./cartographer_pbstream_to_ros_map -map_filestem=${HOME}/bags/mymap -pbstream_filename=${HOME}/bags/mymap.pbstream -resolution=0.05