Navegación robótica (1): una descripción general

Introducción al módulo de navegación

¿Cómo navegan los robots? O en otras palabras, ¿cómo se mueve el robot del punto A al punto B? Para proporcionar un diagrama del paquete de funciones de navegación, el oficial de ROS incluye algunas tecnologías clave de la navegación de ROS:
inserte la descripción de la imagen aquí
suponiendo que hayamos configurado el robot de una manera específica, el paquete de funciones de navegación hará que se mueva. El diagrama anterior describe esta configuración. Las partes blancas son componentes requeridos e implementados, las partes grises son componentes opcionales e implementados, y las partes azules son componentes que deben crearse para cada plataforma de robot.

En resumen, las tecnologías clave involucradas son las siguientes:

  • mapa mundial

  • autoposicionamiento

  • plan de ruta

  • control deportivo

  • advertencia ambiental

La implementación de la navegación robótica es similar a la de la conducción no tripulada. La tecnología clave también se compone de los cinco puntos anteriores, pero la conducción no tripulada se basa en exteriores, mientras que la navegación robótica que presentamos actualmente se basa más en interiores.

mapa mundial

En la vida real, cuando necesitamos implementar la navegación, primero podemos referirnos a un mapa global, luego determinar nuestra propia posición y la posición de destino de acuerdo con el mapa, y planificar una ruta aproximada de acuerdo con la visualización del mapa... Porque lo mismo es verdadero para la navegación de robots. Los mapas son un componente importante en la navegación de robots. Por supuesto, si desea utilizar un mapa, primero debe dibujar un mapa. En cuanto a la continua aparición de tecnologías de modelado de mapas, destaca una teoría denominada SLAM:

  1. SLAM (localización y mapeo simultáneos), también conocido como CML (Mapeo y localización concurrentes), posicionamiento y construcción de mapas en tiempo real, o mapeo y posicionamiento concurrentes. El problema SLAM se puede describir como: el robot comienza a moverse desde una posición desconocida en un entorno desconocido, se ubica de acuerdo con la estimación de posición y el mapa durante el movimiento, y construye un mapa incremental basado en su propio posicionamiento para dibujar el entorno externo mapa completo.

  2. En ROS, hay muchas implementaciones de SLAM de uso común, como: gmapping, hector_slam, cartographer, rgbdslam, ORB_SLAM...

  3. Por supuesto, para completar SLAM, el robot debe tener la capacidad de percibir el entorno externo, especialmente la capacidad de obtener información detallada sobre el entorno circundante. La realización de la percepción necesita apoyarse en sensores, tales como: lidar, cámara, cámara RGB-D...

  4. SLAM se puede usar para la generación de mapas, y el mapa generado debe guardarse para su uso posterior.El paquete de funciones para guardar mapas en ROS es map_server

También tenga en cuenta: aunque SLAM es una de las tecnologías importantes para la navegación de robots, las dos no son equivalentes. Para ser precisos, SLAM solo realiza la construcción de mapas y el posicionamiento instantáneo.

autoposicionamiento

Al comienzo de la navegación y durante el proceso de navegación, el robot necesita determinar su posición actual. Si está al aire libre, entonces el GPS es una buena opción. Si está en interiores, túneles, subterráneos o algunas áreas especiales que protegen las señales GPS, debido al debilitamiento de las señales GPS o incluso si no está disponible por completo, entonces se debe encontrar otra forma. Por ejemplo, el SLAM anterior puede realizar su propio posicionamiento. Además, ROS también proporciona un paquete de funciones para el posicionamiento: amcl

amcl (adaptiveMonteCarloLocalization) El posicionamiento Monte Carlo adaptativo es un sistema de posicionamiento probabilístico para robots móviles 2D. Implementa un método de localización de Monte Carlo adaptativo (o muestreo KLD) que utiliza filtros de partículas para rastrear la pose del robot en un mapa conocido.

plan de ruta

La navegación es el proceso en el que el robot se mueve del punto A al punto B. En este proceso, el robot necesita calcular la ruta de movimiento global de acuerdo con la posición del objetivo y, durante el movimiento, también necesita ajustar la ruta de movimiento de acuerdo con algunos obstáculos dinámicos que aparecen de vez en cuando hasta Para llegar al punto de destino, el proceso se denomina planificación de ruta. El paquete move_base se proporciona en ROS para implementar reglas de ruta.Este paquete de funciones se compone principalmente de dos planificadores:

Planificación de ruta global (gloable_planner)

De acuerdo con el punto de destino dado y el mapa global para lograr la planificación general de la ruta, use el algoritmo Dijkstra o A* para la planificación global de la ruta, calcule la ruta óptima, como la ruta global

Planificación local en tiempo real (local_planner)

En el proceso de navegación real, es posible que el robot no pueda funcionar de acuerdo con la ruta óptima global dada. Por ejemplo, cuando el robot está funcionando, ciertos obstáculos pueden aparecer en cualquier momento... El papel de la planificación local es utilizar ciertos algoritmos (enfoques de ventana dinámica) para evitar obstáculos y seleccionar la ruta óptima actual para cumplir con la ruta óptima global tanto como sea posible

La planificación de la ruta global es relativa a la planificación de la ruta local. La planificación de la ruta global se centra en la realización global y macroscópica, mientras que la planificación de la ruta local se centra en la realización actual y microscópica.

control deportivo

El conjunto de funciones de navegación asume que puede publicar mensajes del tipo geometric_msgs/Twist sobre el tema "cmd_vel", que transmiten comandos de movimiento basados ​​en el sistema de coordenadas base del robot. Esto significa que debe haber un nodo suscrito al tema "cmd_vel", que convierte los comandos de velocidad de este tema en comandos de motor y los envía.

advertencia ambiental

Percibe la información del entorno circundante, como: cámara, lidar, codificador... La cámara y el lidar se pueden utilizar para percibir la información de profundidad del entorno externo.El codificador puede detectar la información de velocidad del motor y luego puede obtener la velocidad información y generar información del odómetro.

En el conjunto de paquetes de funciones de navegación, la percepción ambiental también es una implementación de módulo importante, que proporciona soporte para otros módulos. Otros módulos como: SLAM, amcl, move_base necesitan basarse en la conciencia ambiental.

Sistema de coordenadas para la navegación

Introducción

El posicionamiento es una de las implementaciones importantes en la navegación. El llamado posicionamiento consiste en referirse a un determinado sistema de coordenadas (por ejemplo: crear un sistema de coordenadas con el punto de inicio del robot como origen) y marcar el robot en este sistema de coordenadas. . El principio de posicionamiento parece simple, pero este sistema de coordenadas no existe objetivamente, y no podemos determinar la pose del robot desde la perspectiva de Dios. La realización del posicionamiento depende del propio robot. El robot necesita deducir inversamente el origen del sistema de referencia y calcular la relación relativa del sistema de coordenadas Hay dos formas comunes de implementar este proceso:

  • Posicionamiento a través del odómetro: recopile la información de velocidad del robot de vez en cuando para calcular y publicar la relación relativa entre el sistema de coordenadas del robot y el sistema de referencia principal.
  • Posicionamiento a través de sensores: recopile información del entorno externo a través de sensores, calcule y libere la relación relativa entre el sistema de coordenadas del robot y el sistema de referencia principal a través de la coincidencia.

Ambos enfoques se utilizan con frecuencia en la navegación.

características

Ambos métodos de posicionamiento tienen sus propias ventajas y desventajas.

Posicionamiento del odómetro:

  • Pros: La información de posicionamiento del odómetro es continua sin saltos discretos.
  • Desventajas: hay un error acumulativo en el odómetro, que no es propicio para el posicionamiento a larga distancia o a largo plazo.

Posicionamiento de sensores:

  • Ventajas: posicionamiento más preciso que el odómetro;
  • Desventajas: habrá saltos en el posicionamiento del sensor y la precisión de posicionamiento del sensor se reducirá considerablemente cuando el sensor se coloque en un entorno con pocos marcadores.

Las ventajas y desventajas de los dos métodos de posicionamiento son complementarias y generalmente se usan en combinación.

Transformación del sistema de coordenadas

En las dos implementaciones de posicionamiento anteriores, el sistema de coordenadas del robot generalmente usa el sistema de coordenadas raíz (base_link o base_footprint) en el modelo de robot. Cuando se coloca el odómetro, el sistema de coordenadas principal generalmente se llama odom. Si el sensor se usa para el posicionamiento, el sistema de referencia padre es generalmente Llámalo un mapa. Cuando los dos se usan en combinación, tanto map como odom son el padre del sistema de coordenadas raíz del modelo de robot, que no se ajusta al principio de "herencia única" en la transformación de coordenadas, por lo que la relación de conversión generalmente se establece como: mapa -> fatalidad -> base_link o base_footprint.

Descripción de las condiciones de navegación

La implementación de la navegación tiene ciertos requisitos en términos de hardware y software, y debe prepararse con anticipación.

hardware

Aunque el conjunto de funciones de navegación está diseñado para ser lo más general posible, aún existen tres limitaciones principales de hardware al usarlo:

  1. Está diseñado para robots con ruedas de accionamiento diferencial. Supone que el chasis está controlado por un comando de movimiento ideal y puede lograr el resultado esperado. El formato del comando es: componente de velocidad x, componente de velocidad y, componente de velocidad angular (theta).

Requiere un lidar de una sola línea montado en el chasis. Este lidar se usa para construir mapas y localización.

El conjunto de funciones de navegación se desarrolló para robots cuadrados, por lo que los robots cuadrados o redondos funcionarán mejor. También funcionará en robots de cualquier forma y tamaño, pero los robots más grandes tendrán dificultades para atravesar espacios reducidos.

software

Antes de implementar la función de navegación, es necesario crear algunos entornos de software:

No hace falta decir que ROS debe instalarse primero

La navegación actual se basa en el entorno de simulación, primero asegúrese de que la simulación del sistema de robot en el capítulo anterior se pueda ejecutar normalmente

En el entorno de simulación, el robot normalmente puede recibir el mensaje / cmd_vel y publicar el mensaje del odómetro, y el mensaje del sensor también se libera normalmente, es decir, el control de movimiento y la percepción ambiental en el módulo de navegación se completan.

En la implementación de la navegación de seguimiento, nos enfocamos principalmente en: usar SLAM para dibujar mapas, servicios de mapas, autoposicionamiento y planificación de rutas.

Supongo que te gusta

Origin blog.csdn.net/weixin_42990464/article/details/131889335
Recomendado
Clasificación