Red de conocimiento informático - Conocimiento informático - Cómo diseñar un robot móvil basado en ROS

Cómo diseñar un robot móvil basado en ROS

En los últimos años, han comenzado a surgir varios robots móviles, ya sean con ruedas o sobre orugas, la tarea principal es cómo hacer que los robots móviles se muevan. Para que un robot realice una serie de funciones como la percepción ambiental, el control del brazo robótico y la planificación de la navegación, requiere el soporte de un sistema operativo, y ROS es una de las plataformas de software más importantes. el campo de la investigación científica.

Sin embargo, no hay muchos libros sobre ROS y hay incluso menos comunidades de aprendizaje disponibles en China. Esta clase abierta sobre innovación dura le mostrará cómo utilizar ROS para diseñar robots móviles.

Invitado compartido Li Jinbang: fundador y director ejecutivo de EAI Technology, graduado del Instituto de Tecnología de Beijing con una maestría. Tiene muchos años de experiencia en la investigación y el desarrollo de tecnología subyacente de Linux en los departamentos de tecnología de NetEase, Snowball y Tencent. En 2015, cofundó EAI Technology, responsable de la investigación y el desarrollo de algoritmos SLAM y el desarrollo de productos de software de navegación y posicionamiento relacionados. EAI Technology se centra en la movilidad de robots y proporciona plataformas de movilidad de robots, algoritmos Slam y LIDAR de alto rendimiento para el consumidor.

Tres partes de los robots móviles

La llamada movilidad inteligente significa que el robot puede planificar rutas de forma autónoma, evitar obstáculos y llegar a su destino en función de los cambios en el entorno.

Los robots simulan diversos comportamientos humanos. ¿Imaginas qué órganos se necesitan para que una persona se mueva? Primero, use sus ojos para observar el entorno circundante, luego use su cerebro para analizar cómo caminar para llegar al destino, luego use sus piernas para caminar y repita hasta llegar a la dirección de destino. Si un robot quiere lograr un movimiento inteligente, también requiere la estrecha cooperación de sus ojos, cerebro y piernas.

Piernas

Las "piernas" son la base del movimiento del robot. Las "piernas" de un robot no se limitan a patas de tipo humano o animal, también pueden ser ruedas, orugas, etc. Las partes que permiten que el robot se mueva pueden denominarse generalmente "piernas".

La ventaja del tipo de pierna similar a la humana es que puede moverse en condiciones complejas de la carretera (como subir escaleras) y también puede imitar movimientos humanos (como bailar) más vívidamente. La estructura y la unidad de control son relativamente pequeñas, complejas, de alto costo, de movimiento lento, etc.

Por lo tanto, la mayoría de los robots móviles son robots con ruedas. Sus ventajas son el diseño simple de las ruedas, el bajo costo y el movimiento rápido. También existen muchos tipos de vehículos de ruedas: vehículos de equilibrio de dos ruedas, de tres, de cuatro y de varias ruedas, etc. Actualmente, la más económica y práctica son dos ruedas motrices + una rueda universal.

Ojos

Los ojos del robot son en realidad sensores. Su función es observar el entorno circundante. Los ojos de robot adecuados incluyen lidar, visión (cámara de profundidad, cámaras simples y dobles), auxiliares (alcance ultrasónico, alcance infrarrojo), etc.

"Cerebro"

El cerebro del robot se encarga de recibir los datos transmitidos por los "ojos", calcular la ruta en tiempo real y ordenar a las piernas que se muevan.

De hecho, se trata de convertir lo que ves en lenguaje de datos. Una serie de cuestiones como cómo describir datos y cómo implementar la lógica de procesamiento. El sistema ROS nos proporciona un buen marco de desarrollo.

Introducción a ROS

ROS es un sistema operativo construido sobre Linux. Su predecesor fue un proyecto establecido por el Laboratorio de Inteligencia Artificial de Stanford para respaldar los robots inteligentes de Stanford. Proporciona principalmente algunos servicios estándar del sistema operativo, como abstracción de hardware, control de dispositivos subyacentes, implementación de funciones comunes, mensajes entre procesos y gestión de paquetes de datos.

