rplidar跑cartographer
一、Cartographer编译
cartographer依赖的大型第三方库很少,编译时基本没有依赖项问题,基本按照官方文档的步骤来,略作修改。使用的环境是Ubuntu16.04+ROS Kinetic
1.先装好wstool、rosdep、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的更多相关文章
- 【ros】rplidar Hector Slam
想用rplidar跑一下hector slam,在网上发现了几个教程写的都不错,但是亲测发现都有点不足,综合了一下,进行补充. 1. 安装ros 和 创建工作空间 http://blog.csdn.n ...
- Cartographer安装
安装过程: 官方安装教程: https://google-cartographer-ros.readthedocs.io/en/latest/index.html # Install wstool a ...
- SLAM+语音机器人DIY系列:(六)SLAM建图与自主避障导航——2.google-cartographer机器人SLAM建图
摘要 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习.在前面的学习铺垫后,终于迎来了最大乐趣的时刻,就是赋予我们的miiboo机器人能自由行走的生命.本章将围绕机器人SLAM建图.导航避障 ...
- 实时Cartographer测试(1) - rplidar
1.rplidar实时测试 参考文献:http://www.cnblogs.com/liangyf0312/p/8028441.html 修改USB转串口权限 yhexie@ubuntu:~$ cd ...
- rplidar & hector slam without odometry
接上一篇:1.rplidar测试 方式一:测试使用rplidar A2跑一下手持的hector slam,参考文章:用hector mapping构建地图 但是roslaunch exbotxi_br ...
- Rplidar学习(五)—— rplidar使用cartographer_ros进行地图云生成
一.Cartographer简介 Cartographer是google开源的通用2D和3D定位与地图同步构建的SLAM工具,并提供ROS接口.官网地址:https://github.com/goog ...
- jq跑马灯效果
这几天公司产品有个无缝循环滚动的广告跑马灯要做,最开始想到的是<marquee>标签,但在PC端正常,在安卓广告屏上却怎么都跑不动,后来用的css3的animation,结果也是PC端及其 ...
- fedora上部署ASP.NET——(卡带式电脑跑.NET WEB服务器)
andrew,20130601,guilin 本文记录在树莓派(fedora)上部署ASP.NET MVC2 的过程. 本文共分为六部分,分别是前置条件,Apache的安装,Mysql的安装,安装mo ...
- 如何让我们的PHP在Jexus中跑起来
最近一段时间,经常看到不少的朋友在问,应该怎么设置才能够让Jexus支持PHP.其实,Jexus在很早之前就已经是可以支持PHP,像Apache或Nginx一样充当PHP的Web服务器的.不过由于没有 ...
随机推荐
- 《转》windows下通过cmd切换python2和python3版本
当电脑中同时安装了python2和python3时,往往会由切换版本的需求.那么如何通过cmd命令行做到呢? 方法:修改python.exe的文件名 举个栗子: 我的电脑中同时安装了py2.7.10和 ...
- 使用kendynet构建异步redis访问服务
使用kendynet构建异步redis访问服务 最近开始在kendynet上开发手游服务端,游戏类型是生存挑战类的,要存储的数据结构和类型都比较简单,于是选择了用redis做存储,数据类型使用stri ...
- <转>ML 相关算法参考
转自 国内外网站如果你想搜索比较新颖的机器学习资料或是文章,可以到以下网站中搜索,里面不仅包括了机器学习的内容,还有许多其它相关领域内容,如数据科学和云计算等.InfoWord:http://www. ...
- openvpn 负载均衡方案
这些方案的前提是,vpnserver的key都是一样的.方案1在openvpn客户端设两个配置文件,我们自己手动去连接去选择方案2在openvpn 的配置文件里面加个随机参数remote 8.8.8. ...
- Junit4单元测试报错
转载博客:http://www.cnblogs.com/sxdcgaq8080/p/5649819.html 今天是用JUnit测试一段代码,报错method initializationerror ...
- 3-2 axios基础介绍
1.静态引用 <script src="https://unpkg.com/axios/dist/axios.min.js"></script> 2.npm ...
- 2015.7.7js-07-2(基础)
1.用求模来计算时间,秒%60,就能获取剩余的秒 var s = 362; var minute = parseInt(s/60) + "分" //取得分 var second = ...
- minix中二分查找bsearch的实现
在看minix中bsearch实现的源代码之前,先学习一下C 语言中void类型以及void*类型的使用方法与技巧. void的含义: void的字面意思是“无类型”,void *则为“无类型指针”, ...
- AppScan扫描建议 问题集
1.1 AppScan扫描建议 若干问题的补救方法在于对用户输入进行清理. 通过验证用户输入未包含危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询 ...
- TFS二次开发10——分组(Group)和成员(Member)
TFS SDK 10 ——分组(Group)和成员(Member) 这篇来介绍怎样读取TFS服务器上的用户信息 首先TFS默认有如下分组(Group): SharePoint Web Applicat ...