ROS 2 を用いた Kinect の操作
Lyrical Luth を使う。
Kinect v1(Xbox 360 用)は libfreenect で扱う。ROS 2 のドライバは kinect_ros2 である。Kinect v2(Xbox One 用、Kinect for Windows v2)は libfreenect2 で扱い、ROS 2 のドライバは kinect2_ros2 である。接続には USB 3.0 が必要である。
以下では Kinect v1 と kinect_ros2 を使う。kinect_ros2 は deb パッケージが無いため、ソースコードからビルドする。
前準備
-
Ubuntu で OS のシステム更新を行うときは,
次のコマンドを実行.
# パッケージリストの情報を更新 sudo apt update # インストール済みのパッケージを包括的に更新 (依存関係も考慮) sudo apt full-upgrade # 変更をシステム全体に確実に反映させるために再起動 sudo shutdown -r now - ROS 2 のインストール
libfreenect のインストールと USB の設定
- libfreenect のインストール
端末で、次のコマンドを実行する。
# パッケージリストの情報を更新 sudo apt update sudo apt -y install freenect libfreenect-dev - udev のルールの設定
一般ユーザの権限で Kinect を使えるようにする。
02aeはカメラ、02adは音声、02b0はモータのデバイス ID である。端末で、次のコマンドを実行する。sudo tee /etc/udev/rules.d/51-kinect.rules <<'EOF' SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ae", MODE="0660", GROUP="plugdev" SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ad", MODE="0660", GROUP="plugdev" SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02b0", MODE="0660", GROUP="plugdev" EOF sudo usermod -aG plugdev $USER sudo udevadm control --reload-rules sudo udevadm triggerグループの追加を反映するため、ログアウトして、ログインし直す。
- 接続の確認
Kinect を USB に接続し、AC アダプタで電源を供給する。端末で、次のコマンドを実行し、デバイスが表示されることを確認する。
lsusb | grep -i "045e"
kinect_ros2 のビルド
- ソースコードの取得
ワークスペースを作り、その
srcの下にソースコードを取得する。端末で、次のコマンドを実行する。mkdir -p ~/ros2_ws/src cd ~/ros2_ws/src git clone https://github.com/fadlio/kinect_ros2 - 依存パッケージのインストール
端末で、次のコマンドを実行する。
source /opt/ros/lyrical/setup.bash cd ~/ros2_ws rosdep update rosdep install --from-paths src --ignore-src -r -y - ビルド
端末で、次のコマンドを実行する。終了後、
Summaryにfailedのパッケージが無いことを確認する。source /opt/ros/lyrical/setup.bash cd ~/ros2_ws colcon build
実行と画像の表示
- ノードの起動
端末で、次のコマンドを実行する。
source /opt/ros/lyrical/setup.bash source ~/ros2_ws/install/setup.bash ros2 run kinect_ros2 kinect_ros2_node - トピックの一覧の表示
カラー画像の
image_raw、深度画像のdepth/image_raw、カメラ情報のcamera_info、depth/camera_infoが表示される。別の端末で、次のコマンドを実行する。source /opt/ros/lyrical/setup.bash source ~/ros2_ws/install/setup.bash ros2 topic list - ノードの情報の表示
別の端末で、次のコマンドを実行する。
source /opt/ros/lyrical/setup.bash source ~/ros2_ws/install/setup.bash ros2 node list ros2 node info /kinect_ros2 - カラー画像の表示
rqt_image_viewを起動し、表示するトピックを選ぶ。別の端末で、次のコマンドを実行する。sudo apt update sudo apt -y install ros-lyrical-rqt-image-view source /opt/ros/lyrical/setup.bash ros2 run rqt_image_view rqt_image_view - 深度画像と点群の表示
RViz2 を起動し、
AddでImageやPointCloud2を追加して、トピック名を選ぶ。別の端末で、次のコマンドを実行する。source /opt/ros/lyrical/setup.bash source ~/ros2_ws/install/setup.bash rviz2 - 配信状況の確認
画像が表示されないときは、トピックが配信されているかを確認する。
average rateが表示されない場合は、Kinect の電源、USB の接続、udev のルールの設定を確認する。別の端末で、次のコマンドを実行する。source /opt/ros/lyrical/setup.bash source ~/ros2_ws/install/setup.bash ros2 topic hz /kinect_ros2/image_raw