ROS se basa en una arquitectura gráfica, de modo que los procesos en diferentes nodos pueden recibir, publicar y agregar diversa información (como detección, control, estado, planificación, etc.). Actualmente, ROS soporta principalmente el sistema operativo Ubuntu.

Algunas personas preguntaron si ROS se puede instalar en una máquina virtual. En términos generales, es posible, pero recomendamos instalar un sistema dual y usar Ubuntu para ejecutar ROS exclusivamente.

De hecho, ROS se puede dividir en dos capas: la capa inferior es la capa del sistema operativo descrita anteriormente, y la capa superior son los diversos paquetes de software aportados por la amplia base de usuarios para implementar diferentes funciones, como. como mapeo de posicionamiento, planificación de acciones y percepción, simulación, etc. ROS (bajo nivel) utiliza la licencia BSD, todo software de código abierto, y se puede utilizar con fines comerciales y de investigación de forma gratuita, mientras que los paquetes de alto nivel proporcionados por el usuario utilizan muchas licencias diferentes.

Utilice ROS para realizar el movimiento del robot

Para el espacio bidimensional, se puede utilizar velocidad lineal + velocidad angular para realizar el movimiento aleatorio de máquinas con ruedas.

Velocidad lineal: describe la velocidad a la que el robot se mueve hacia adelante y hacia atrás

Velocidad angular: describe la velocidad angular a la que gira el robot

Entonces la principal Lo que se debe controlar el movimiento del robot es controlar la velocidad lineal y la velocidad angular. Convertir a la velocidad de las ruedas izquierda y derecha. Luego, a través del diámetro de las ruedas y el espaciado de las ruedas, la velocidad lineal y la velocidad angular se pueden convertir en velocidades. de las ruedas izquierda y derecha.

Un tema clave aquí es la elección del codificador y el ajuste de velocidad del pid.

Selección de codificador: Generalmente, el codificador y la rueda están en el mismo eje. Actualmente, si la velocidad es inferior a 0,7 m/s, está bien elegir un codificador entre 600 teclas y 1200 teclas. Sin embargo, cabe señalar que es mejor utilizar un codificador de dos cables, con salidas A y B de dos cables. Las salidas en las direcciones A y B están separadas 90 grados para evitar fluctuaciones. El sistema antivibración puede hacer que el cálculo del kilometraje sea más preciso en el futuro.

La velocidad de las ruedas izquierda y derecha se controla mediante retroalimentación del codificador de rueda y ajuste en tiempo real del PMW del motor mediante PID. Calcula el odómetro del coche (odom) en tiempo real y obtén cambios en la posición de movimiento del coche.

El cambio de posición calculado del automóvil lo calcula el codificador. Si las ruedas patinan, etc., el cambio calculado y el cambio real pueden ser diferentes. Para resolver este problema, en realidad necesitamos ver qué problema es más grave. Es más importante caminar 5 metros y sólo caminar 4,9 metros, o caminar 180 grados y sólo caminar 179 grados.

De hecho, la imprecisión del ángulo tiene un mayor impacto en el coche. En términos generales, la precisión de la distancia lineal del automóvil se puede controlar en centímetros y la precisión del ángulo se puede controlar entre el 1% y el 2%. Debido a que el ángulo es un parámetro importante, muchas personas usan giroscopios para corregirlo.

Entonces, a veces la gente pregunta qué tan preciso es el automóvil. De hecho, la precisión es relativamente alta ahora, problemas como el deslizamiento son inevitables y es imposible lograr una precisión del 100%.

La distancia y el ángulo actuales del automóvil son aceptables para la navegación por mapas de construcción propia. Para mejorar la precisión, es posible que se necesiten otros equipos como ayuda, como un radar láser. Se puede realizar una inspección secundaria para realizar correcciones. .

El formato de almacenamiento de los datos LIDAR primero tendrá un rango de tamaño. Si excede el rango, no será válido. También hay varios puntos de muestreo, de modo que el lidar puede indicar a cuántos grados de distancia hay un punto de muestreo.

