LoginSignup
70

More than 5 years have passed since last update.

ROSのLidarSLAMまとめ

Last updated at Posted at 2017-05-27

目的

LidarからのTopic:sensor_msgs/LaserScanに対応している車輪ロボット向けのROSの2D/3D-SLAMパッケージをまとめた。Lidar単体では、原理上3DOF(X方向・Y方向・θ方向)姿勢までしか検出できないが、パッケージによっては、Lidar+IMU or Lidar+回転雲台を使って、6DOF(X方向・Y方向・θ方向)姿勢を検出できるものもある。
これ以外にもROSにはSLAMパッケージがあるが、個人的に使ったことあるものを記載。

一覧

名前 作者 アルゴリズム loop closure DOF(検出姿勢の自由度) 補足
Gmapping フライブルク大学, サピエンツァ大学,チューリッヒ工科大学 Rao-Blackwell定理を用いた Particle Filter 3DOF(Odom+Lidar) 最もメジャー
Hector SLAM ダルムシュタット工科大学 Scan-Matching +拡張カルマンフィルタ 3DOF(Lidar) 6DOF(IMU+Lidar) RoboCup 2011向けに開発・odometoryフリー動作可
Karto SLAM SRI International Graph-based SLAM 3DOF(Odom+Lidar)
Google Cartographer Google Graph-based SLAM 3DOF(Lidar) 6DOF(IMU+Lidar) odometoryフリー動作可・現時点OpenSourceの2D-SLAMではロバスト性最も良い?(2017/5)
Ethzasl icp mapping チューリッヒ工科大学 ICP-based SLAM 3DOF(Lidar) 6DOF(RDB-D Camera/3D-Lidar)

上記のモジュールはROS上の互換性であり、
map→odom→base_footprint→base_link→base_scanのtfを発行していれば、
下記のlaunchファイルを使って呼び出すことで、map topicを発行することができる。

動作確認環境

Ubuntu16.04 (x64)
ROS Kinetic


・Gmapping

Improved Techniques for Grid Mapping with Rao-Blackwellized Particle Filters
http://www.openslam.org/gmapping

ROSWiki: http://wiki.ros.org/gmapping
Github: https://github.com/ros-perception/slam_gmapping

Install:

$ sudo apt-get install ros-kinetic-gmapping 

Launch:

<?xml version="1.0"?>
<launch>
  <node pkg="gmapping" type="slam_gmapping" name="kobuki_slam_gmapping" output="screen">
    <remap from="scan" to="scan"/>
    <param name="base_frame" value="base_footprint"/>
    <param name="odom_frame" value="odom"/>
    </node>
</launch>

・Hector SLAM

A Flexible and Scalable SLAM System with Full 3D Motion Estimation

ROSWiki: http://wiki.ros.org/hector_slam
Github: https://github.com/tu-darmstadt-ros-pkg/hector_slam

Install:

$ sudo apt-get install ros-indigo-hector-*

Launch:

<?xml version="1.0"?>

<launch>
  <param name="pub_map_odom_transform" value="true"/> 
  <param name="map_frame" value="map"/> 
  <param name="base_frame" value="base_frame"/> 
  <param name="odom_frame" value="odom"/>

  <node pkg="tf" type="static_transform_publisher" name="map_2_odom" args="0 0 0 0 0 0 /map /odom 100"/>
  <node pkg="tf" type="static_transform_publisher" name="base_link_2_base_stabilized_link" args="0 0 0 0 0 0 /base_link /_base_stabilized 100"/> 
  <node pkg="tf" type="static_transform_publisher" name="base_stablized_2_base_frame" args="0 0 0 0 0 0 /_base_stabilized /base_frame 100"/> 
  <node pkg="tf" type="static_transform_publisher" name="base_2_nav_link" args="0 0 0 0 0 0 /base_frame /nav 100"/>

  <include file="$(find hector_slam_example)/launch/default_mapping.launch"/> 
  <include file="$(find hector_geotiff)/launch/geotiff_mapper.launch"/>

</launch>

・Karto SLAM

kartorobotics: https://www.kartorobotics.com/
ROSwiki: http://wiki.ros.org/karto
Github: https://github.com/ros-perception/open_karto

Install:

$ sudo apt-get install ros-indigo-open-karto 
$ sudo apt-get install ros-indigo-slam-karto 

Launch:

<?xml version="1.0"?>
<launch>
  <node pkg="slam_karto" type="slam_karto" name="slam_karto" output="screen">
    <remap from="scan" to="scan"/>
</launch>

・Google Cartographer

Real-Time Loop Closure in 2D LIDAR SLAM

https://google-cartographer.readthedocs.io/en/latest/
Github: https://github.com/googlecartographer/cartographer

Install:

Google Cartographer+Gazeboで地図をつくる


・Ethzasl icp mapping

チューリッヒ工科大が公開している、ROSのICPのSLAMモジュール。
RGB-Dカメラ・3D-Lidarからの3Dのポイントクラウド入力を前提としているが、Lidarでも動作可能。
やや古く、最新のROS環境でコンパイル通すには手間がかかる。

WillowGarage Blog: Real-Time Modular 3D Mapping
ethz-asl/ethzasl_icp_mapping Github
ROS WIKI ethzasl_icp_mapping

Install:

ROSでETH Zurichの3D-SLAMを動かしてみた。


参考資料:
RPLidar For ROS Based SLAM and Navigation/SLAMTEC
An Evaluation of 2D SLAM Techniques Available in Robot Operating System
An Evaluation of 2D SLAM Techniques Available in Robot Operating System (ROS)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
70