ROS 与 SLAM 入门教程
说明:
介绍主要利用 turtlebot2 来做建图和定位移动平台实现各种 SLAM 方法,加深具体实现算法理解
介绍 hector_slam 的雷达 SLAM 实现
介绍 gmapping 的雷达和深度相机的 SLAM 实现
介绍 Google Cartographer 的 SLAM 实现
目录:
ROS 与 SLAM 入门教程-目录
ROS 与 SLAM 入门教程-激光雷达(Hokuyo)gmapping 构建地图
ROS 与 SLAM 入门教程-激光雷达(Rplidar)gmapping 构建地图
ROS 与 SLAM 入门教程-激光雷达(neato v-11)gmapping 构建地图
ROS 与 SLAM 入门教程-Google 的 cartographer SLAM 算法实现
ROS 与 SLAM 入门教程-激光雷达(EAI F4)gmapping 构建地图
ROS 与 SLAM 入门教程-slam_gmapping 参数介绍
ROS 与 SLAM 入门教程-激光雷达(EAI F4)hector_slam 构建地图
ROS 与 SLAM 入门教程-hector_mapping 参数介绍
ROS 与 SLAM 入门教程-激光雷达(neato v-11)hector_slam 构建地图
ROS 与 SLAM 入门教程-cartographer 在 Turltlebot 的应用 1-官方安装及补充
ROS 与 SLAM 入门教程-cartographer 在 Turltlebot 的应用 2-hitcm 安装修改版
ROS 与 SLAM 入门教程-激光雷达(EAI F4)自主导航实现
ROS 与 SLAM 入门教程-map_server 介绍
ROS 与 SLAM 入门教程-激光雷达(Rplidar)slam_karto 构建地图
参考:
hector_slam
o
http://wiki.ros.org/hector_slam
gmapping
o
http://wiki.ros.org/gmapping
1
o
o
http://wiki.ros.org/slam_gmapping
https://www.openslam.org/gmapping.html
Google Cartographer
o
o
o
o
http://wiki.ros.org/cartographer
https://google-cartographer-ros.readthedocs.io/en/latest/
https://google-cartographer-ros-for-turtlebots.readthedocs.io/en/latest/
https://github.com/googlecartographer/cartographer_turtlebot
DSO
o
o
o
http://blog.csdn.net/heyijia0327/article/details/53173146
https://github.com/JakobEngel/dso
https://vision.in.tum.de/research/vslam/dso?redirect=1
RGBD-SLAM-V2
o
o
o
o
http://felixendres.github.io/rgbdslam_v2/
https://github.com/shl202/Turtlebot-Localization-Using-RGB-D-SLAM/wiki/Setup
http://wiki.ros.org/rgbdslam
http://sauravag.com/2016/10/how-to-setup-kinect-with-ros-and-rgbd-slam/
RTAB-MAP
o
o
o
o
o
o
http://wiki.ros.org/rtabmap_ros/Tutorials/MappingAndNavigationOnTurtlebot
http://official-rtab-map-forum.67519.x6.nabble.com/Demo-RTAB-Map-on-Turtlebot-td439.html
https://mahsaparsapour.wordpress.com/tutorials/ros-2/rtab-map-on-turtlebot/
http://wiki.ros.org/rtabmap_ros/Tutorials
https://introlab.github.io/rtabmap/
http://wiki.ros.org/rtabmap
2
o
http://wiki.ros.org/rtabmap_ros
http://patilnabhi.github.io/portfolio/tbotnav
TurtleBot SLAM (with RTAB-Map, Hand-Gestures, Face Recognition & AR Code Tracking)
ORB-SLAM
o
o
o
o
o
https://github.com/raulmur/ORB_SLAM
http://www.it610.com/article/4678964.htm
http://webdiis.unizar.es/~raulmur/orbslam/
http://blog.csdn.net/dreamer_lhs/article/details/51297432
http://blog.csdn.net/dourenyin/article/details/48055441
ORB-SLAM2
o
o
http://www.cnblogs.com/lizhongpingchn/p/5531551.html
https://github.com/raulmur/ORB_SLAM2.git
LSD-SLAM
o
o
http://www.lai18.com/content/8221766.html
https://github.com/tum-vision/lsd_slam
DTAM(RGBD)
o
https://www.robots.ox.ac.uk/~vgg/rg/papers/newcombe_davison__2011__dtam.pdf
Elastic Fusion(RGBD)
o
https://github.com/mp3guy/ElasticFusion
ROS 与 SLAM 入门教程-激光雷达(Hokuyo)gmapping 构建地图
说明
介绍激光雷达(Hokuyo)在 Turtlebot 平台上实现 gmapping 构建地图
3
参考
Turtlebot 入门教程-激光雷达(Hokuyo)gmapping 构建地图
ROS 与 SLAM 入门教程-激光雷达(Rplidar)gmapping 构建地图
说明
介绍激光雷达(Rplidar)在 Turtlebot 平台上实现 gmapping 构建地图
参考
Turtlebot 入门教程-激光雷达(Rplidar)gmapping 构建地图
ROS 与 SLAM 入门教程-激光雷达(neato xv-11)gmapping 构建地图
说明
介绍激光雷达(neato xv-11)在 Turtlebot 平台上实现 gmapping 构建地图
参考
Turtlebot 入门教程-激光雷达(neato xv-11)gmapping 构建地图
ROS 与 SLAM 入门教程-Google 的 cartographer 的 SLAM 实现
说明:
介绍 Google 的 cartographer 的 SLAM 库
参考:
需要翻墙安装: turtlebot 入门教程-cartographer 在 Turltlebot 的应用
不需要翻墙安装:turtlebot 入门教程-cartographer 在 Turltlebot 的应用 2
不需要翻墙安装:ROS 与 SLAM 入门教程-cartographer 在 Turltlebot 的应用 3
4
ROS 与 SLAM 入门教程-激光雷达(EAI F4)gmapping 构建地图
说明
介绍 Turtlebot 搭载激光雷达(EAI F4)通过 gmapping 构建地图
准备
测试环境 ubuntu14.04 + indigo
已安装 Turtlebot 包,具体安装:deb 包安装 | 源码安装
依赖包:
o
Turtlebot 应用包,https://github.com/ncnynl/turtlebot_apps.git
o 激光雷达驱动,https://github.com/EAIBOT/flashgo.git
步骤
详细 F4 雷达安装参考:ROS 与激光雷达入门教程-ROS 中使用激光雷达(EAI F4)
建立工作空间(也可以利用现有的),编译包
$ mkdir ‐p ~/turtlebot_ws/src
$ cd
~/turtlebot_ws/src
## turtlebot 建图依赖包
$ git clone https://github.com/turtlebot/turtlebot_apps
#编译
$ cd ~/turtlebot_ws
$ catkin_make
添加环境变量,在~/.bashrc 最后添加一行:
$ source /home/ubu/turtlebot_ws/devel/setup.bash
刷新配置
$ source ~/.bashrc
或
5
$ rospack profile
制作雷达驱动启动文件
复制 lidar.launch 到 flashlidar-laser.launch,并增加 TF 定义
$ roscd turtlebot_navigation
$ mkdir ‐p laser/driver
$ sudo cp ~/turtlebot_ws/src/flashgo/launch/lidar.launch laser/driver/flashlidar_laser.la
unch
打开 flashgolidar_laser.launch,并修改
$ rosed turtlebot_navigation flashlidar_laser.launch
检查 frame_id 是否指定为 laser
查看 serial_port 是否指定正确端口,使用别名
检查端口:
,设置好别名.
增加 TF:
修改为 args="0.0 0.0 0.18 0 0.0 0.0 为自己的实际安装位置。详情查看,static_transform_publisher 部
分
static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms
这里我假设底盘的中心点为 0,雷达放在机器人托盘中心位置,X 为 0,高度为 18CM,Z 为 0.18m
TF 的单位使用米的,测量单位是 CM
特别提醒:
o EAI F4 激光雷达的坐标系是顺时针坐标系, 一般 ROS 小车坐标系是逆时针坐标系,所以需要做坐标
系变换。
o 即 qx qy 分别要设置为 3.14 3.14
完整代码如下:
6
pkg="flashgo" type="flashgo_node" output="screen">
type="string" value="/dev/flashlidar"/>
type="int"
type="string" value="laser"/>
type="bool"
value="true"/>
type="string" value="" />
type="double" value="0" />
检查 turtlebot_navigation 包
增加 flashlidar_gmapping_demo.launch 文件,用于启动 gmapping.
$ roscd turtlebot_navigation
$ touch launch/flashlidar_gmapping_demo.launch
$ rosed launch/flashlidar_gmapping_demo.launch
输入内容:
设置 laser_type 为 flashlidar.
7
增加 flashlidar_gmapping.launch.xml 文件,执行 gmapping 建图
$ roscd turtlebot_navigation
$ touch launch/includes/gmapping/flashlidar_gmapping.launch.xml
$ rosed launch/includes/gmapping/flashlidar_gmapping.launch.xml
输入内容:
8