📸
Orbbec Astra を ROS 2 で使ってみる
研究室に Orbbec 社製の Astra というカメラが落ちていました。

研究室で発見された Orbbec 社の 3D カメラ
どうやら、このカメラは色付きの点群を取得することができるらしく、その手順を備忘録として残しておきます。
Docker を用いて ROS の環境を起動します。
RViz を表示させるために xhost コマンドでローカル(コンテナ)環境からの X11 接続を許可しておきます。
lsusb コマンドを使用して、USB カメラのバスとデバイス ID を取得しています。
xhost +local:
BUS=`lsusb | grep -e Orbbec -e Astra | awk '{print $2}'`
DEVICE=`lsusb | grep -e Orbbec -e Astra | awk '{print $4}' | tr -d :`
docker run -it --rm -e DISPLAY="$DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix --device /dev/bus/usb/$BUS/$DEVICE:rwm osrf/ros:humble-desktop
orbbec/OrbbecSDK_ROS2 というリポジトリが積極的にメンテナンスされているようですが、Astra モデルはサポートされていないようなので、今回は orbbec/ros2_astra_camera を使用します。
依存関係のインストールやビルドのコマンドは、前述のリポジトリの README.md からそのまま引用しています。(nlohmann-json3-dev は依存関係が不足していたため追記しています。)
apt update
apt install libgflags-dev ros-$ROS_DISTRO-image-geometry ros-$ROS_DISTRO-camera-info-manager ros-$ROS_DISTRO-image-transport ros-$ROS_DISTRO-image-publisher libgoogle-glog-dev libusb-1.0-0-dev libeigen3-dev nlohmann-json3-dev
git clone https://github.com/libuvc/libuvc.git
pushd libuvc >/dev/null
mkdir build && cd build && cmake .. && make -j4 && make install && ldconfig
popd >/dev/null
git clone https://github.com/orbbec/ros2_astra_camera.git
pushd ros2_astra_camera >/dev/null
colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_BUILD_TYPE=Release
popd >/dev/null
ビルドが終わったら起動します。enable_colored_point_cloud パラメーターを使用すると、色付きのポイントクラウドを取得することができます。
source ros2_astra_camera/install/setup.bash
ros2 run rviz2 rviz2 &
ros2 launch astra_camera astra.launch.xml enable_colored_point_cloud:=true
ポイントクラウドを表示するには、RViz の Global Options > Fixed Frame を camera_link に変更します。
次に、Add ボタンから By topic タブを選び、トピック /camera/depth/points か /camera/depth_registered/points を選び追加します。

すると、色付きの点群が RViz 上に表示されます。やった〜。

Discussion