抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

准备

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目录下,完成建图操作。

评论