Los sistemas ROS suelen estar compuestos por una gran cantidad de nodos, cualquiera de los cuales puede comunicarse con otros nodos mediante publicación/suscripción. Por ejemplo, los sensores de posición del robot, como las unidades de radar, se pueden utilizar como nodos en ROS. La unidad de radar puede publicar la información obtenida por el radar en forma de flujo de información, y la información publicada puede ser obtenida por otros nodos, como unidades de navegación, unidades de planificación de ruta, etc.
Mecanismo de comunicación ROS:
Algunos de los paquetes de funciones SLAM en ROS (Robot Operating System) también son algoritmos SLAM de uso común, como Gmapping, Karto, Hector, Cartographer, etc. No nos centraremos en los principios matemáticos detrás del algoritmo, sino que nos centraremos más en los métodos de implementación de ingeniería, explicándole cómo funciona el paquete de algoritmos SLAM y cómo construir rápidamente un algoritmo SLAM.
Mapa: El mapa en ROS es fácil de entender. Es simplemente una imagen ordinaria en escala de grises, generalmente en formato pgm. En esta figura, los píxeles negros representan obstáculos, los píxeles blancos representan áreas factibles y los píxeles grises representan áreas inexploradas.
El mapa se mantiene y se presenta en forma de tema en ROS. Este tema se llama /map. Debido a que /map en realidad almacena una imagen, este tema a menudo se publica de forma bloqueada para reducir gastos innecesarios. Si el mapa no se actualiza, el último contenido publicado permanece sin cambios. En este momento, si un nuevo suscriptor se suscribe al mensaje, solo recibirá un mensaje /map, que es el último mensaje publicado. Solo cuando el mapa se actualice (como cuando SLAM crea un nuevo mapa) /map publicará contenido nuevo. Este método es ideal para datos relativamente fijos y que cambian lentamente (como mapas) y luego se publican solo una vez. En comparación con la publicación del mismo mensaje incierto, el método de bloqueo no solo puede reducir el ancho de banda ocupado en la comunicación, sino también la sobrecarga del mantenimiento de los recursos de mensajes.
Gmapping, el algoritmo Gmapping es actualmente un algoritmo relativamente confiable y maduro basado en soluciones lidar y odometría. Se basa en el filtrado de partículas y el método RBPF tiene efectos estables. Muchos robots basados en ROS ejecutan gmapping_slam.
La función del gmapping es construir un mapa del entorno y estimar su propio estado basándose en la información del lidar y la odometría. Por lo tanto, su entrada debe incluir datos lidar y de odómetro, y su salida debe tener su propia ubicación y mapa.
Soporte de papel: R-Lins: Robo central lidar: un estimador de estado diferido para una navegación sólida y eficiente.
IMU de 6 ejes: alta frecuencia, centrándose en su propio movimiento y no recopilando datos del entorno externo.
LiDAR 3D: de baja frecuencia, centrado en el movimiento corporal y recogida de datos del entorno externo.
R-LINS utiliza los dos sensores anteriores para estimar la postura de movimiento del robot. Para cualquier sensor, es difícil construir un mapa basado únicamente en sus propios datos. Por ejemplo, el sensor utilizado en el modelo de radar puro es lidar, que puede detectar muy bien información del entorno externo. Pero también se verá interferido por esta información, lo que producirá ciertos errores acumulativos en el funcionamiento a largo plazo. Para evitar que este error interfiera con la construcción posterior del mapa, es necesario utilizar otro sensor para corregir la información de pose del propio robot, concretamente el sensor IMU. Dado que el sensor IMU es un sensor que se utiliza para la estimación del movimiento propio, recopila toda la información de la postura de su propio movimiento. Bien puede corregir la información de posición y actitud de la odometría lidar. Por lo tanto, la navegación lidar y inercial se suele utilizar para la fusión de datos y corregir la información de actitud.
Un * * * se divide en tres grandes partes: