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服务器的.不过由于没有 ...
随机推荐
- 保存对象时碰到的问题-列名 'Discriminator' 无效
今天保存对象时碰到问题: {"列名 'Discriminator' 无效.\r\n列名 'Discriminator' 无效."} 百度了一下,百度找到的一个解决: http:/ ...
- vs必备快捷键整理
.格式化代码:Ctrl+E,D .格式化部分代码:选中代码->Ctrl+K,F.或者Ctrl+E,F. .折叠cs文件所有方法:Ctrl+M,O .打开或折叠所有代码:Ctrl+M,L (打开或 ...
- IOS设计模式第三篇之外观设计模式
外观设计模式: 这个外观设计模式提供了一个单独的接口给复杂的子系统.而不是暴露用户的一组类和API,你仅仅暴露一个简单的同一的API. 下面的图片解释这个概念: API的用户根本不知道后面系统的复杂性 ...
- Find–atime –ctime –mtime的用法与区别总结
转自 周五有同事问起find命令中-mtime n.-mtime –n以及-mtime +n的用法区别,当时虽然记得这里n是n个24个小时的意思,也是对所有这几个属性详细的用法却一知半解,索性周末仔细 ...
- Python Tkinter 学习成果:点歌软件music
笔者工作业余时间也没什么爱好,社交圈子也小,主要娱乐就是背着自己带电瓶的卖唱音响到住地附近找个人多的位置唱唱KtV. 硬件上点歌就用笔记本电脑,歌曲都是网上下载的mkv格式的含有两个音轨的视频.因此点 ...
- Android6.0中PowerManagerService分析
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=30510400&id=5569393 概述 一直以来,电源管理是 ...
- 去掉VS2010代码中文注释的红色下划线
VS2010代码中文注释出现红色下划线,代码看上去很不美观,发现是由于安装Visual Assist X插件造成的. 解决办法:打开VAX的Options对话框,取消Advanced --> U ...
- 【咸鱼教程】Base64
教程目录1 Base64简介2 使用Base643 Demo下载 1 Base64简介百度百科:Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2 ...
- Java反射机制获取Class文件
JAVA反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象方法的功能称为 ...
- 【BZOJ3456】城市规划 多项式求逆
[BZOJ3456]城市规划 Description 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了. 刚才说过, 阿狸的国家有n个城市, 现在国家需要在某些城市对之间建立一些贸易路线, 使得 ...