准备
Ubuntu 20.04
ROS noetic
Cartographer
工作环境见前文
1.建图功能包创建
在gazebo_test_ws/src
下创建建图功能包gazebo_map
cd gazebo_test_ws/src
catkin_create_pkg gazebo_map
编译环境
cd ..
catkin_make
将工作空间添加至.bashrc
每打开一个新的命令行都将先加载.bashrc
文件
将工作空间添加到.bashrc
文件后,运行gazebo前将不用再source路径。
echo "source ~/gazebo_test_ws/devel/setup.bash" >> ~/.bashrc
sudo gedit ~/.bashrc
确认是否将路径添加到.bashrc
中
sudo gedit ~/.bashrc
下拉文件检查是否有路径source ~/catkin_ws/devel/setup.bash
2.安装建图功能包
在gazebo_map下创建cfg,launch,map三个文件夹
cd gazebo_test_ws/src/gazebo_map
mkdir cfg launch map
cfg文件夹用于存储配置文件,launch文件夹用于存储节点启动文件,map用于存储建图完成后的图片和配置文件(yaml)
下载建图功能包
git clone https://github.com/cartographer-project/cartographer_ros.git
用指令复制carto包中的demo_revo_lds.launch
文件至gazebo_map/launch
目录下
复制carto包中的revo_lds.lua
文件至gazebo_map/cfg
目录下
cp cartographer_ros/cartographer_ros/launch/demo_revo_lds.launch gazebo_test_ws/src/gazebo_map/launch
cp cartographer_ros/cartographer_ros/configuration_files/revo_lds.lua gazebo_test_ws/src/gazebo_map/cfg
3.修改文件
修改在gazebo_map/launch
目录下的demo_devo_lds.launch
文件。可用指令打开。
sudo gedit gazebo_test_ws/src/gazebo_map/launch/demo_revo_lds.launch
修改lunch文件
-configuration_directory $(find cartographer_ros)/configuration_files
修改为
-configuration_directory $(find gazebo_map)/cfg
————————————————————————————————
<remap from="scan" to="horizontal_laser_2d" />
修改为
<remap from="scan" to="scan" />
————————————————————————————————
<node name="rviz" pkg="rviz" type="rviz" required="true"
args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />
修改为
<node name="rviz" pkg="rviz" type="rviz" required="true"
args="-d $(find gazebo_map)/cfg/demo.rviz" />
————————————————————————————————
删除
<node name="playbag" pkg="rosbag" type="play"
args="--clock $(arg bag_filename)" />
修改在gazebo_map/cfg
目录下的revo_lds.lua
文件
用指令打开
sudo gedit gazebo_test_ws/gazebo_map/cfg/revo_lds.lua
修改luv文件
tracking_frame = "horizontal_laser_link",
published_frame = "horizontal_laser_link",
修改为
tracking_frame = "base_link",
published_frame = "base_link",
若用指令打开文件出现问题可直接在文件夹中打开文件。
4.建图
运行gazebo和rviz
roslaunch gazebo_pkg race.launch
roslaunch gazebo_map demo_revo_lds.launch
点击rivz界面左下角add,在topic中选择laserscan,map。在display中选择robotmodel。添加完毕后,点击左上角file选择save config as 文件命名为demo存储在gazebo_test_ws/src/gazebo_map/cfg
目录下
重新执行
roslaunch gazebo_pkg race.launch
roslaunch gazebo_map demo_revo_lds.launch
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
控制小车移动在rviz界面中完成建图
sudo apt-get install ros-noetic-cartographer-ros
5.地图保存
安装map_server
打开一个新的终端,输入指令
sudo apt-get install ros-noetic-map-server
source ~/.bashrc
保存地图,mapname可任取
rosrun map_server map_saver -f mapname
创建的地图为根目录下map.pgm和map.yaml文件,手动将其移动至gazebo_test_ws/src/gazebo_map/map
目录下,完成建图操作。