Custom Meta Tags
2503 Hero Banner

AMD製品に関連する技術ブログ

Long Copy

KR260でIntel RealSenseを動かしてみた!

皆さん、こんにちは。Avnetエンジニアのノリさんです!


今回は予定を変更してKR260でIntel RealSenseを動かしていこうと思います。 モチベーションとしては、Raspberry PiやNVIDIA Jetson同様にKR260でもIntel RealSenseの動作を 確認できるところを見たいというものになります。今回の記事は画像処理エンジニアをメインターゲットとして書かれています。

2024-06-01

Long Copy_body

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
       


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) も踊ってみました、リアルタイム性能も問題なく出ています
     

     


参考にさせていただいた記事


感想

今回はIntel RealSenseをKR260で使ってみました。Raspberry PiやNVIDIA Jetson同様に動作することが確認できたので、とても嬉しく感じます。前回の続きであるハードウェア実装は若干ハードルが高くなってしまったので、今回は予定を変更し、初心に立ち返って初心者でも読める記事を目指しました。余談ですが、今回使ったIntel RealSenseは筆者の私物です(笑)。それでは、また次回お会いしましょう!See you next time!