Saltar al contenido principal

Descripción general

Esta página describe los tópicos y servicios de ROS2 que proporciona lx_camera_ros en el módulo de localización V2.

Compilación

Instala los componentes Qt5 Core y Network. Los comandos de instalación varían según la distribución de Linux; el siguiente ejemplo usa Ubuntu:
Descarga el código fuente de libzip desde la página de descargas de libzip y compílalo según las instrucciones oficiales. Ejecuta el siguiente comando desde /lx_camera_ros:

Ejecución

Vuelve a compilar después de cambiar el archivo de configuración YAML. Los cambios no se aplican hasta que se vuelve a compilar el proyecto.

Interfaces de tópicos de ROS2

Antes de probar una interfaz, enciende la cámara, espera unos 30 segundos e inicia el nodo del SDK de ROS2.

Recibe la pose de localización

ROS2 recibe continuamente los valores x, y y theta de la cámara, publica los valores y el cuaternión convertido a partir de theta en LxCamera_LocationPoseResult y difunde la pose mediante TF.

Recibe el estado de localización

ROS2 recibe el estado de localización de la cámara (true o false) a 1 Hz y lo publica como std_msgs::msg::Bool en LxCamera_LocationResult.

Recibe el uso de almacenamiento de la cámara

ROS2 recibe la proporción de uso del almacenamiento de la cámara a 2 Hz y la publica como std_msgs::msg::Float32 en LxCamera_Capacity_Status.

Recibe el nombre del módulo defectuoso

ROS2 recibe de la cámara el nombre de un módulo defectuoso y lo publica como std_msgs::msg::String en LxCamera_Module_Error.

Recibe el progreso del mapeo

Después de iniciar el mapeo, ROS2 publica el progreso (0–100) como std_msgs::msg::Int32 en LxCamera_Mapping_Progress.

Recibe el estado del mapeo

Después de iniciar el mapeo, ROS2 publica su estado como std_msgs::msg::Bool en LxCamera_MappingState.

Establece los parámetros

Publica un mensaje std_msgs::msg::String en LxCamera_SetParam. El mensaje contiene nueve valores de coma flotante separados por comas: x,y,z,yaw,pitch,roll,x,y,yaw. Los seis primeros valores definen la pose de la cámara; los tres últimos definen la pose del LiDAR. Después de una actualización correcta, se actualizan los valores correspondientes de las secciones [Laser1] y [Camera1] de /home/fr1511b/hontai/params/config_install_FL21500HAF.ini.

Cambia de mapa

Publica un mensaje std_msgs::msg::String que contenga el nombre de un mapa completado en LxCamera_SwitchMap. Actualiza la interfaz web de la cámara. Si cambia el nombre del mapa mostrado, el cambio se realizó correctamente.

Descarga un mapa

  1. Publica un mensaje std_msgs::msg::String en LxCamera_DownloadMap.
  2. El mensaje contiene dos campos: save_path, una ruta absoluta en el equipo host, y mapname, el nombre del archivo .zip de un mapa completado en la cámara.
  3. Después de una descarga correcta, la ruta del host especificada contiene el archivo del mapa. Extráelo para obtener un archivo de mapa PGM y un archivo de configuración YAML.

Carga la odometría

Publica datos nav_msgs::msg::Odometry en /sim/odom (el tópico se puede cambiar).

Relocalízate

  1. Publica datos geometry_msgs::msg::PoseWithCovarianceStamped en LxCamera_UploadReloc.
  2. La pose contiene la pose del LiDAR: x, y y yaw.
  3. La relocalización se realiza correctamente cuando la posición mostrada en la interfaz web de la cámara se actualiza a la pose enviada.
Los cuaterniones están restringidos y no se pueden completar arbitrariamente. Usa el convertidor de Euler a cuaternión para convertir un ángulo Euler yaw en valores de cuaternión xyzw.

Prefijos de tipo de mensaje

El equipo host se comunica con la cámara mediante UDP. Los primeros cuatro bytes de cada mensaje identifican el tipo de datos de la interfaz:

Interfaces de servicios de ROS2

El mapeo, el cambio de mapa, la descarga de mapas y la relocalización también están disponibles mediante servicios de ROS2. Una respuesta de servicio true indica que la operación se realizó correctamente; false indica un fallo.
Usa ros2 service call para los siguientes comandos. Los nombres de los mapas no deben comenzar por un número ni superar los 30 caracteres.

Crea un mapa

Nombre del servicio: /LxCamera_Mapping_srv Definición del servicio:
Llama al servicio:

Cambia de mapa

Nombre del servicio: /LxCamera_SwitchMap_srv Definición del servicio:
Llama al servicio:

Descarga un mapa

Nombre del servicio: /LxCamera_DownloadMap_srv Definición del servicio:
Llama al servicio:

Relocalízate

Nombre del servicio: /LxCamera_UploadReloc_srv Definición del servicio:
Llama al servicio:

Obtén el nombre del mapa actual

Nombre del servicio: /LxCamera_GetCurMapname_srv Definición del servicio:
Llama al servicio:

Obtén la lista de mapas actual

Nombre del servicio: /LxCamera_GetMapList_srv Definición del servicio:
Llama al servicio:

Sal del mapeo

Nombre del servicio: /LxCamera_ExitMapping_srv Definición del servicio:
Llama al servicio:

Elimina un mapa

Nombre del servicio: /LxCamera_EraseMap_srv Definición del servicio:
Llama al servicio:

Descarga un mapa de calor

Nombre del servicio: /LxCamera_DownloadHeatMap_srv Definición del servicio:
Llama al servicio:

Mapeo incremental

Nombre del servicio: /LxCamera_IncMapping_srv Definición del servicio:
Llama al servicio: