Cómo utilizar ROS MoveIt para construir rápidamente una plataforma de planificación del movimiento del robot
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. Las tres partes de un robot móvil. El llamado movimiento inteligente significa que el robot puede planificar su ruta 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. ¿Imagínese qué órganos se necesitan para que los humanos se muevan? 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 humana es que puede moverse en condiciones complejas de la carretera (como subir escaleras) y también puede imitar más vívidamente los movimientos humanos (como bailar). Las desventajas son: la estructura y la unidad de control son complejas. el costo es alto y el movimiento es lento. 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. El ojo del robot ocular es en realidad un sensor. Su función es observar el entorno circundante. Los ojos de robot adecuados incluyen radar láser, visión (cámara de profundidad, cámaras simples y dobles), auxiliares (alcance ultrasónico, alcance infrarrojo), etc. El cerebro del robot "cerebro" 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 basado en 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 información diversa (como detección, control, estado, planificación, etc.). Actualmente, ROS soporta principalmente el sistema operativo Ubuntu. Algunas personas preguntan 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 mapeo de posicionamiento, planificación de acciones, percepción, simulación, etc. ROS (capa inferior) 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. Por lo tanto, controlar el movimiento del robot implica principalmente convertir la velocidad lineal y la velocidad angular en la velocidad del robot. Ruedas izquierda y derecha Luego, a través del diámetro de la rueda y el espacio entre las ruedas, se puede convertir la velocidad lineal y la velocidad angular se convierte en la velocidad de las ruedas izquierda y derecha. Una cuestión clave aquí es la selección del codificador y el ajuste de velocidad del pid.
Selección del 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 las salidas A y B separadas 90 grados, lo que puede evitar la fluctuación. El sistema antivibración puede hacer que el cálculo del kilometraje sea más preciso en el futuro. El control de velocidad de las ruedas izquierda y derecha se logra mediante retroalimentación del codificador de rueda y ajuste en tiempo real del PMW del motor a través de PID. Calcula el odómetro del coche (odom) en tiempo real y obtén cambios en la posición de movimiento del coche. El codificador calcula el cambio de posición del automóvil calculado. 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 de mapas de construcción propia. Para mejorar la precisión, es posible que se necesiten otros equipos, como lidar, que puedan realizar detección y corrección secundaria. El formato de almacenamiento de los datos LIDAR tendrá primero un rango de tamaño y no será válido si excede el rango. 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. El escaneo LiDAR de una forma estática en realidad no tiene sentido. El significado 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, que se llama LaserScan. Especifica el alcance efectivo del láser, el ángulo en el que se muestrean los puntos de escaneo y el valor de medición para 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/escaneo en datos de mapas ráster, en los que el negro representa obstáculos, el blanco representa áreas en blanco, que se pueden pasar sin problemas, y el gris: desconocido. áreas. 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í; . 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 u otros problemas, y está caminando torcido. En este caso, el mapa dibujado también puede estar 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 o utilizar lidar y ultrasonido para el procesamiento auxiliar. El mapa de ROS está dividido en varias capas. Puedo colocar varios lidars a diferentes alturas para apilarlos 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. Si el posicionamiento del robot es exitoso tiene mucho que ver con las características del mapa. Las características son obvias, entonces el robot puede determinar fácilmente su propia ubicación. Si hay un problema que es difícil de localizar, es posible que necesite que alguien especifique la posición inicial, o agregue 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 la planificación de ruta local se realizará 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 es diferente a la de un robot de servicio. Un robot de barrido puede tener que cubrir completamente un mapa con esquinas, mientras que un robot de servicio se concentra principalmente en una zona determinada. Camino o el camino más corto de planificación, esta parte es la mayor carga de trabajo de ROS. La planificación de rutas varía 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, crearemos nuestra propia planificación de rutas. Descripción del robot y transformación del sistema de coordenadas Al navegar, las áreas que se pueden pasar dependen de la forma del robot y otra información. ROS utiliza URDF (UnifiedRobotDescriptionFormat) 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 ubicación de instalación del lidar afectarán la transformación del sistema de coordenadas. La premisa que sigue el sistema de coordenadas es que cada cuadro solo puede tener un cuadro principal, y luego se hacen algunos ojos o conexiones hacia arriba. La posición de instalación del lidar afecta directamente 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. En última instancia, el sistema de coordenadas de ROS se reduce a tres marcos estándar que pueden simplificar muchos problemas comunes de la robótica: 1) Marcos globalmente precisos, pero localmente discontinuos ('mapa') 2) Marcos globalmente inexactos, pero localmente suaves ('odom') ") 3) El propio marco del robot ("base_link"), varios 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 debido a que "cada marco solo puede tener un marco principal", entonces hay Solo puede haber un nodo (como robot_pose_ekf fusionado con multisensor) para publicar la relación de coordenadas entre base_link y el propio sistema de coordenadas de Baselink, debido a que diferentes componentes están instalados en diferentes ubicaciones del robot, deben corresponder al sistema de coordenadas de baselink. Debido a que todos los sensores se "ven" desde la perspectiva del robot, algunos amigos me preguntaron que cuando el lidar está construyendo un mapa, el mapa se estropea después de que el automóvil se mueve. Esto se debe al sistema de coordenadas del chasis del automóvil y a las coordenadas de. El sistema lidar no está calibrado con precisión. La relación entre el mapa y el odom se debe a que el movimiento del automóvil requiere una conexión local. Por ejemplo, cuando el automóvil avanza, sigue acumulando. El mapa juega un papel global y discontinuo. Después de LiDAR y la correspondencia del mapa, el cambio del sistema de coordenadas es un punto importante en la transformación del sistema de coordenadas, es decir, cada marco tiene solo un marco principal y, a veces, ambas coordenadas están relacionadas con él, A está asociada con B y B está asociada con C, en lugar de que B/C estén asociados con A. La relación padre-hijo de los tres marcos de coordenadas es la siguiente: mapa–. >odom–>base_link. De hecho, tanto map como odom deben estar asociados con base_link. Sin embargo, para cumplir con el principio de "cada marco solo puede tener un marco principal", según la relación entre map y base_link. odom->base_link, la relación de coordenadas entre mapa y odom se calcula y publica. La relación de coordenadas de mapa->base_link es calculada y publicada por el nodo de odometría, pero no se publica. calculado recibiendo la relación de coordenadas de odom->base_link. Luego publíquelo. Aún puede ejecutar sin LiDAR, pero debe realizar una evasión de obstáculos simple según el mapa preestablecido. P: ¿Hay alguna mejora en el rendimiento en tiempo real? ROS? R: ¿Hay alguna mejora en tiempo real? Mirando el diseño de ROS2.0, el progreso de ROS2.0 en realidad se divulga en línea, pero de hecho su progreso aún está lejos de ser una aplicación práctica. Será estable en la segunda mitad de este año, pero puede estudiar su código. Ha mejorado enormemente la administración de memoria, la administración de subprocesos y el rendimiento en tiempo real. 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.