Este repositorio contiene tres paquetes ROS 2 desarrollados para capturar datos de radar utilizando la plataforma de desarollo de arreglos en fase ADALM-PHASER CN0566 de Analog Devices y controlar un PTU‑C46, que permite posicionar dinámicamente el radar en distintas direcciones:
- radar_msg: Definición del mensaje personalizado
RadarData. - radar_package: Captura, procesamiento y publicación de datos obtenidos desde el radar por medio de conección ethernet.
- ptu_package: Interfaz de comunicación serial con el PTU-C46.
- ptu_routine: Produce una rutina para controlar orientación y elevación del PTU‑C46.
- Ubuntu 22.04
- ROS 2 Humble Hawksbill
Para trabajar con el hardware de radar PhaserX, es necesario instalar las siguientes bibliotecas Instrucciones detalladas desde Analog Devices:
Paquetes de Python requeridos:
pylibiiopyadi-iiopyserialnumpy
Para su instalación se debe seguir el listado de instrucciones de configuración previa de Build instructions for libiio hasta antes de clonar el repositorio:
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libxml2-dev libzstd-dev bison flex libcdk5-dev cmake
sudo apt-get install libaio-dev libusb-1.0-0-dev
sudo apt-get install libserialport-dev libavahi-client-dev
sudo apt-get install doxygen graphviz
sudo apt-get install python3 python3-pip python3-setuptoolsLuego descargar libiio-0.26.ga0eca0d-Linux-Ubuntu-22.04.deb:
sudo apt install ./libiio-0.26.ga0eca0d-Linux-Ubuntu-22.04.debPor último continuar con:
pip install pylibiio
pip install pyadi-iio
pip install pyserial
pip install numpyDesde la raíz del workspace:
colcon build
source install/setup.bashPara establecer la conexión serial del dispositivo PTU‑C46 se utiliza un conversor USB a RS-232 modelo TU-S9.
Ejecuta el nodo de comunicación:
ros2 run ptu_package ptu_node --ros-args -p serial_port:=/dev/ttyUSB0Para publicar ángulos, los límites por defecto son:
- Pan (orientación horizontal): de -158° a +158°
- Tilt (elevación): de -46° a +31°
Se permite enviar cualquier comando al PTU-C46. Para más detalles, consulte el manual del dispositivo manual del dispositivo
ros2 topic pub --once /ptu_cmd std_msgs/msg/String "{data: 'pp-1000'}"Ejecuta una rutina predefinida que en base a una señal habilitadora permite realizar el recorrido:
ros2 run ptu_routine ptu_routine_node
ros2 topic pub --once /allow_routine_ptu std_msgs/msg/Bool "{data: true}"
ros2 topic pub --once /start_scan std_msgs/msg/Bool "{data: true}"
ros2 topic pub /start_scan std_msgs/msg/Bool "{data: true}"Publica datos de radar desde un archivo .npy
ros2 run radar_package radar_nodeSuscribirse para visualizar los datos:
ros2 run radar_package process_data_nodePublicación de datos al topico solo una vez:
ros2 topic pub --once /allow_sweep std_msgs/msg/Bool "data: true"Este paquete define el mensaje personalizado RadarData para estructurar la información del radar. Además, incluye nodos ejecutables a modo de ejemplo. La definición del mensaje puede visualizarse con el siguiente comando:
ros2 interface show radar_msg/msg/RadarDataNodos de ejemplo:
ros2 run radar_msg publish_radar_data
ros2 run radar_msg subscribe_radar_datacorrer rosbag
ros2 bag play UC_SmartFarmRadar/datos/radar_rosbag/intento1.7/intento1.7_0.db3en bucle
ros2 bag play --loop UC_SmartFarmRadar/datos/radar_rosbag/intento1.7/intento1.7_0.db3
ros2 bag play --loop UC_SmartFarmRadar/datos/data_sync_radar/data_sync_radar_0.db3
ros2 bag play --loop UC_SmartFarmRadar/datos/dataset_0/dataset_0_0.db3
ros2 bag play --loop UC_SmartFarmRadar/datos/wall/wall_0.db3
ros2 bag play --loop UC_SmartFarmRadar/datos/wall/wall_0.db3
ros2 bag play --loop UC_SmartFarmRadar/datos/ptu_radar_capture_routine/ptu_radar_capture_routine_0.db3
ros2 bag record -a -o /home/dammr/Desktop/magister_ws/UC_SmartFarmRadar/datos/medicion_fondo_centro
ros2 bag record -a -o /home/dammr/Desktop/magister_ws/UC_SmartFarmRadar/datos/medicion_fondo_cielo
ros2 bag record -a -o /home/dammr/Desktop/magister_ws/UC_SmartFarmRadar/datos/medicion_experimental
ros2 bag record -a -o /home/dammr/Desktop/magister_ws/UC_SmartFarmRadar/datos/medicion_experimental_taller
ros2 bag play --loop UC_SmartFarmRadar/datos/medicion_fondo/medicion_fondo_0.db3
ros2 bag play --loop UC_SmartFarmRadar/datos/medicion_fondo_centro/medicion_fondo_centro_0.db3
ros2 bag play --loop UC_SmartFarmRadar/datos/medicion_fondo_cielo/medicion_fondo_cielo_0.db3
ros2 bag play --loop UC_SmartFarmRadar/datos/medicion_experimental/medicion_experimental_0.db3
ros2 bag play --loop UC_SmartFarmRadar/datos/medicion_experimental_taller/medicion_experimental_taller_0.db3ros2 service call /clear_map std_srvs/src/empty "{}"Para cargar el entorno de ros2 de forma automatica en tu computador y espacio de trabajo añade lo siguiente a tu archivo ~/.bashrc
source ~/ros2_humble/install/setup.bash
source ~/Desktop/magister_ws/install/setup.bash- Visual Studio Code
- tmux
Para establecer comunicación de forma correcta con el radar se debe establecer un perfil en settings -> network -> wired -> + -> IPV4 -> shared to other computers -> add
De esta forma se le estara asignando una ip al puerto
mientras tanto se ha controlador por medio del terminal serial putty