Step0:Vitis HLSとVivadoのインストール
- KR260 Robotics Starter Kit (/japan/products/product-highlights/xilinx-kr260)
- KR260用電源(KR260 Robotics Starter Kit に付属)
- USB-A to micro-B ケーブル(KR260 Robotics Starter Kit に付属)
- マイクロSDカード(最低16GB、KR260 Robotics Starter Kit に付属しているものでOK)
- LANケーブル(KR260 Robotics Starter Kit に付属)
- モニター
- DP-HDMIまたはDP-DPケーブル(モニターによって変えてください)
- USBマウス
- USBキーボード
- Intel RealSense D415
- https://ubuntu.com/download/amd にアクセスし、CHOOSE A BOARDからKria K26 SOMs → Download 22.04LTSでUbuntu 22.04のイメージファイルをダウンロードします。
- SDイメージの書き込みとセットアップに関しては/japan/manufacturers/amd/blog/tsn-application-with-kria-kr260/ を参照してください
Step1:深度マップに関する説明
深度マップは被写体とカメラとの距離、即ち奥行きを表現した画像で、Intel RealSenseのようなステレオカメラや深層学習による深度の推定によって取得できます。
Intel RealSenseはステレオカメラの中でも特に安価な部類で、主に画像分析の研究などに用いられています。
より安価な単眼カメラでも深層学習を用いて深度の推定ができますが、精度や速度の面ではステレオカメラに劣ります。
深層学習による深度推定の代表的なものとしてMiDasが挙げられます。下に示すように、MiDasの解説記事や動かしてみた記事は多くあるので、ここでは解説しません。
Step2:librealsenseのインストール
- 必要なパッケージのインストールをします
- $ sudo apt install -y git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
- $ sudo apt install -y libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
- $ sudo apt install -y cmake
- 次のコマンドでGitHubからlibrealsenseをクローンします
- librealsenseディレクトリに移動します
- $ cd librealsense/
- USBでRealSenseを認識するための設定を行います
- $ ./scripts/setup_udev_rules.sh
- librealsenseをクリーンビルドします(2時間程かかります)
- $ mkdir build && cd build
- $ cmake ../
- $ sudo make clean
- $ make
- librealsenseをインストールします
- $ sudo make install
- $ sudo make install
Step3:ROS 2 Humbleのインストール
本ブログでも度々解説しているROS 2はロボット操作用のフレームワークですが、カメラなどのセンサー類も扱うことができます。ROS 2Humbleのインストールに関しては本ブログの第8回を参照してください。
/japan/manufacturers/amd/blog/ros2-on-kr260-for-calibration-and-marker-detection/
Step4: realsense-rosのインストール
- ディスプレイを使っている場合、ディスプレイ設定をオフにしておきます
- $ sudo xmutil desktop_disable
- ROS用のワークスペースを作ります
- $ mkdir -p ~/realsense_ws/src
- $ cd ~/realsense_ws/src/
- GitHubからrealsense-rosをクローンします
- ビルドします(ディスプレイを切っておかないとフリーズするので注意、5~10分程でビルドが完了します)
- $ cd ~/realsense_ws
- $ source /opt/ros/humble/setup.bash
- $ colcon build
Step5:realsense-rosの動作確認
- ディスプレイを繋いでおきます
- ディスプレイが無効になっている場合は有効にしておきます
- $ sudo xmutil desktop_enable
- ROS 2にはデータの発信側と受信側がおり、それぞれPublisherとSubscriberと呼びます
- Publisherから発信されるデータをMessageと呼びます
- PublisherからSubscriberへとMessageを渡す機能をもったものをTopicと呼びます
- 一つ目のターミナルでPublisherを立ち上げます
- $ source realsense_ws/install/local_setup.bash
- $ source /opt/ros/humble/setup.bash
- $ ros2 launch realsense2_camera rs_launch.py
- ここではSubscriberとして3次元画像ビューアのRviz2を用います
- 二つ目のターミナルでRviz2により受信した映像を表示します
- $ source /opt/ros/humble/setup.bash
- $ rviz2
- Rviz2のウィンドウが開くので、設定を変えてカメラの映像を表示します
- Fixed Frameをcamera_depth_flameに変更します
- AddからBy topic → /camera/camera/color/image_raw/Imageを選びカラー映像を表示します
- 同様にAddから/camera/camera/depth/image_rect_raw/Imageを選び深度マップを表示します
- 前後に移動して深度の変化を見てみます
- カメラとの距離が近付くほど被写体が暗くなっていくことが分かります
- 流行りのダンス (https://www.youtube.com/watch?v=210R0ozmLwg&vl=ja) も踊ってみました、リアルタイム性能も問題なく出ています
参考にさせていただいた記事
- realsenseを使う
https://qiita.com/Karin-Sugi/items/28d1041f57b50e924902 - ubuntu20.04上のROS2 FoxyでRealSenseを使用する手順
https://qiita.com/porizou1/items/92b8cfacdacda4aa0dee - Jetson NanoでRealsenseのPythonラッパーPyRealsenseを使用する方法
https://qiita.com/karaage0703/items/39040f23cbb0611c0a0e
(Pythonを使う場合はより参考になると考えられます)
感想
今回はIntel RealSenseをKR260で使ってみました。Raspberry PiやNVIDIA Jetson同様に動作することが確認できたので、とても嬉しく感じます。前回の続きであるハードウェア実装は若干ハードルが高くなってしまったので、今回は予定を変更し、初心に立ち返って初心者でも読める記事を目指しました。余談ですが、今回使ったIntel RealSenseは筆者の私物です(笑)。それでは、また次回お会いしましょう!See you next time!

Kria
Kria SOMはアダプティブSoCデバイスを搭載しており、スマートカメラやエンベデッドビジョンなどに最適です。
AMD製品に関連する技術ブログ
- エンジニアブログの再開およびテクニカルウェビナーのご案内
- 初心者のためのPython & Numpy入門
- KR260でIntel RealSenseを動かしてみた!
- Vitis HLSで足し算IPを作ってみた!(プログラミング編)
- KD240でモータ制御してみた!
- KR260でデジタル信号処理してみた! (3)
- KR260でデジタル信号処理してみた! (2)
- KR260でデジタル信号処理してみた! (1)
- KR260でロボットアームを動かしてみた! (2)
- KR260でロボットアームを動かしてみた! (1)
- KR260でROS2を使ってキャリブレーション&マーカー検出してみた!
- KR260とPynqでAIカメラを動かしてみた!
- KR260でROS2 Perception Stack Applicationを動かしてみた!【2】
- KR260でROS2 Perception Stack Applicationを動かしてみた!
- Kria SOMでTPM2.0を動かしてみた!
- VivadoでKR260のハードウェアデザインを作って動かしてみた!
- ROS2 Multi-Node Communications via TSNを動かしてみた!
- AIBOX-ReIDを動かしてみた!