Saltar al contenido principal

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 y compila libzip desde la página de descargas de libzip según las instrucciones oficiales. Compila el paquete de ROS desde /V2-ROS-SDK-service, que se encuentra al mismo nivel que src:

Ejecución

Si la configuración de maestro/esclavo de ROS está activada en la cámara, desactívala antes de ejecutar el ejemplo de ROS. Después de encender la cámara, espera unos 20 segundos antes de iniciar el ejemplo.
Desde home/username/V2_ROS_SDK, que se encuentra al mismo nivel que src, ejecuta:

Interfaces de tópicos de ROS

Antes de probar una interfaz, enciende la cámara y espera unos 30 segundos a que se inicie el programa integrado. Después, inicia el nodo del SDK de ROS.

Recibe la pose de localización

ROS recibe continuamente los valores x, y y theta de la cámara, publica estos 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

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

Recibe el uso de almacenamiento de la cámara

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

Recibe el nombre del módulo defectuoso

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

Recibe el estado del mapeo

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

Recibe el progreso del mapeo

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

Establece los parámetros

Publica un mensaje std_msgs/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/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.

Carga la odometría

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

Descarga el mapa de contorno

  1. Publica un mensaje std_msgs/String en LxCamera_DownloadMap.
  2. El mensaje contiene una ruta absoluta del host y un nombre de mapa, separados por una coma. El nombre del mapa es 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 un archivo ZIP de mapa (nuevo)

  1. Publica un mensaje std_msgs/String en LxCamera_UploadMapZip.
  2. El mensaje contiene la ruta del archivo del mapa que se va a cargar, por ejemplo /home/fr1511b/map.zip. Usa un archivo descargado mediante la interfaz de descarga de mapas.
  3. Si se encuentra el mapa, el SDK lo envía a la cámara. La cámara lo extrae en /home/fr1511b/hontai/map/.

Relocalízate

  1. Publica datos geometry_msgs::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.

Interfaces de servicios de ROS

El mapeo, el cambio de mapa, la descarga de mapas y la relocalización también están disponibles mediante servicios de ROS. Una respuesta de servicio true indica que la operación se realizó correctamente; false indica un fallo. Para las operaciones que requieren confirmación, se recomienda utilizar la interfaz de servicio.
Usa rosservice 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: /lx_localization_node/LxCamera_Mapping_srv Definición del servicio:
Llama al servicio:

Cambia de mapa

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

Descarga un mapa

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

Relocalízate

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

Obtén el nombre del mapa actual

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

Obtén la lista de mapas actual

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

Sal del mapeo (interfaz personalizada)

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

Elimina un mapa

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

Descarga un mapa de calor

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

Mapeo incremental

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