ROS学习(11)使用ROS创建地图

文章目录

  • 前言
  • 一、创建编译功能包
  • 二、更新启动文件
  • 三、启动模型
  • 四、保存地图
  • 五、加载地图
  • 六、总结


前言

创建地图是一件比较复杂的工作,ROS利用map_server地图服务器,借助激光雷达和机器人的里程信息来完成这项工作。本篇我们还是利用柳树车库作为默认的地图环境。

一、创建编译功能包

切换到catkin_ws/src目录下,如下:

catkin_create_pkg mbot_sim_gazebo_mapping urdf xacro

切换到catkin_ws目录下,编译该功能包,如下:

catkin_make mbot_sim_gazebo_mapping

在该功能包下创建include、src、launch、urdf文件夹,在urdf文件下创建urdf文件夹和xacro文件夹,复制meshes文件夹到该功能包下。

二、更新启动文件

在启动文件中配置rviz和gmaping包,robot_gazebo_mapping.launch文件内容如下:


    
    
    

    
    
    
     
    
    


    
    

    
    

      
     

    

    
    
	
	
    


三、启动模型

在运行launch文件之前,需要先完成与建图定位导航相关的功能包的安装,逐步执行如下代码进行安装:

sudo apt-get install ros-melodic-slam-gmapping
sudo apt-get install ros-melodic-gmapping
sudo apt-get install ros-melodic-navigation

安装完成,执行如下代码,启动模型:

roslaunch mbot_sim_gazebo_mapping robot_gazebo_mapping.launch

在rviz里面,添加RobotModel,添加LaserScan,添加Map。

然后将LaserScan的Topic设置为/scan,将Map的Topic设置为/map,将Global Options——Fixed Frame设置为base_footprint

执行如下代码,实现模型的键盘控制:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

通过键盘控制机器人的移动,完成建图过程,移动过程中可以观察到rviz中地图的变化,在这里我只移动了一小块区域,效果如下:
ROS学习(11)使用ROS创建地图_第1张图片

四、保存地图

在mbot_sim_gazebo_mapping功能包下,新建一个map文件夹,切换到该文件夹下,执行如下命令,完成地图保存:

rosrun map_server map_saver -f myMapFile

一定要注意后面那个命令是map_saver,哈哈。
ROS学习(11)使用ROS创建地图_第2张图片

该命令会创建两个文件,myMapFile.pgm文件和myMapFile.yaml文件。myMapFile.pgm文件是以.pgm为格式的地图(可输出灰色地图格式)。myMapFile.yaml文件是该地图的配置文件。
打开myMapFile.pgm文件,内容如下:
ROS学习(11)使用ROS创建地图_第3张图片

五、加载地图

要想使用机器人创建的地图,必须将其加载到map_server功能包中。执行如下命令:

rosrun map_server map_server myMapFile.yaml

可以新建一个名为robot_gazebo_mapping_loadMap.launch的启动文件,文件内容如下:


    
    
    

    
    
     
    
    


    
    

    
    

      
     

    
    
    

运行该命令后,效果如下:
ROS学习(11)使用ROS创建地图_第4张图片
可以看到,与上面的myMapFile.pgm文件内容基本一致。至于rviz中的错误,不太明白,后续再研究。。。

六、总结

主要介绍了地图的创建、保存、加载,下一篇尝试配置导航功能包集,并在gazebo仿真环境下完成自定义机器人的自主导航。

你可能感兴趣的:(ROS,ROS)