Además, las últimas Intensidades les dicen a todos la precisión de los datos, porque lidar también toma el punto más alto de los datos, por lo que tiene cierta precisión. El ppt anterior en realidad usa lidar para escanear la forma de una pared.

En realidad, no tiene sentido que LIDAR escanee una forma estática. El propósito del mapeo por radar es en realidad construir un mapa de la habitación.

¿Cómo dibujar un mapa?

El primer paso es recopilar datos oculares:

Para lidar, ROS define una estructura de datos dedicada en el paquete sensor_msgs para almacenar información relacionada con mensajes láser, llamada LaserScan.

Especifica el alcance efectivo del láser, el ángulo en el que se muestrea el punto de escaneo y el valor de medición de cada ángulo. El escaneo LiDAR en tiempo real de 360 ​​​​grados puede medir la distancia, la forma y los cambios en tiempo real de los obstáculos en tiempo real.

El segundo paso es convertir los datos vistos por los ojos en un mapa:

El gmapping de ROS convierte los datos lidar/escaneado en datos de mapas rasterizados, donde el negro representa obstáculos y el blanco representa el área en blanco, por la que se puede pasar sin problemas, gris: territorio desconocido. A medida que el robot se mueve, el lidar puede observar si hay obstáculos en el mismo lugar en múltiples direcciones diferentes. Si el umbral para la existencia de obstáculos excede el valor establecido, se calibra que hay un obstáculo aquí; obstáculo. Un mapa rasterizado representa las dimensiones de obstáculos, áreas en blanco y áreas desconocidas en diferentes escalas de grises. Facilite el posicionamiento y la navegación del siguiente paso.

A veces habrá una pared muy recta, pero el robot no puede caminar en línea recta. El problema en este momento puede ser que las ruedas del robot patinan y otros problemas, y camina torcido y el mapa está dibujado. En este momento también estará mal. Puede que esté torcido. Esta situación se puede evitar añadiendo un giroscopio. Debido a las características del lidar, a veces encontrar superficies negras o espejadas provocará una medición imprecisa.

La solución actual es no utilizar lidar, ni utilizar lidar y ondas ultrasónicas para el procesamiento auxiliar.

El mapa de ROS está dividido en varias capas. Puedo colocar varios lidars a diferentes alturas para superponerlos y dibujar un mapa al mismo tiempo. Una vez completado el dibujo del mapa, se puede realizar el posicionamiento y la navegación.

¿Cómo localizar y navegar?

Posicionamiento: En realidad es un posicionamiento probabilístico, no una precisión del 100%. Según la forma de los obstáculos circundantes escaneados por el lidar, se compara con la forma del mapa para determinar la probabilidad de la ubicación del robot.

El éxito del posicionamiento del robot tiene mucho que ver con la Características del mapa Si las características regionales son obvias, entonces es fácil para el robot determinar su posición. Si hay un problema que es difícil de localizar, es posible que necesite que alguien especifique la posición inicial o agregue un LED para la identificación de la ubicación u otro equipo de posicionamiento para ayudar en el posicionamiento.

Actualmente, cada vez más tecnologías de visión utilizan el color o la luz.

Navegación: planificación de ruta global + ajuste local (evitación dinámica de obstáculos)

La navegación es en realidad posicionamiento global. Primero se planifica en función del mapa existente, pero se realizarán ajustes locales durante. la operación. Pero en general seguimos el camino global.

La carga de trabajo en la navegación sigue siendo muy grande. Por ejemplo, la planificación de rutas de una máquina barredora y la planificación de rutas de un robot de servicio pueden tener que cubrir completamente un mapa con esquinas. mientras que el robot de servicio se centra principalmente en áreas designadas. Se planifica el camino o el camino más corto. Esta parte es la mayor carga de trabajo de ROS.

La planificación de rutas cambia mucho según los diferentes escenarios de aplicación, pero ROS proporciona un paquete básico de desarrollo de planificación de rutas. Sobre esta base, haremos nuestra propia planificación de rutas.

Descripción del robot y transformación del sistema de coordenadas

