ROS导航实现:SLAM建图(slam

慈云数据 2024-03-15 技术支持 51 0

导航实现:SLAM建图

先安装相关的ROS功能包:

  • 安装 gmapping 包(用于构建地图):sudo apt install ros--gmapping

  • 安装地图服务包(用于保存与读取地图):sudo apt install ros--map-server

  • 安装 navigation 包(用于定位以及路径规划):sudo apt install ros--navigation

      新建功能包,并导入依赖: gmapping map_server amcl move_base,其中gampping用于构建地图,map_server用于保存与读取地图,amcl用于定位,move_base用于路径规划

    (1)编写gmapping相关的launch文件

    复制并修改如下:

    是否使用仿真时间(仿真时要设置为True)
        
          设置雷达话题,前面仿真雷达设置的话题就是scan
          
           
          地图更新频率间隔
          雷达测试范围最大16m
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
        
        
        
        
        
        
    
    

    (2)启动Gazebo仿真环境和编写好的slam.launch文件

    (3)在RVIZ中添加组件

    • 添加机器人模型RobotModel

    • 添加Laserscan并设置Topic话题scan

    • 添加坐标系组件TF,Fram下即可找到map,odom

    • 添加map组件用于建图,设置topic,发布话题栅格地图数据,这里设置为map

      即可看到如下效果:

      在这里插入图片描述

      (4)在rviz中配置好之后,可以将目前配置保存:左上角save config as,保存到该功能包的config文件夹下,并在rivz启动中添加参数,以后启动就可以自动配置。

       
      

      (5)启动键盘控制节点

      rosrun teleop_twist_keyboard teleop_twist_keyboard.py
      

        控制小车运动,绕着地图走一圈建图。

      SLAM建图

        建图结果如图所示,白色部分是无障碍物可以走的地方,黑色圈出部位为障碍物信息。

      在这里插入图片描述

      (6)保存地图map_server

        如果直接关闭rviz退出,那么建好的地图将会消失,所以要编写launch文件进行保存操作

          
          
      
      

        可以看到在指定路径下产生了两个文件map_save.pgm和map_save.yaml

      在这里插入图片描述

      (7)读取地图信息(map_server包里的map_server)

        新建launch文件,使用map_server调用上一步保存的map_save.yaml文件

      代码示例如下:

          
      
      

        这样,之前我们发布的信息就会以话题的形式发布了,要看到地图的可视化效果我们需要借助rviz,可以在终端打开rviz并加入map插件,选择topic为map,即可看到效果。

      在这里插入图片描述

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon