Informes del segundo Meetup ROS sobre navegación de robots


El 30 de noviembre de 2019, se llevó a cabo el segundo ROS Russian MeetUp, organizado por el Laboratorio de Robótica Sberbank, que reunió a más de 200 desarrolladores de ROS. En este artículo, hemos hecho una selección de las presentaciones más interesantes de este MeetUp sobre navegación de robots.

Muy pronto, el 18 de abril, tendrá lugar el próximo ROS MeetUp, ¡aún más ambicioso e interesante! ¡Coronavirus no nos permite reunirnos en persona, pero nada nos impide reunirnos para una conferencia en línea! Invitamos a todos los colegas a asistir en línea como oyentes y oradores. Los detalles de la transmisión se enviarán a los participantes registrados, la inscripción está abierta, enlace aquí , la participación es gratuita. Y le recordamos que puede encontrar desarrolladores ROS de ideas afines en Rusia, descubra las últimas noticias ROS en nuestro canal de telegramas de la comunidad ROS Rusia . Ya hemos publicado el anuncio completo del programa y parte de los informes del pasado MeetUp , y hoy compartiremos tres informes más interesantes.

¡Entonces vamos!

"Localización del robot utilizando marcadores ARUCO"


Autor del informe: Alexey Budyakov



Diapositivas de presentación

Este informe examina en detalle uno de los componentes importantes del subsistema de navegación: la ubicación por marcadores.

La introducción destaca los principios y conceptos básicos de los métodos de visión por computadora que permiten a los robots móviles navegar a través de marcadores fiduciarios: imágenes especiales diseñadas para ser reconocidas como puntos de referencia. Por lo general, tienen un alto contraste por sí mismos y contra cualquier fondo posible, optimizados para el reconocimiento al escanear en ángulo y con poca luz. Como marcadores, puede utilizar logotipos primitivos (por ejemplo, "correctores" en los costados de la aeronave), sistemas de codificación de datos listos para usar (DataMatrix, QR), sin embargo, en robótica se utilizan sistemas de marcadores especialmente diseñados, la mayoría de las veces en forma de imágenes en blanco y negro. Uno de ellos es ArUco, que le permite crear marcadores de píxeles con varios valores de granularidad (de 4 * 4 a 7 * 7) y, a diferencia de un código QR,el reconocimiento de lo que lleva varias decenas de milisegundos, permite encontrar y detectar un marcador con costos computacionales mínimos. El informe examinó el camino desde la detección de un marcador en una imagen hasta el cálculo de la posición de un robot en relación con un marcador, y consideró las ventajas de usar el módulo de reconocimiento de marcadores ArUcoaruco_marker , parte de la popular biblioteca OpenCV de métodos de visión por computadora. Intentamos construir el informe de tal manera que ofreciera una comprensión general del proceso de navegación de marcadores sin profundizar en las matemáticas, además de enlaces a métodos de bibliotecas populares que implementan uno u otro método utilizado en la navegación.

“Descripción general del planificador de carreteras con banda elástica temporizada”


Autor del informe: Ivan Kornev



Diapositivas de presentación

El propósito del informe no solo era informar sobre el principio del programador local TimedElasticBand, sino también compararlo con otro programador ROS popular: DynamicWindowApproach, ya que es parte de la pila de navegación MoveBase y está configurado como el programador predeterminado en la pila de navegación para turtlebot3. Es con este planificador que los recién llegados, como regla, llegan a conocer primero.

Reportar contenido:

  1. Una breve descripción de la pila de navegación MoveBase que explica cómo funciona. Será útil para aquellos que no hayan tenido previamente tratos con este paquete, pero quieran entenderlo o entender qué papel juega el programador local en él.
  2. Dynamic Window Approach ( — DWA). DWA, . . , , . , . , DWA ROS , . - .
  3. TimedElasticBand ( — TEB). . :

    — , ( )
    — , ( , 0 255, , ROS Costmap) 255 ( 255 ) . , , . , , . . TEB , .
  4. . DWA TEB , ROS Wiki.


“Eurobot: ”


: ,



Diapositivas de presentación Los

vicecampeones de Rusia, el equipo de configuración , con el apoyo del Laboratorio de Robótica Sberbank, hablan sobre su propio sistema de navegación. El proceso de desarrollo se describe en un artículo extenso .

