一、Cartographer编译

cartographer依赖的大型第三方库很少,编译时基本没有依赖项问题,基本按照官方文档的步骤来,略作修改。使用的环境是Ubuntu16.04+ROS Kinetic

1.先装好wstoolrosdep、ninja

  sudo apt-get install -y python-wstool python-rosdep ninja-build

2.建工作空间

  mkdir catkin_ws

  cd catkin_ws

用wstool初始化一下

  wstool init src

(不知道这种初始化方式和catkin_init_workspace有什么区别)

3.下载cartographer、cartographer_ros、ceres源码

官方提供的下载方式是用rosinstall file,但是里面ceres的git地址要***,可以自己把三部分源码下到 src 里就好,三部分地址https://github.com/googlecartographer/cartographer、https://github.com/googlecartographer/cartographer_ros、https://github.com/ceres-solver/ceres-solver。下载后都是最新的,也不用 wstool update -t src 这条了。

4.装proto3

protobuf是谷歌的开源序列化框架(现在还不懂这是干什么的。。。)

catkin_ws/src/cartographer/scripts/install_proto3.sh  这个文件运行一下就可以了

5.安装依赖项

  sudo rosdep init

  rosdep update

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

6.最后编译

  catkin_make_isolated --install --use-ninja

最后把环境变量写到bash里

  vi .bashrc

最后一行加上

source ~/catkin_ws/install_isolated/setup.bash

7.跑一下官方demo试试

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag

roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

二、rplidar驱动安装

https://github.com/robopeak/rplidar_ros 下载rplidar的ROS驱动,可以新建一个工作空间,用catkin_make 编译一下即可;也可以放在cartographer的工作空间里 src 下,执行一下最后的catkin_make_isolated --install --use-ninja 即可。

1.开始使用前要设置一下USB口的权限

  ls -l /dev |grep ttyUSB

  sudo chmod 666 /dev/ttyUSB0

这样每次插上rplidar都要设置一次,可以将权限写在rules里(参考这个):

root权限新建文件 /etc/udev/rules.d/70-ttyusb.rules

写入KERNEL=="ttyUSB[0-9]*", MODE="0666",保存,重新插上设备,在运行一次ls -l /dev |grep ttyUSB 查看权限,有两个 rw 就可以了。

(感觉这样写的话或许北阳的激光插上也不用设置权限了)

2.运行一下试试

驱动里提供了三个launch文件,跑cartographer的话用 rplidar.launch 即可

  roslaunch rplidar_ros rplidar.launch

三、测试cartographer

  先要修改 launch 文件和 lua 文件,launch文件在 demo_revo_lds.launch 基础上修改(跟其他教程学的)

  主要两个地方,<remap from="scan" to="horizontal_laser_2d" />这一句后面的 horizontal_laser_2d 改成 scan (直接删掉这一句应该也可以);最后的 playbag 节点删掉。

  然后是lua文件,这个里面对参数的调整也会关系到出图的效果,具体如何影响还在学习中,只想跑起来的话比较简单,在revo_lds.lua 基础上修改,tracking_frame  和 published_frame 这两个改成 laser 就可以了。

  

(随便放桌上运行了一下,为了截图而已。。)

四、总结

  Linux的知识真的很欠缺,暑假才第一次用过Ubuntu,很多基础的命令都不熟,特别是Linux下编译程序是真挺麻烦的,对cmakelists文件了解太少,只能慢慢用到啥就去查,然后多做笔记。

  一开始没搞明白ros里面几个坐标系的转换,虽然知道是tf 问题,但是 lua 文件老是设置不好,ROS的基础知识还是要多看,特别是后面看源码的话还是要有ros基础的。

  cartographer的源码要开始看了,现在只是对大体架构有了解,还是要深入了解,多半是个挺痛苦的过程吧,哈哈。