Durante la navegación, las áreas que se pueden pasar dependen de información como la forma del robot. ROS utiliza URDF (Formato de descripción de robot unificado) para describir. El tamaño y el diseño del hardware del robot, como la posición de las ruedas, el tamaño del chasis y la posición de instalación del lidar, todo lo cual afectará la conversión del sistema de coordenadas.

La premisa que sigue el sistema de coordenadas es que cada cuadro solo puede tener un cuadro padre, y luego se realizan algunos ojos o conexiones hacia arriba.

La posición de instalación del lidar afecta directamente a los datos de salida de /scan. Por lo tanto, las posiciones relativas del lidar y el robot requieren una transformación de coordenadas para convertir los datos del lidar en datos desde la perspectiva del robot.

El sistema de coordenadas de ROS se reduce en última instancia a tres marcos estándar que pueden simplificar muchos problemas comunes de la robótica:

1) Marcos globalmente precisos, pero localmente discontinuos ("mapa")

2) Marco globalmente inexacto, pero localmente suave ('odom")

3) Marco propio del robot ('base_link")

Múltiples sensores (como lidar, cámara de profundidad) y acelerómetro giroscópico, etc.) pueden calcular la relación de coordenadas entre base_link y odom, pero como "cada cuadro solo puede tener un cuadro principal", solo puede haber un nodo (como la fusión de múltiples sensores robot_pose_ekf) Publicar la relación de coordenadas entre base_link y odom.

El propio sistema de coordenadas del enlace base, debido a que se instalan diferentes componentes en diferentes ubicaciones del robot, debe corresponder al sistema de coordenadas del enlace base, porque todos los sensores deben ser "ver". desde la perspectiva del robot.

Algunos amigos me preguntaron que cuando el lidar estaba construyendo un mapa, el mapa se estropeó después de que el automóvil se movió, esto se debió al sistema de coordenadas del chasis del automóvil y a las coordenadas del lidar. El sistema de coordenadas no está calibrado con precisión.

La relación entre el mapa y odom

Porque el movimiento del automóvil requiere una conexión local. Por ejemplo, cuando el automóvil avanza. , sigue sumando. Este es el kilometraje. La función del mapa es global y discontinua.

Si quieres aprender ROS, el cambio de sistema de coordenadas también es un punto importante. El marco tiene solo un marco principal. A veces, si ambas coordenadas están asociadas con él, A está asociado con B y B está asociado con C, en lugar de que B y C estén asociados con A.

La relación padre-hijo de los tres marcos de coordenadas es la siguiente:

map –> odom –> base_link

De hecho, tanto map como odom deberían estar asociado con base_link, pero para adherirse al principio de "cada marco solo puede tener un marco principal", según la relación entre el mapa y base_link y odom->base_link, calcule la relación de coordenadas entre el mapa y odom y publíquela.

odom->La relación de coordenadas de base_link es calculada y publicada por el nodo de odometría.

mapa -> La relación de coordenadas de base_link es calculada por el nodo de posicionamiento, pero no se publica. En cambio, la relación de coordenadas del odom->base_link recibido se utiliza para calcular la relación de coordenadas de mapa->. odom, y luego publicado.

Cuando solo hay un odómetro y no hay lidar, aún puedes correr, pero primero debes evitar los obstáculos según el mapa preestablecido.

Preguntas y respuestas maravillosas

P: ¿Hay alguna mejora en el rendimiento en tiempo real de ROS?

R: La mejora en tiempo real depende del diseño de ROS2.0. De hecho, el progreso de ROS2.0 se divulga en línea. Pero, de hecho, su progreso aún está lejos de la aplicación práctica. Al menos no alcanzará la estabilidad en la segunda mitad de este año. Sin embargo, puede estudiar su código. Ha mejorado enormemente la administración de memoria, la administración de subprocesos y el tiempo real. actuación. .

P: vSLAM tiene altos requisitos de memoria y CPU. En el proyecto real, ¿qué configuración de hardware utilizó el profesor Li? ¿Qué tamaño se puede hacer un mapa?

R: De hecho, por ahora todavía utilizamos la asistencia de sensores y lidar. Esto no tiene nada que ver con el tamaño del mapa, sino principalmente con la complejidad de los obstáculos del terreno.