美文网首页机器人·学ROS机器人操作系统智能机器人
如何使用Google 的Cartographer SLAM算法包

如何使用Google 的Cartographer SLAM算法包

作者: 冷冬寒梅 | 来源:发表于2016-11-18 11:55 被阅读2730次

    文/冷冬寒梅

    下面即为具体步骤

    (一)安装cartographer_ros

    1)首先安装wstool和rosdep工具

    sudo apt-get update

    sudo apt-getinstall -y python-wstool python-rosdep ninja-build

    2)然后建立一个新的workspace

    mkdir slam_ws

    cd slam_ws

    wstool init src

    3)安装cartographer_ros.rosinstall文件,更新

    wstool merge -t srchttps://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall

    wstool update -t src

    4)安装deb依赖Installdeb dependencies.

    rosdep update

    rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

    5)安装和设置路径

    catkin_make_isolated --install –use-ninja

    (此处需要时间比较长,要耐心等待,我在运行时候,以为此处进行不下去了,结果等的时间长些,运行成功)

    source install_isolated/setup.bash 此语句设置路径

    (二)根据需要修改lua配置文件

    launch文件如下

    参数如下,不使用odom,只使用激光,参数如下

    每次修改了lua代码都需要运行下面代码进行编译和设置路径

    cd slam_ws

    catkin_make_isolated --install --use-ninja进行编译

    source install_isolated/setup.bash设置路径

    运行launch文件

    roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=/home/dmchen/slam_ws/src/cartographer_ros/cartographer_ros/bag/1014.bag

    其中我们自己的数据包包1014.bag存储路径为/home/dmchen/slam_ws/src/cartographer_ros/cartographer_ros/bag

    运行结果

    使用激光和odom数据,参数设置如下

    注意需要运行catkin_make_isolated--install –use-ninja编译

    运行效果如下:

    备注:关于lua设置文件中每个参数的意义,以后会单独写文章进行说明

    相关文章

      网友评论

      • 村里小芳:请问,怎么使用odom数据啊?录制包的时候我看只录制了/scan消息啊?如果使用里程计数据,录制包的时候要怎么录制啊?
      • 8747bec06225:楼主你好,你发布odom数据是什么形式,两个frame_id是什么?
      • 岁月你我:你好,麻烦问下 sensor_bridge里面的参数是不是和Google给的cartographer不一样,你是不是用的https://github.com/hitcm/cartographer这里面的代码?谢谢
        0077bf86e409:楼主是16年写的文章,你是17年问的问题。官网现在代码已经和他们当初发布出的代码有了很大的变化,所以不一样也是很正常的。
      • 0077bf86e409: 楼主你好,你的第一个图只用了激光数据其他的什么都没用吗?
        我运行cartographer的时候尝试了不接受imu数据,只接受激光数据,结果地图画的一团糟,每一块子图不停地叠加旋转。
        而且我用自己的激光数据带入cartographer,也是只有激光数据,最后的结果也是一团糟。所以我想问下你是怎么做到只用激光数据就画出那么好的图来的
        冷冬寒梅:@OZKing 刚看到,我具体再看一遍再回答你的问题哈
        0077bf86e409:@冷冬寒梅
        1.我的激光是用国内一家做slam公司的扫地机器人采集的,没有安装ros系统,所以没法录制bag。我是把数据保存到window的文件中,然后在linux下读取文件并发送消息出去,让cartographer节点接受。激光数据只有三个值:采集是否有效,0无效,1有效;激光测得距离;此次测距的角度。

        2.参数那里我照着你的设置了一下,我控制小车沿着走廊走一趟可以画出比较好的地图。但是让小车自动采集他会来回不停地扫描,那种数据画出的地图就会出现部分地图不停地旋转叠加的一团糟的情况。

        3.你的launch文件中
        TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
        TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians = math.rad(0.1)是依据什么设置的,我只知道激光的角增量和horizontal_laser_max_range需要满足余弦定理

        4.楼主把published_frame = "base_link"改成published_frame = "odom",其他的什么地方不用改吗,比如rivz的配置文件部分
        冷冬寒梅:使用哪种激光数据,需不需要imu数据,要设置参数的!你具体看下参数设置,那部分!
      • 狐狸站长:楼主你好,我在执行wstool update -t src时,总时报错

        ERROR in config: Error processing 'ceres-solver' : [ceres-solver] Checkout of https://ceres-solver.googlesource.com/ceres-solver.git version 1.12.0rc4 into /home/rango/Documents/google_cartographer_catkin_ws/src/ceres-solver failed.

        翻墙和VPN都用了也不行,貌似时googlesouce那变有什么限制一样,请问怎么解决,非常感谢!

      本文标题:如何使用Google 的Cartographer SLAM算法包

      本文链接:https://www.haomeiwen.com/subject/tiwjpttx.html