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: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
Desdehome/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 valoresx, 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 comostd_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 comostd_msgs::String en LxCamera_Module_Error.
Recibe el estado del mapeo
Después de iniciar el mapeo, ROS publica su estado comostd_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 mensajestd_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 mensajestd_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
- Publica datos
nav_msgs::Odometryen/sim/odom(el tópico se puede cambiar).
Descarga el mapa de contorno
- Publica un mensaje
std_msgs/StringenLxCamera_DownloadMap. - 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
.zipde un mapa completado en la cámara. - Después de una descarga correcta, la ruta del host especificada contiene el archivo del mapa. Extráelo para obtener un archivo de mapa
PGMy un archivo de configuraciónYAML.
Carga un archivo ZIP de mapa (nuevo)
- Publica un mensaje
std_msgs/StringenLxCamera_UploadMapZip. - 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. - 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
- Publica datos
geometry_msgs::PoseWithCovarianceStampedenLxCamera_UploadReloc. - La pose contiene la pose del LiDAR:
x,yyyaw. - 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 ánguloEuler yawen valores de cuaterniónxyzw.
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 serviciotrue 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:
Cambia de mapa
Nombre del servicio:/lx_localization_node/LxCamera_SwitchMap_srv
Definición del servicio:
Descarga un mapa
Nombre del servicio:/lx_localization_node/LxCamera_DownloadMap_srv
Definición del servicio:
Relocalízate
Nombre del servicio:/lx_localization_node/LxCamera_UploadReloc_srv
Definición del servicio:
Obtén el nombre del mapa actual
Nombre del servicio:/lx_localization_node/LxCamera_GetCurMapname_srv
Definición del servicio:
Obtén la lista de mapas actual
Nombre del servicio:/lx_localization_node/LxCamera_GetMapList_srv
Definición del servicio:
Sal del mapeo (interfaz personalizada)
Nombre del servicio:/lx_localization_node/LxCamera_ExitMapping_srv
Definición del servicio:
Elimina un mapa
Nombre del servicio:/lx_localization_node/LxCamera_EraseMap_srv
Definición del servicio:
Descarga un mapa de calor
Nombre del servicio:/lx_localization_node/LxCamera_DownloadMap_srv
Definición del servicio:
Mapeo incremental
Nombre del servicio:/lx_localization_node/LxCamera_IncMapping_srv
Definición del servicio: