Laser SLAM usa ros para guardar mapas de nubes de puntos (tome A-LOAM como ejemplo)

Laser SLAM guarda el mapa de la nube de puntos y usa la herramienta ros para guardar sin volver a compilar el programa SLAM.

Tabla de contenido

método

Método 1: guarde el tema de grabación como rosbag y luego conviértalo a pcd

Método 2 guardar directamente el tema como pcd

Ver mapa de nube de puntos

vista pcl_viewer

nubecompararVer

Convierta el mapa de nube de puntos PCD al formato de capas para su visualización


Tome A-LOAM para ejecutar el conjunto de datos de Kitti como ejemplo.

Para ejecutar el programa A-LOAM, abra dos terminales y ejecute

roslaunch aloam_velodyne aloam_velodyne_HDL_64.launch
rosbag play  --pause xxx.bag

método

Método 1: guarde el tema de grabación como rosbag y luego conviértalo a pcd

Registre el tema de la nube de puntos del mapa que debe registrarse con el registro rosbag, guárdelo como un archivo de bolsa y luego transfiera los temas relacionados en la bolsa al formato pcd.

Pasos específicos:

1. Grábalo cuando estés a punto de terminar de ejecutar, abre la terminal en la carpeta que deseas guardar y ejecuta

 rosbag record /laser_cloud_map

Se mostrarán dos mensajes INFORMACIÓN:

[INFO] [......]: Suscribiéndose a /laser_cloud_map
[INFO] [......]: Grabando en 'map.bag'.

Después de ejecutar, Ctrl + C finaliza la grabación y el archivo map file.bag se guarda en la carpeta.
2. Convertir bolsa a archivo pcd

Cambie al directorio donde se encuentra el archivo map.bag

rosrun pcl_ros bag_to_pcd map.bag /laser_cloud_map map.pcd

map.bag se convierte en map.pcd. Una vez que rosrun termina de ejecutarse, puede ver que se genera una carpeta pcd y los archivos que contiene se ordenan según el tiempo de modificación. El último es el archivo pcd del mapa de nube de puntos final.

Si el archivo guardado en el registro rosbag tiene el sufijo .bag.active , es necesario restaurarlo a un paquete normal con el sufijo ".bag". Proceso de reparación:

rosbag reindexar xxx.bag.active

rosbag fix xxx.bag.active或者rosbag fix xxx.bag result.bag

Después de reindexar rosbag y generar un archivo con el sufijo .bag.org.active, este es solo un archivo intermedio y no es necesario procesarlo. La reparación de rosbag aún procesa xxx.bag.active; si hay result.bag detrás de la solución, el archivo de reparación se guardará como result.bag.

Método 2 guardar directamente el tema como pcd

Utilice la herramienta rosrun pcl_ros para guardar directamente el tema de la nube de puntos del mapa que debe registrarse como un archivo pcd con rosrun pcl_ros.

Pasos específicos:

 Registre cuando esté a punto de terminar de ejecutar, abra la terminal en la carpeta que desea guardar y ejecute

rosrun pcl_ros pointcloud_to_pcd input:=/laser_cloud_map

En este momento, aparece la siguiente información INFO en el terminal

[INFO] [1683850358.621560685]: Guardando como PCD binario
[INFO] [1683850358.625476468]: Escuchando datos entrantes en el tema /laser_cloud_surround
[INFO] [1683850360.540955903]: Se recibieron 7650 puntos de datos en el marco camera_init con los siguientes campos: intensidad xyz
[INFORMACIÓN] [1683850360.540990020]: Datos guardados en 1317653847034159.pcd
[INFORMACIÓN] [1683850361.131458068]: Se recibieron 13486 puntos de datos en el marco camera_init con los siguientes campos: intensidad xyz
[INFORMACIÓN] [1683850361.13148969 4]: Datos guardados en 1317653847552311.pcd

。。。。。。

 rosrun pcl_ros pointcloud_to_pcd input:=Guarde una serie de nubes de puntos bajo el tema /laser_cloud_map en una carpeta en formato pcd, ordene los archivos en la carpeta según el tiempo de modificación, y el último es el último archivo pcd del mapa de nube de puntos.


Ver mapa de nube de puntos

vista pcl_viewer

pcl_viewer xxx.pcd

Si no está instalado, debe instalarlo con anticipación.

sudo apt-get install pcl-tools

nubecompararVer

comparar nube abierta

cloudcompare.ccViewer

nubecompare.CloudCompare

Convierta el mapa de nube de puntos PCD al formato de capas para su visualización

