Raspberry Pi 4とKinectでRGB-D SLAMを試してみました (おおたfab 第51回 素人でもロボットをつくりたい)

Robot

おおたfabさんでは、「素人でもロボットをつくりたい」という勉強会を定期的に行っています。前回LiDARを使って地図の作成を行いましたが、今回はKinectを使って地図作成にチャレンジします。

kinect_slam1_photo.jpg

RGB-D SLAMとは

SLAMの説明はマクニカさんのサイトがよくまとまっています。

これまではLiDAR SLAMの実験でしたが、今回はDepth SLAMとなります。Microsoft Kinectセンサーで深度の情報が取得できるのでいろいろな記事が掲載されています。今回は以下のサイトを参考にさせていただきました。

HARDWARE

SOFTWARE

  • Ubuntu 18.04
  • ROS Melodic
  • libfreenect
    libfreenect is a userspace driver for the Microsoft Kinect. It runs on Linux, OSX, and Windows and supports. (RGB and Depth Images、Motors、Accelerometer、LED、Audio)
  • rgbd_launch
    This package contains launch files for using RGB-D devices such as the Microsoft Kinect in ROS.
  • freenect_stack
    This stack provides a ROS interface to the Microsoft Kinect using the libfreenect library.
  • rtabmap
    RTAB-Map library and standalone application.
  • rtabmap_ros
    RTAB-Map’s ros-pkg. RTAB-Map is a RGB-D SLAM approach with real-time constraints.

Raspberry Pi 4のセットアップ

1. catkin_wsを作成

mkdir -p ~/catkin_ws/src
cd catkin_ws
catkin_make
source devel/setup.bash

2. libfreenectのインストール

cd ~/git/
git clone https://github.com/OpenKinect/libfreenect.git
cd libfreenect/
mkdir build
cd build
cmake ..
sudo make install
cd ../..
sudo cp libfreenect/platform/linux/udev/51-kinect.rules /etc/udev/rules.d
sudo udevadm trigger

3. rgbd_launchとfreenect_stackパッケージのインストール

cd ~/catkin_ws/src
git clone https://github.com/ros-drivers/rgbd_launch.git
git clone https://github.com/ros-drivers/freenect_stack.git
cd ~/catkin_ws
catkin_make
source ~/.bashrc

4. RTAB-Mapのスタンドアロンライブラリのインストール

cd ~/git
git clone https://github.com/introlab/rtabmap.git
cd rtabmap/build
cmake ..
make
sudo make install

5. RTAB-Map rosパッケージのインストール

cd catkin_ws/src
git clone https://github.com/introlab/rtabmap_ros.git
cd ..
catkin_make -j4

RGB-Depth SLAMを動かしてみる

1. KinnectをRaspberry Pi 4に接続する

2. 1番めのターミナルでkinectデータ取得ノードを起動する

roslaunch freenect_launch freenect.launch depth_registration:=true

3. 2番めのターミナルでimage_viewを立ち上げて画像トピックが流れているか確認する。

rosrun rqt_image_view rqt_image_view

GUIで表示したい画像トピックを選択すると画像が移ります。カラー画像は/camera/rgb/image_color,距離画像は/camera/depth_registered/imageです。

4. 3番目のターミナルでRTAB-Mapのノードを起動する

roslaunch rtabmap_ros rgbd_mapping.launch

5. Kinectを持ってゆっくり動いてみる。

6. rtabmapのノードを停止する。

7. 以下のコマンドで作成したマップが表示される。

/usr/local/bin/rtabmap-databaseViewer ~/.ros/rtabmap.db

実験結果

残念ながらおおたFabの勉強会では時間切れで良い結果が得られませんでした。

おおたFabさんからKinectをお借りして自宅で再度動かしたところ、RTAB-Mapで次のような結果が得られました。

部屋の角が見えています。

kinect_slam3_2021-11-28_17-32-59.png

部屋の全景はこのような表示になりました。マウスで拡大・縮小・回転など自在に動かせます。

kinect_slam4_2021-11-28 190057_pp.png

rtabmap-databaseViewerの結果はもっと良い画質に仕上がっているのですが、部屋が丸見えになってしまうので掲載は遠慮しておきます。

次回

次回はおおたFabさんでもう一度実験をして、Rvizでも結果を表示したいと考えています。

タイトルとURLをコピーしました