LoginSignup
29
20

More than 3 years have passed since last update.

『SLAM入門』の教材用プログラムLittleSLAMのROS2(ROS dashing)ラッパーを作った

Last updated at Posted at 2019-07-24

はじめに

ROS2(ROS dashing)で『SLAM入門』のLittleSLAMを動かすラッパーを書きました。スキャンデータのみで動かせます。

ROS2とは

下記のスライドがわかりやすいです。
次世代ロボット フレームワーク ROS2の紹介 - SWEST
Getting Started with ROS 2 / DDS

ROS2のチュートリアルはこちらからどうぞ。
ROS Japan ユーザグループ 講習会 ~ ROS 2 の紹介 ~
Qiita ROS2導入&レクチャー

LittleSLAMとは

LittleSLAMは『SLAM入門』の教材として作られた2D-SLAMのプログラムです。
LittleSLAMはICP-スキャンマッチングによるLocal SLAMとグラフベースSLAMによるGlobal SLAMによって成り立っています。

スキャンマッチングに関しては以下のスライドを読めばわかると思います。
Scan Matching 自己位置推定手法
LiDAR-SLAM チュートリアル資料

SLAMに関しては以下の解説論文に詳しく書いてあります。
移動ロボットの環境認識 —地図構築と自己位置推定

LittleSLAMのプログラムの詳細はリンク先と『SLAM入門』を参照ください。

IO

subscriber
- sensor_msgs::msg::LaserScan ("scan")
- odom (tfの"base_link"->"odom")(optional,with use_odom:=true)
(コマンドからパラメーターuse_odomを渡すのがまだできてないので、そのうちします…。このリポジトリこのQ&Aを参考にすれば良いっぽい?)

publisher
- sensor_msgs::msg::PointCloud2 ("icp_map")
- nav_msgs::msg::Path ("path")
- nav_msgs::msg::PoseStamped ("current_pose")

結果

データはros.orgのIntroduction to Working With Laser Scanner Dataにある以下のデータros2用に変換して使いました。

白い点が点群で、緑の線がセンサが通った経路です。

littleslam.png

コード置き場

Githubにあります。

参考

友納 正裕,『SLAM入門』
LittleSLAM
little_slam
rosjp_ros2_basics
test_repo
How to set up tfbuffer clock in ROS 2 so it works with sim time?
lookupTransform - builtin_interfaces/Time to tf2::TimePoint?

29
20
0

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
29
20