pcl_pcd2ply xxx.pcd xxxxxxx.ply

El software de terceros como MatLab/MeshLab necesita convertir pcd a ply al procesar mapas de nubes de puntos, y MeshLab debe usar el método pointcloud_to_pcd para crear una nube de puntos convertida de formato pcd a ply.

Explicación de las instrucciones ROS, de GPT

rosrun pcl_ros pointcloud_to_pcd

`rosrun pcl_ros pointcloud_to_pcd` es un nodo ROS que se utiliza para convertir datos de nubes de puntos en formato de archivo ROS a PCD. 

Cuando utilice el comando `rosrun pcl_ros pointcloud_to_pcd`, debe especificar el nombre del tema de los datos de la nube de puntos de entrada, así como el nombre y la ruta del archivo PCD de salida. El método de uso específico es el siguiente:

```
rosrun pcl_ros pointcloud_to_pcd entrada:=<nombre_tema_entrada> salida:=<ruta_archivo_salida>
```

Entre ellos, `<input_topic_name>` es el nombre del tema ROS de los datos de la nube de puntos de entrada, y `<output_file_path>` es la ruta y el nombre del archivo PCD de salida. Por ejemplo:

```
rosrun pcl_ros pointcloud_to_pcd entrada:=/camera/profundidad/puntos salida:=/home/user/pointcloud.pcd
```

En este ejemplo, el nodo recibirá datos de la nube de puntos del tema `/camera/profundidad/points`, luego los convertirá al formato de archivo PCD y los guardará en el archivo `/home/user/pointcloud.pcd`.

Cabe señalar que cuando utilice `rosrun pcl_ros pointcloud_to_pcd` para convertir datos de nubes de puntos, debe asegurarse de que los datos de la nube de puntos de entrada se hayan publicado en el tema ROS especificado. Además, debe asegurarse de que el paquete `pcl_ros` esté instalado; de lo contrario, el comando no funcionará correctamente.

Además de utilizar la herramienta de línea de comandos `rosrun`, también puede utilizar el archivo de inicio de ROS para iniciar el nodo `pointcloud_to_pcd`. En el archivo de inicio, debe especificar los parámetros de entrada y salida, así como el nombre del nodo y otros parámetros. Por ejemplo, el siguiente es un ejemplo del uso del archivo de inicio de ROS para iniciar el nodo `pointcloud_to_pcd`:

```xml
<lanzamiento>
  <nodo nombre="pointcloud_to_pcd" pkg="pcl_ros" tipo="pointcloud_to_pcd">
    <remapeo de="entrada" a="/camera/profundidad/puntos"/>
    <param nombre="nombre de archivo " value="/home/user/pointcloud.pcd"/>
  </node>
</launch>
```

En este ejemplo, primero se define un nodo llamado `pointcloud_to_pcd`, utilizando el tipo `pointcloud_to_pcd` del paquete `pcl_ros`. Luego, use la etiqueta `remap` para reasignar `input` a `/camera/profundidad/points`, indicando el nombre del tema de los datos de la nube de puntos de entrada. Finalmente, use la etiqueta `param` para pasar el parámetro `filename`

Establezca en `/home/user/pointcloud.pcd`, indicando la ruta y el nombre del archivo PCD de salida.

Después de iniciar el archivo de inicio, el nodo `pointcloud_to_pcd` se iniciará automáticamente y recibirá datos de la nube de puntos del tema `/camera/profundidad/points`, luego los convertirá al formato de archivo PCD y los guardará en `/home/user /pointcloud.pcd` archivo.

Cabe señalar que cuando utilice el archivo de inicio de ROS para iniciar el nodo, debe asegurarse de que el nombre del tema especificado en el archivo de inicio sea coherente con el nombre del tema publicado real. Si los nombres de los temas no coinciden, el nodo no recibirá los datos de entrada correctos y el resultado de la conversión será incorrecto.

Además, debe asegurarse de que el archivo de inicio se haya guardado en la ruta contenida en la variable de entorno de ROS `$ROS_PACKAGE_PATH`; de lo contrario, ROS no podrá encontrar el archivo de inicio.

En resumen, utilizando `rosrun pcl_ros pointcloud_to_pcd` o el nodo `pointcloud_to_pcd` en el archivo de inicio de ROS, puede convertir fácilmente los datos de la nube de puntos en ROS al formato de archivo PCD, y guardarlos y postprocesarlos.

Supongo que te gusta

Origin blog.csdn.net/weixin_56337147/article/details/130634169
Recomendado
Clasificación