Chapter 11無料公開

センサの利用3:RealSenseの使用

Ar-Ray-code
Ar-Ray-code
2024.04.06に更新

RealSense

⚠️:現在のrealsense-rosは、SDKバージョン互換性の関係でビルドに失敗することが確認されています。最新のRealSense-SDKをビルドするか、バージョンを落としたrealsense-rosを使用するようにしてください。

RealSenseは、インテルが開発した3Dカメラの製品群です。RealSenseカメラは、複数のカメラと深度センサーを内蔵しており、3D画像を捉えることができます。これにより、3Dスキャンや物体の深度推定、顔認証、手指のトラッキングなどが行えるようになっています。

ここではD435をはじめとしたデプスカメラとT265をサポートしたROS2向けlibrealsenseライブラリラッパーを使用する方法について書きます。

ただし、librealsenseのAPIに慣れている場合は、ほとんどの場合librealsenseのAPIを直接使用することを推奨します。

付録2にlibrealsenseのRaspberryPiOS向けのビルド方法について書いています。

librealsense2のインストール

RaspberryPi4向けの独自ビルドdpkgを作成しています。次のコマンドでインストール可能です。
librealsense自体をビルドしたい場合は公式チュートリアルや付録2:librealsenseのビルドを参考にしてください。

wget https://s3.ap-northeast-1.wasabisys.com/download-raw/dpkg/librealsense/debian/bullseye/librealsense-dev_2-53-1_arm64.deb
sudo apt install ./librealsense-dev_2-53-1_arm64.deb

udev-rulesを適用します。

sudo curl https://raw.githubusercontent.com/IntelRealSense/librealsense/master/config/99-realsense-libusb.rules --output /etc/udev/rules.d/99-realsense-libusb.rules
sudo udevadm control --reload-rules
sudo udevadm trigger

ソースコードのダウンロード

次のコマンドを実行してソースコードをダウンロードします。

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

git clone https://github.com/IntelRealSense/realsense-ros -b ros2-development
git clone https://github.com/ros/diagnostics.git -b ros2
git clone https://github.com/ros-perception/vision_opencv.git -b humble
git clone https://github.com/ros-perception/image_common.git -b humble

ビルド

ビルドします。
事前にrealsenseのパスを通す必要があります。(多分OpenCV_DIRいらないかも)

source /opt/ros/humble/setup.bash
cd ~/ros2_ws
export realsense2_DIR=/usr/local/lib/aarch64-linux-gnu/cmake/realsense2/
export OpenCV_DIR=/usr/lib/aarch64-linux-gnu/cmake/opencv4/

colcon build

実行

オプションでIDを指定しない場合は、1台のみ認識可能です。
モードは自動で決定されます。

source ~/ros2_ws/install/setup.bash
ros2 launch realsense2_camera rs_launch.py

D435

Rviz2やrqt_image_viewで確認することができます。Imageを選択します。

PointCloudを出力する場合、RaspberryPiでは処理能力が足りませんが、decimation_filter.enableパラメータをtrueにすることでぎりぎり使用することができます。
ただし、画質を落とさなければすぐに処理落ちするので、RaspberryPiでPointCloudを使用するのは現実的ではないです。

ros2 launch realsense2_camera rs_launch.py pointcloud.enable:=true  decimation_filter.enable:=true

T265

OdomがPublishされるので、Rviz2でOdometryを選択してトピックを選択します。