reComputer JetsonとPX4による物体追跡
はじめに
reComputer Miniは、NVIDIA Jetson Orin Nano/Orin NXモジュールを搭載した小型AIコンピューターで、最大100 TOPSのAI性能を提供します。 コンパクトな設計により、ドローンに搭載してAIタスクを処理するのに非常に適しています。このWikiでは、reComputerとpx4を使用してドローンでリアルタイム目標追跡を実現する方法を紹介します。

前提条件
- reComputerシリーズ製品
- PX4フライトコントローラー
- Jetson Pack 6.2とROS 2 Humbleがインストール済み
- Orbbec Gemini 2 3Dカメラ
ROS2のPX4通信環境の設定
JetsonでドローンのState監視を実装するには、まずこのwikiを参照してPX4のROS2通信環境を設定してください。
Gemini 2 Python SDKのセットアップ
Orbbec Gemini 2は、ロボティクス、3Dスキャン、コンピュータービジョンなどのアプリケーション向けに同期された深度とカラーデータをキャプチャする高精度RGB-D 3Dカメラです。
ステップ1. 依存関係をインストールしてリポジトリをクローンします:
sudo apt-get install python3-dev python3-venv python3-pip python3-opencv
#install pybind11
pip install pybind11
#clone the repository
git clone https://github.com/orbbec/pyorbbecsdk.git
#Install the necessary packages
cd pyorbbecsdk
pip install -r requirements.txt
ステップ 2. プロジェクトをビルドしてインストールします:
mkdir build && cd build
#Build the project
cmake \
-Dpybind11_DIR=`pybind11-config --cmakedir` \
-DPython3_EXECUTABLE=/usr/bin/python3.10 \
-DPython3_INCLUDE_DIR=/usr/include/python3.10 \
-DPython3_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.10.so \
..
make -j4
sudo make install
#apply the python SDK
pip install wheel
python setup.py bdist_wheel
pip install dist/*.whl
#Configure udev_rules
export PYTHONPATH=$PYTHONPATH:$(pwd)/install/lib/
sudo bash ./scripts/install_udev_rules.sh
sudo udevadm control --reload-rules && sudo udevadm trigger
ROS2でpx4が公開するトピックを読み取る
PX4コントローラーをJetsonのUART1シリアルポートに接続します

ターミナルを1つ開き、jetson上でAgentを起動します:
cd /path/to/Micro-XRCE-DDS-Agent/build
./MicroXRCEAgent serial --dev /dev/ttyTHS1 -b 921600
以下のコマンドを使用して別のターミナルを開くことで、px4によって公開されているステータストピックを確認できます:
ros2 topic list | grep "/fmu/out/"

以下のトピックの内容を読むことで、ドローンの基本的なステータス情報を取得できます:
- /fmu/out/failsafe_flags -> 現在のフェイルセーフ状態のインジケーター。
- /fmu/out/sensor_combined -> 同期された生のIMU、磁力計、気圧計データ。
- /fmu/out/timesync_status -> 外部ソースとの時刻同期のステータス。
- /fmu/out/vehicle_attitude -> 四元数としての現在の機体姿勢。
- /fmu/out/vehicle_control_mode -> 現在アクティブな制御およびナビゲーションモード。
- /fmu/out/vehicle_local_position -> ローカルNEDフレームでの位置と速度。
- /fmu/out/vehicle_odometry -> 完全な6自由度姿勢と速度データ。
- /fmu/out/vehicle_status -> 機体の全体的な状態、モード、準備状況。
オブジェクト検出環境の迅速な設定
ステップ1. お使いのJetpackバージョンに応じて、PyTorchのインストールとTorchvisionについては、このwikiを参照してください。
ステップ2. 必要な依存関係とパッケージをインストールします:
sudo apt-get update
sudo apt-get -y install libcusparselt0 libcusparselt-dev
pip install ultralytics
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/onnxruntime_gpu-1.20.0-cp310-cp310-linux_aarch64.whl
pip install numpy==1.23.5
ステップ3. YOLOv11nの事前学習済みモデルをダウンロードします:
wget -O yolo11n.pt https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt
ステップ4. TensorRT推論を使用するためのエンジンモデルをエクスポートします:
yolo export model=/path/to/yolo11n.pt format=engine device=0 half=True dynamic=True
Install the ROS2 package for target tracking
cd /path/to/your/work_space/src
git clone https://github.com/zibochen6/ROS2-package-for-target-tracking.git
cd ..
# build the package
colcon build
検出ノードを実行する前に、以前に生成されたエンジンモデルファイルを /ROS2-package-for-target-tracking/models
ディレクトリに移動する必要があります。さらに、ワークスペースのsrcディレクトリに px4_msgs
と px4_ros_com
パッケージ(このwikiを参照)をクローンする必要があります。
srcディレクトリの構造は以下のようになります:
└── src
├── detect
├── px4_msgs
└── px4_ros_com
ターゲット追跡の通常動作のためにROS2パッケージを実行するには、ターミナルを開いてMicroXRCEAgentを起動する必要があります:
./MicroXRCEAgent serial --dev /dev/ttyTHS1 -b 921600
# Open another terminal and run the detection node
cd /path/to/your/work_space
source install/setup.bash
ros2 run detect detect
上記の動画は、ドローンでターゲット追跡を実現する例を示しています。ターゲット検出を通じてターゲットを特定し、ByteTrackターゲット追跡アルゴリズムを使用して特定のターゲットを正確に追跡します。同時に、深度画像を使用してドローンとターゲット間の距離を推定します。
技術サポート & 製品ディスカッション
私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。