“Los robots viajan en un campo plano y la mayoría de los obstáculos se conocen de antemano, sin embargo, los oponentes insidiosos pueden intentar robar recursos (y a veces queremos comer un par de docenas de puntos extra), mientras que queremos conducir al punto deseado lo más rápido posible sin golpear los obstáculos. De una cámara externa en el campo, obtenemos datos sobre la posición del enemigo y sabemos dónde está ahora. Sin embargo, no es suficiente conocer su posición; debe poder utilizar esta información.

Hoy intentaremos conducir desde el punto A hasta el punto B sin tener que conducir a lo largo de la cola de un gato que se ha quedado dormido en el suelo. En particular, explicaremos cómo construimos una ruta y controlamos la velocidad del robot, así como cómo ejecutar todo en nuestra computadora ".

imagen

Tratando de sobrevivir con un poco de sangre


Al resolver este problema, puede llevar material preparado por escrito por profesionales, entonces no habrá tormento e invención de la próxima "bicicleta". Usamos una plataforma omnidireccional, por lo tanto, aunque hubo un intento de usar una cepilladora local ya preparada de ROS, por varias razones, encontramos que esto no era prometedor.

De las ventajas de la pila estándar, puede resaltar la disponibilidad de documentación y la capacidad de encontrar información en los foros. Puede leer más en el sitio web oficial con la documentación .

Es importante mencionar que los paquetes ROS se prueban con mayor frecuencia en plataformas de dos ruedas. Hemos optimizado el ensamblaje del sistema para omni-ruedas (este robot se llama holonómico: en cualquier momento puede moverse en cualquier dirección) al aumentar el ángulo de rotación disponible cuando se mueve hasta 360 grados. Nos pareció que era un truco sucio, pero otras opciones no eran universales. El planificador estándar resultó ser demasiado pesado y tenía muchos parámetros que nunca necesitaríamos

Planificador global


Lo primero que decidimos refinar a partir de los paquetes de navegación fue crear nuestro __ planeador global__ basado en el algoritmo theta *. En resumen, este es un A * modificado . Como de costumbre, un mapa conocido se divide en una cuadrícula de elementos (nodos) de forma ráster; el planificador busca constantemente el nodo principal, al que se puede acceder directamente, es decir en el camino hacia el cual no hay obstáculos. Esto le permite construir caminos convenientes y suavizarlos. Además se transfieren al planificador local.

imagen
Comparación de A * y theta *

Planificador local


El planificador local funciona mediante el método de descenso de gradiente en un campo potencial. La ruta del planificador global se utiliza como entrada . Además, en el planificador local, hay servicios internos para elegir el modo de construcción del camino. Hay dos modos de operación disponibles: el modo de desplazamiento de puntos a lo largo del gradiente, utilizando múltiples pases en el mapa, así como el modo de desplazamiento, en el que el incremento se calcula directamente en dos coordenadas, y el punto se mueve al borde de la zona segura.

Como resultado, decidimos usar el descenso de gradiente en un campo potencial basado en la ruta del planificador global'y. Resultó ser un algoritmo liviano y relativamente simple que nos satisfizo completamente con la calidad de la ruta recibida, el tiempo de operación y la cantidad de RAM utilizada (en la región de 100-150 mb), que es varias veces menor que la obtenida en las primeras iteraciones de desarrollo con paquetes estándar.

imagen
Ejemplo de desplazamiento de ruta del planificador local

Regulador de trayectoria


El último pero no menos importante elemento de la pila de navegación es el regulador de trayectoria . Es responsable de convertir la ruta del planificador local a la ruta y proporciona los valores de velocidad instantánea para el paso actual. La primera iteración en el camino hacia la nueva "trayectoria" fue el algoritmo para reemplazar el vector al que se mueve el robot. Se asignó como la suma de vectores a los siguientes tres nodos con coeficientes diferentes. La segunda iteración fue escribir el filtro Jerk mínimo a través de la construcción de un polinomio de 5º grado, donde las coordenadas x e y dependen del tiempo de llegada a cada punto.

imagen
La figura muestra un gráfico de una de las coordenadas en función del tiempo, así como la velocidad a lo largo de esta coordenada.

Si está interesado en desarrollar robots, módulos robóticos o componentes de software, si desea mostrar sus desarrollos o simplemente chatear con personas de ideas afines, ¡bienvenido a nuestro próximo Meetup en línea ROS el 18 de abril !

Autores del artículo: Albert Efimov, Alexey Burkov, Alexander Bogoslovsky, Oleg Urzhumtsev

All Articles