Seguimiento de Objetos con reComputer Jetson y PX4
Introducción
reComputer Mini es una computadora de IA diminuta impulsada por el módulo NVIDIA Jetson Orin Nano/Orin NX, que ofrece hasta 100 TOPS de rendimiento de IA. Gracias a su diseño compacto, es altamente adecuado para ser instalado en drones para manejar algunas tareas de IA. Este Wiki te mostrará cómo usar reComputer y px4 para lograr seguimiento de objetivos en tiempo real en drones.

Prerrequisitos
- Productos de la serie reComputer
- Controlador de vuelo PX4
- Jetson Pack 6.2 y ROS 2 Humble han sido instalados
- Cámara 3D Orbbec Gemini 2
Configurar el entorno de comunicación PX4 de ROS2
Para implementar el monitoreo del estado del dron en Jetson, por favor primero consulta este wiki para configurar el entorno de comunicación ROS2 para PX4.
Configurar el SDK de Python Gemini 2
El Orbbec Gemini 2 es una cámara 3D RGB-D de alta precisión que captura datos de profundidad y color sincronizados para aplicaciones como robótica, escaneo 3D y visión por computadora.
Paso 1. Instalar dependencias y clonar el repositorio:
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
Paso 2. Construir e instalar el proyecto:
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
Leer los temas publicados por px4 en ROS2
Conecta el controlador PX4 al puerto serie UART1 del Jetson

Abre una terminal e inicia el Agent en el jetson:
cd /path/to/Micro-XRCE-DDS-Agent/build
./MicroXRCEAgent serial --dev /dev/ttyTHS1 -b 921600
Usando el siguiente comando y abriendo otra terminal, puedes ver el topic de estado publicado por px4:
ros2 topic list | grep "/fmu/out/"

Al leer el contenido de los siguientes temas, puedes obtener la información básica del estado del dron:
- /fmu/out/failsafe_flags -> Indicadores de las condiciones actuales de seguridad.
- /fmu/out/sensor_combined -> Datos sincronizados en bruto de IMU, magnetómetro y barómetro.
- /fmu/out/timesync_status -> Estado de la sincronización temporal con fuentes externas.
- /fmu/out/vehicle_attitude -> Orientación actual del vehículo como un cuaternión.
- /fmu/out/vehicle_control_mode -> Modos de control y navegación activos actuales.
- /fmu/out/vehicle_local_position -> Posición y velocidad en el marco NED local.
- /fmu/out/vehicle_odometry -> Datos completos de pose y velocidad de 6 grados de libertad.
- /fmu/out/vehicle_status -> Estado general del vehículo, modo y preparación.
Configurar rápidamente el entorno de detección de objetos
Paso 1. Según tu versión de Jetpack, puedes consultar esta wiki para instalar PyTorch y Torchvision.
Paso 2. Instala las dependencias y paquetes necesarios:
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
Paso 3. Descarga el modelo pre-entrenado YOLOv11n:
wget -O yolo11n.pt https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt
Paso 4. Exportar el modelo de motor para usar la inferencia tensorrt:
yolo export model=/path/to/yolo11n.pt format=engine device=0 half=True dynamic=True
Instalar el paquete ROS2 para seguimiento de objetivos
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
Antes de ejecutar el nodo de detección, necesitas mover el archivo del modelo de motor generado previamente al directorio /ROS2-package-for-target-tracking/models
. Además, debes clonar los paquetes px4_msgs
y px4_ros_com
(consulta este wiki) en el directorio src de tu espacio de trabajo.
La estructura de tu directorio src debería ser la siguiente:
└── src
├── detect
├── px4_msgs
└── px4_ros_com
Para ejecutar el paquete ROS2 para el funcionamiento normal del seguimiento de objetivos, necesitas abrir una terminal e iniciar el 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
El video anterior presenta un ejemplo de cómo lograr el seguimiento de objetivos en un dron. Localiza el objetivo a través de la detección de objetivos y utiliza el algoritmo de seguimiento de objetivos ByteTrack para rastrear con precisión el objetivo específico. Al mismo tiempo, se utilizan imágenes de profundidad para estimar la distancia entre el dron y el objetivo.
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.