rplidar跑cartographer的更多相关文章

  1. 【ros】rplidar Hector Slam

    想用rplidar跑一下hector slam,在网上发现了几个教程写的都不错,但是亲测发现都有点不足,综合了一下,进行补充. 1. 安装ros 和 创建工作空间 http://blog.csdn.n ...

  2. Cartographer安装

    安装过程: 官方安装教程: https://google-cartographer-ros.readthedocs.io/en/latest/index.html # Install wstool a ...

  3. SLAM+语音机器人DIY系列:(六)SLAM建图与自主避障导航——2.google-cartographer机器人SLAM建图

    摘要 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习.在前面的学习铺垫后,终于迎来了最大乐趣的时刻,就是赋予我们的miiboo机器人能自由行走的生命.本章将围绕机器人SLAM建图.导航避障 ...

  4. 实时Cartographer测试(1) - rplidar

    1.rplidar实时测试 参考文献:http://www.cnblogs.com/liangyf0312/p/8028441.html 修改USB转串口权限 yhexie@ubuntu:~$ cd ...

  5. rplidar & hector slam without odometry

    接上一篇:1.rplidar测试 方式一:测试使用rplidar A2跑一下手持的hector slam,参考文章:用hector mapping构建地图 但是roslaunch exbotxi_br ...

  6. Rplidar学习(五)—— rplidar使用cartographer_ros进行地图云生成

    一.Cartographer简介 Cartographer是google开源的通用2D和3D定位与地图同步构建的SLAM工具,并提供ROS接口.官网地址:https://github.com/goog ...

  7. jq跑马灯效果

    这几天公司产品有个无缝循环滚动的广告跑马灯要做,最开始想到的是<marquee>标签,但在PC端正常,在安卓广告屏上却怎么都跑不动,后来用的css3的animation,结果也是PC端及其 ...

  8. fedora上部署ASP.NET——(卡带式电脑跑.NET WEB服务器)

    andrew,20130601,guilin 本文记录在树莓派(fedora)上部署ASP.NET MVC2 的过程. 本文共分为六部分,分别是前置条件,Apache的安装,Mysql的安装,安装mo ...

  9. 如何让我们的PHP在Jexus中跑起来

    最近一段时间,经常看到不少的朋友在问,应该怎么设置才能够让Jexus支持PHP.其实,Jexus在很早之前就已经是可以支持PHP,像Apache或Nginx一样充当PHP的Web服务器的.不过由于没有 ...

随机推荐

  1. 《转》windows下通过cmd切换python2和python3版本

    当电脑中同时安装了python2和python3时,往往会由切换版本的需求.那么如何通过cmd命令行做到呢? 方法:修改python.exe的文件名 举个栗子: 我的电脑中同时安装了py2.7.10和 ...

  2. 使用kendynet构建异步redis访问服务

    使用kendynet构建异步redis访问服务 最近开始在kendynet上开发手游服务端,游戏类型是生存挑战类的,要存储的数据结构和类型都比较简单,于是选择了用redis做存储,数据类型使用stri ...

  3. <转>ML 相关算法参考

    转自 国内外网站如果你想搜索比较新颖的机器学习资料或是文章,可以到以下网站中搜索,里面不仅包括了机器学习的内容,还有许多其它相关领域内容,如数据科学和云计算等.InfoWord:http://www. ...

  4. openvpn 负载均衡方案

    这些方案的前提是,vpnserver的key都是一样的.方案1在openvpn客户端设两个配置文件,我们自己手动去连接去选择方案2在openvpn 的配置文件里面加个随机参数remote 8.8.8. ...

  5. Junit4单元测试报错

    转载博客:http://www.cnblogs.com/sxdcgaq8080/p/5649819.html 今天是用JUnit测试一段代码,报错method initializationerror ...

  6. 3-2 axios基础介绍

    1.静态引用 <script src="https://unpkg.com/axios/dist/axios.min.js"></script> 2.npm ...

  7. 2015.7.7js-07-2(基础)

    1.用求模来计算时间,秒%60,就能获取剩余的秒 var s = 362; var minute = parseInt(s/60) + "分" //取得分 var second = ...

  8. minix中二分查找bsearch的实现

    在看minix中bsearch实现的源代码之前,先学习一下C 语言中void类型以及void*类型的使用方法与技巧. void的含义: void的字面意思是“无类型”,void *则为“无类型指针”, ...

  9. AppScan扫描建议 问题集

    1.1        AppScan扫描建议 若干问题的补救方法在于对用户输入进行清理. 通过验证用户输入未包含危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询 ...

  10. TFS二次开发10——分组(Group)和成员(Member)

    TFS SDK 10 ——分组(Group)和成员(Member) 这篇来介绍怎样读取TFS服务器上的用户信息 首先TFS默认有如下分组(Group): SharePoint Web Applicat ...