Localización y control de un robot autónomo
Grado en Ingeniería Robótica
Trabajo Fin de Grado
Autor:
Carmen Ballester Bernabeu Tutor/es:
Fernando Torres Medina
Junio 2021
Localización y control de un robot autónomo
Autora:
Carmen Ballester Bernabeu
Tutor:
Fernando Torres Medina
Dpto. de Física, Ingeniería de Sistemas y Teoría de la Señal
ALICANTE, Junio 2021
Agradecimientos
Expresar mi más sincero agradecimiento a Fernando Torres Medina. En primer lugar, por ser un excelente tutor y mentor; pero, sobre todo, por la confianza depositada en mí, dándome la oportunidad de trabajar con él y crecer profesionalmente y como persona. Agradezco también a todos los integrantes del grupo AUROVA, tanto profesores como compañeros de laboratorio, que han convertido una estancia académica en una experiencia muy enriquecedora.
Agradecer a mi familia, pareja y amigos toda la paciencia y el cariño que han tenido conmigo durante estos cuatro años. En los días difíciles en los que perdía la vocación, me habéis recordado quién soy y todo lo que quiero hacer.
Dedicar este trabajo a todos mis compañeros de Grado, con mención especial a mi equipo:
Sheila, Adri, Ramón y Carlos. No existen palabras para expresar mi agradecimiento. Estoy segura de que sin haberme rodeado de gente tan increíble no habría podido llegar hasta aquí.
Por haber estado a mi lado apoyándome cuando nada funcionaba, por todas las veces que hemos celebrado las cosas que han salido bien, y por seguir haciéndolo siempre desde cada rincón del mundo.
Tabla de contenido
Índice de figuras ... iii
1. Introducción ... 1
1.1. Motivación ... 1
1.2. Justificación ... 2
1.2.1. Contextualización ... 2
1.2.2. Marco ... 2
1.3. Objetivos ... 3
1.4. Estructura ... 4
2. Introducción a la robótica móvil ... 5
2.1. Locomoción ... 5
2.2. Cinemática ... 8
2.2.1. Cinemática directa de un robot diferencial ... 9
2.2.2. Maniobrabilidad ... 10
2.2.3. Espacio de trabajo ... 12
2.3. Análisis del robot ... 13
3. Sistema de percepción ... 15
3.1. Estado del arte ... 15
3.2. Códigos QR ... 16
3.2.1. Detección de los códigos QR ... 18
3.3. Calibración de la cámara ... 20
3.3.1. Algoritmo de calibración ... 22
3.4. Corrección de la distorsión ... 24
4. Algoritmo de localización ... 27
ii
4.1. Estado del arte ... 27
4.2. Obtención de coordenadas ... 28
4.2.1. Coordenadas absolutas de la cámara ... 30
4.2.2. Coordenadas absolutas del robot ... 30
5. Algoritmo de control ... 33
5.1. Estado del arte ... 33
5.1.1. Controlador ... 33
5.1.2. Generador de trayectorias ... 34
5.2. Algoritmo de Dijkstra ... 35
5.2.1. Implementación del algoritmo de Dijkstra ... 37
5.3. Controlador proporcional ... 38
6. Integración en Ros ... 43
6.1. Simulación ... 44
6.1.1. qr_robot_description ... 44
6.1.2. qr_robot_gazebo ... 46
6.2. Localización ... 47
6.2.1. qr_robot_localization ... 47
6.3. Control ... 49
6.3.1. qr_robot_control ... 49
7. Pruebas y experimentación ... 53
7.1. Pruebas en Gazebo ... 53
7.2. Pruebas en real ... 62
8. Conclusiones ... 71
8.1. Trabajos futuros ... 72
Bibliografía ... i
Índice de figuras
Figura 2.1. Croquis del modelo diferencial con un punto de apoyo. ... 6
Figura 2.2. Esquema geométrico del modelo diferencial. ... 7
Figura 2.3. Croquis del modelo Ackerman. ... 7
Figura 2.4. Relación entre el sistema de referencia global y el local del robot. ... 8
Figura 2.5. Los cuatro tipos básicos de ruedas. ... 11
Figura 3.1. Esquema de las partes de un código QR. ... 17
Figura 3.2. Esquema de los módulos de un código QR. ... 17
Figura 3.3. Puntos de interés del código para el algoritmo. ... 18
Figura 3.4. Esquema descriptivo a alto nivel de los módulos de la librería. ... 19
Figura 3.5. Esquema del modelo de cámara pinHole. ... 20
Figura 3.6. Flowchart del proceso de calibración de la cámara. ... 23
Figuras 3.7. Ejemplos de detección de los keypoints en el patrón de calibración. ... 23
Figuras 3.8. Distorsión angular en las esquinas y el centro de la imagen. ... 25
Figuras 3.9. Corrección de la distorsión angular en la imagen. ... 25
Figura 4.1. Esquema del sistema de coordenadas del QR y de la imagen con los parámetros descritos. ... 29
Figura 4.2. Esquema de la transformación de coordenadas según el punto de interés... 31
Figura 4.3. Esquema de los sistemas de coordenadas de la tarea. ... 32
Figura 5.1. Representación gráfica de un ejemplo en el que se aplica el algoritmo de Dijkstra. ... 36
Figura 5.2. Representación gráfica de los errores. ... 40
Figura 5.3. Grafo imaginario construido con los códigos QR ... 41
Figura 6.1. Esquema de organización jerárquica de los paquetes de ROS creados. ... 43
Figura 6.2. Esquema de organización jerárquica del paquete de ROS qr_robot_description. ... 44
Figura 6.3. Modelo del robot y captura de las imágenes de la cámara en el entorno de simulación. ... 45
iv
Figura 6.4. Esquema de organización jerárquica del paquete de ROS qr_robot_gazebo. . 46
Figura 6.5. Ejemplo de entorno estructurado interior en Gazebo. ... 47
Figura 6.6. Esquema de organización jerárquica del paquete de ROS qr_robot_localization. ... 48
Figura 6.7. Resultados de la localización del robot en el entorno de simulación. ... 49
Figura 6.8. Esquema de organización jerárquica del paquete de ROS qr_robot_control. . 50
Figura 6.9. Esquema de comunicaciones de mensajes. ... 52
Figura 7.1. Representación del grafo en el entorno de simulación. ... 53
Figura 7.2. Gráfica de movimiento simulado ODE. ... 54
Figura 7.3. Gráfica del punto E del movimiento simulado ODE. ... 54
Figura 7.4. Gráfica de movimiento simulado ODF. ... 55
Figura 7.5. Gráfica del punto F del movimiento simulado ODF. ... 55
Figura 7.6. Gráfica de movimiento simulado ODG. ... 56
Figuras 7.7. Gráficas de los puntos D y G, respectivamente, del movimiento simulado ODG. ... 56
Figura 7.8. Gráfica de movimiento simulado ODH. ... 57
Figuras 7.9. Gráficas de los puntos D y H, respectivamente, del movimiento simulado ODH. ... 57
Figura 7.10. Gráfica de movimiento simulado OCOD. ... 58
Figuras 7.11. Gráficas de los puntos C y D, respectivamente, del movimiento simulado OCOD. ... 59
Figura 7.12. Gráfica de movimiento simulado ODFG. ... 59
Figuras 7.13. Gráficas de los puntos F y G, respectivamente, del movimiento simulado ODFG. ... 60
Figura 7.14. Gráfica de movimiento simulado ODHI. ... 60
Figuras 7.15. Gráficas de los puntos H e I, respectivamente, del movimiento simulado ODHI. ... 61
Figura 7.16. Gráfica de movimiento simulado ODFGD. ... 61
Figuras 7.17. Gráficas de los puntos F y G, respectivamente, del movimiento simulado ODFGD. ... 62
Figuras 7.18. Secuencia de movimiento real OD. ... 63
Figura 7.19. Gráfica de movimiento real OD. ... 64
Figuras 7.20. Gráficas de los puntos O y D, respectivamente, del movimiento real OD. .. 64
Figuras 7.21. Secuencia de movimiento real OC. ... 65
Figura 7.22. Gráfica de movimiento real OC. ... 66
Figura 7.23. Gráfica del punto C del movimiento real OC. ... 66
Figuras 7.24. Secuencia de movimiento real OCOD. ... 67
Figura 7.25. Gráfica del movimiento real OCOD. ... 68
Figuras 7.26. Gráficas de los puntos C y O, respectivamente, del movimiento real OCOD. ... 68
Figura 7.27. Gráfica del punto D del movimiento real OCOD. ... 69
1. Introducción
1.1. Motivación
En este trabajo se expone la implementación completa de un paradigma de navegación para robots móviles en áreas de trabajo estructuradas. Este paradigma incluye tanto un sistema de localización como uno de control que permiten que el robot se desplace con total autonomía por un entorno determinado indicando el punto inicial y el final.
El sistema de localización proporciona información de tres grados de libertad: dos coordenadas de posición y una de orientación (x, y, θ). Esta información se obtiene utilizando una cámara convencional y una serie de marcas autoidentificativas, en este caso códigos QR.
El sistema de control para el movimiento del robot se basa en una estructura de grafos, en la que cada código es un nodo y el robot se mueve entre las aristas de dichos nodos. Se utiliza un algoritmo de generación de trayectorias basado en búsqueda de caminos y un sistema de control proporcional global para el avance entre nodos.
Todo el desarrollo del trabajo se enfoca bajo una filosofía que ha sido denominada filosofía puente. La motivación principal es poner a disposición de otros investigadores y de la propia población un sistema autónomo robusto y sencillo a partir de componentes económicos y comunes de los que cualquiera puede disponer, para llevar los avances actuales de la robótica a los sectores necesitados sin la restricción económica propia de las técnicas más sofisticadas en robótica. Uno de los pilares fundamentales de esta filosofía es el desarrollo del paradigma en ROS, un software modular que permite la adaptación de los algoritmos a las especificaciones de hardware de cada robot, sin comprometer el código ni tener que realizar modificaciones mayores en el mismo.
El uso de robots móviles en entornos estructurados está actualmente ampliamente extendido en cualquier sector, desde transporte de mercancías y sistemas logísticos hasta robots domésticos. Una de las aplicaciones más prometedoras en este último ámbito es la de la combinación de plataformas robóticas móviles con brazos manipuladores que permiten
Localización y control de un robot autónomo
2
asistir a personas dependientes en sus propios hogares, como se puede observar en el modelo realizado por (Jain & Kemp, 2009). Este tipo de robótica asistiva es la mayor beneficiaria de la filosofía puente, ya que la relatividad de los costes respecto a la robótica industrial perjudica la integración de la robótica en los hogares; y es la principal motivación para realizar este paradigma de navegación autónoma móvil.
1.2. Justificación
1.2.1. Contextualización
El trabajo se ha realizado bajo el proyecto Manipulación Móvil para Entornos Exteriores no Estructurados (MOMUE) del Instituto Universitario de Investigación Informática, financiado por el Ministerio de Ciencia, Innovación y Universidades. Este proyecto ha sido desarrollado por el grupo de investigación de Automática, Robótica y Visión Artificial (AUROVA) de la Universidad de Alicante.
Dentro del proyecto MOMUE, este trabajo se ha llevado a cabo en función de Especialista Técnico y con puesto de Personal de Administración y Servicios en dicha universidad, cumpliendo un contrato temporal a media jornada.
1.2.2. Marco
El trabajo se realiza dentro de una línea investigadora sobre la robótica móvil, que es una de las principales disciplinas de la Ingeniería Robótica en la sociedad actual. En el grupo, se realizan diferentes estudios sobre la navegación en entornos dinámicos y no estructurados, el control de robótica móvil y la integración de la robótica móvil con otros campos de la robótica para poder cumplir tareas más complejas, como navegación por un entorno desconocido a la vez que se produce una identificación y agarre de objetos.
Dentro de las diferentes personas, estudiantes, doctorandos, profesores y personal técnico, existen varios sub-proyectos que comparten la filosofía de desarrollo de técnicas y algoritmos que ofrezcan robustez de resultados, previo estudio y comparación de los últimos avances en robótica.
1. Introducción
1.3. Objetivos
El principal objetivo del proyecto es desarrollar un sistema de navegación autónoma para robots móviles, condicionado por unas restricciones de sencillez y robustez para enfocar el trabajo a una filosofía accesible para cualquiera.
Para ello, es necesario subdividir el trabajo en dos áreas principales: localización y control.
- Implementar un sistema de localización basado en un código modular que permita obtener la posición del robot respecto al sistema de referencia global utilizando marcadores autoidentificados en el mundo 3D y una imagen, a partir de la relación entre dichas coordenadas. Utilizando esta información, corregir el error producido por el sistema de localización principal del robot, basado en sensores inerciales.
- Proponer una combinación entre un algoritmo de búsqueda de camino y un controlador lineal para la generación y el control de seguimiento de trayectorias, respectivamente.
Utilizar una filosofía totalmente modular para permitir la adaptación de estos algoritmos a cualquier otro sistema robótico.
- Integrar todos los algoritmos en el paradigma del sistema de operativo de ROS para favorecer la modularidad del código y la interconexión de los diferentes programas que contienen los algoritmos interconectados, así como con el propio robot.
- Modelar un mundo en Gazebo para evaluar los resultados en un amplio espacio doméstico en el que existen diferentes obstáculos estáticos cotidianos.
- Evaluar el comportamiento del robot y su funcionalidad tanto en el mundo simulado como en entornos reales que han sido adaptados para dichas pruebas.
Localización y control de un robot autónomo
4
1.4. Estructura
El trabajo está organizado en 8 capítulos, siguiendo el libro de estilo de la Escuela Politécnica Superior de la Universidad de Alicante. La organización del proyecto está basada en la distinción de las tareas que se han realizado para poder obtener finalmente los resultados, y se expone el proceso en el orden secuencial de realización de las tareas.
En el capítulo 2 se encuentra una introducción a la robótica móvil, definiendo los conceptos necesarios y explicando las técnicas más comunes de esta área de la robótica.
En el capítulo 3 está desarrollado el algoritmo de localización. Comenzando con una explicación de cómo funcionan los códigos QR y la librería utilizada para detectarlos.
Posteriormente, se explica el proceso de calibración de la cámara que es necesario. En el capítulo 4 se detalla tanto computacional como matemáticamente cómo se obtiene la posición del robot y la relación que existe entre los diferentes sistemas de referencia de la tarea.
En el capítulo 4 se encuentra el algoritmo de control. En primer lugar, se explica cómo funciona el algoritmo de búsqueda de camino y su implementación en el programa informático. Después, se analiza el controlador de trayectoria de forma matemática y se describe brevemente cómo implementarlo en función de si la posición se obtiene de un código QR o de la odometría de propio robot.
El capítulo 6 contiene la información acerca de cómo los diferentes algoritmos se integran en la ejecución en ROS, además de cómo se genera el modelo del entorno y del robot en el simulador de Gazebo.
En el capítulo 7 se analizan los resultados obtenidos y el funcionamiento general del robot, tanto en el entorno simulado como en el real. Por último, en el capítulo 8 se proponen trabajos futuros que no han estado al alcance este proyecto y se propone una conclusión final.
2. Introducción a la robótica móvil
2.1. Locomoción
La locomoción es el complemento de la manipulación. En la manipulación, el brazo robótico está fijado y mueve los objetos del entorno aplicando fuerza sobre ellos. En locomoción, el entorno está fijado y es el robot el que se mueve aplicando fuerza sobre este. En ambos casos, la literatura se centra tanto en el estudio de actuadores que generan fuerzas de interacción como en mecanismos que implementan las propiedades cinemáticas y dinámicas deseadas.
Los mecanismos de locomoción se utilizan para que los robots puedan moverse por su entorno. Debido a la gran variedad de diferentes formas de movimiento, la selección de la locomoción del robot es un elemento clave en el diseño del mismo. La mayoría de los mecanismos de locomoción se inspiran en la biología, a pesar de que replicar la naturaleza es complejo por varias razones, como por ejemplo la estructura celular o los sistemas de almacenamiento de energía.
Teniendo en cuenta estas limitaciones, las dos formas más comunes de locomoción en robótica móvil terrestre son vehículos con ruedas o con un pequeño número de piernas articuladas. Los vehículos que utilizan ruedas son más sencillos y adecuados para suelos planos, mientras que el uso de piernas articuladas requiere una mayor complejidad y grados de libertad y son más versátiles para desplazarse por ciertas superficies.
Se pueden definir una serie de problemas característicos que afectan a la locomoción en el sistema robótico móvil:
- Estabilidad: depende de una serie de parámetros como el número y la geometría de los puntos de contacto, el centro de gravedad, y los criterios de estabilidad dinámicos y estáticos. Otro aspecto que condiciona la estabilidad del sistema es la inclinación del terreno en el que opere el robot.
Localización y control de un robot autónomo
6
- Características del contacto del robot con el suelo: por ejemplo, el coeficiente de rozamiento entre las superficies, el ángulo de contacto, la forma y el tamaño de la trayectoria, etc.
- Tipo de entorno: si es estructurado o desestructurado, el medio de movimiento, la luz ambiental, etc.
Para el caso de estudio de este proyecto, se va a profundizar en el análisis de la locomoción de los robots móviles con ruedas. Las ruedas son la forma de locomoción más popular en robótica móvil, ya que permite obtener unos buenos resultados con una implementación mecánica relativamente sencilla y que mantiene el equilibrio. El principal problema de estos robots se centra en la tracción, la estabilidad y el control.
Algunos de estos robots son omnidireccionales, lo que significa que se pueden mover en cualquier dirección del plano del suelo independientemente de la orientación del robot. Las ruedas seleccionadas, su número y su configuración determinan la omnidireccionalidad del vehículo. Se puede encontrar un listado de las diferentes configuraciones en la Tabla 2.1 de (Siegwart, Nourbakhsh, & Scaramuzza, 2011), aunque las dos configuraciones más populares en robótica móvil son:
- Configuración diferencial: el robot consta de dos ruedas centradas y accionadas de forma independiente, consiguiendo el movimiento en base a la diferencia de velocidad entre ellas. A veces, se utilizan ruedas no accionadas como puntos de contacto para garantizar la estabilidad y el equilibrio del robot en cualquier circunstancia. Esta es la configuración del robot utilizado en el proyecto para las pruebas de los algoritmos.
Figura 2.1. Croquis del modelo diferencial con un punto de apoyo.
2. Introducción a la robótica móvil
Como podemos comprobar en el estudio realizado por (Samuel, Kavati, & Uddin, 2016), es posible establecer la relación entre la velocidad individual de cada rueda y la velocidad final del robot según las siguientes ecuaciones:
Figura 2.2. Esquema geométrico del modelo diferencial.
𝑣𝑟𝑜𝑏𝑜𝑡 = 𝑣𝑟+ 𝑣𝑙 2 𝜔𝑟𝑜𝑏𝑜𝑡 = 𝑣𝑟− 𝑣𝑙
𝐿
→
𝑣𝑙 = 2 𝑣𝑟𝑜𝑏𝑜𝑡 − 𝐿 𝜔𝑟𝑜𝑏𝑜𝑡 2
𝑣𝑟 = 2 𝑣𝑟𝑜𝑏𝑜𝑡+ 𝐿 𝜔𝑟𝑜𝑏𝑜𝑡 2
→
𝜔𝑙= 𝑣𝑙 𝑟𝑙 𝜔𝑟 = 𝑣𝑟 𝑟𝑟
(2.1)
- Configuración Ackerman: el robot consta de dos ruedas motorizadas en la parte trasera, unidas por el eje; y de dos ruedas direccionales también unidas por el eje en la parte delantera. Las ruedas traseras controlan la velocidad, y las direccionales el ángulo de giro. Es necesario tener en cuenta que las ruedas direccionales deben tener cada una un ángulo diferente para evitar que se produzcan efectos de deslizamiento. Esta configuración es muy común en los automóviles, ya que a pesar de que tiene una maniobrabilidad limitada, aumenta mucho la estabilidad lateral en giros de alta velocidad.
Figura 2.3. Croquis del modelo Ackerman.
Localización y control de un robot autónomo
8
Una consideración necesaria en el diseño de un robot móvil es que la maniobrabilidad y la controlabilidad son inversamente proporcionales. La implicación directa de este hecho es que los robots omnidireccionales son más complejos de controlar. En primer lugar, porque normalmente tienen más grados de libertad; y en segundo lugar porque es más complejo convertir la velocidad global deseada del robot en los comandos de velocidad independientes de cada rueda.
2.2. Cinemática
En este apartado se profundiza principalmente en el modelo diferencial, ya que el robot utilizado en el proyecto tiene dicha configuración. La cinemática es la forma de estudio más básica sobre cómo se comportan los sistemas. En robótica móvil, es necesario entender la cinemática del mismo para poder diseñar de forma apropiada tanto el hardware como el software del robot. En estos sistemas robóticos, cada rueda contribuye a la generación del movimiento global del robot a la vez que impone una serie de restricciones en el mismo, por ejemplo, evitando el movimiento lateral.
En el análisis cinemático del robot se modela con tres grados de libertad: dos para el movimiento lineal en el plano y uno para la orientación. Existen más grados de libertad debido a los ejes de las ruedas y las articulaciones de las mismas, pero en estos estudios no se tienen en consideración los grados de libertad internos del robot y sus ruedas, sino los del movimiento global generado.
Figura 2.4. Relación entre el sistema de referencia global y el local del robot.
2. Introducción a la robótica móvil
Por lo tanto, la posición P en el sistema de referencia global del robot se especifica con las coordenadas (x, y), y la diferencia angular entre el sistema de referencia global y el sistema de referencia local del robot θ.
𝜉𝐼 = [ 𝑥 𝑦 𝜃
] (2.2)
Para relacionar los sistemas de referencia global y local, se utiliza la matriz de rotación, que depende del ángulo θ existente entre ambos sistemas:
𝑅(𝜃) = [
𝑐𝑜𝑠 (𝜃) 𝑠𝑒𝑛 (𝜃) 0
−𝑠𝑒𝑛 (𝜃) 𝑐𝑜𝑠 (𝜃) 0
0 0 1
] (2.3)
La matriz de rotación relaciona el movimiento del robot entre el sistema de coordenadas global y el local siguiendo la relación:
𝜉𝑅̇ = 𝑅(𝜃) 𝜉𝐼̇ = [ 𝑐𝑜𝑠 (𝜃) 𝑠𝑒𝑛 (𝜃) 0
−𝑠𝑒𝑛 (𝜃) 𝑐𝑜𝑠 (𝜃) 0
0 0 1
] [ 𝑥̇
𝑦̇
𝜃̇
] (2.4)
2.2.1. Cinemática directa de un robot diferencial
En la mayoría de los casos, a partir de la relación establecida en (2.4) es posible obtener una ecuación que relacione el movimiento de cada rueda con el movimiento global del robot. En primer lugar, hay que determinar la contribución de cada rueda en el movimiento del robot en el sistema de referencia local. Para el desarrollo, el diámetro de las ruedas se expresa como d, el punto P se encuentra centrado entre las dos ruedas, por lo que cada rueda se encuentra a una distancia de L/2 de él. Además, se definen las derivadas de φl y φr como la velocidad de giro de cada rueda.
La contribución en el eje X de cada rueda será la contribución de esa rueda dividida por la mitad, por la posición intermedia del punto P.
𝑥̇𝑅𝑙 = 𝑑 𝜑̇𝑙 2 𝑥̇𝑅𝑟 = 𝑑 𝜑𝑟̇
2
(2.5)
Localización y control de un robot autónomo
10
La contribución de las ruedas en el eje Y siempre es cero porque no pueden desplazarse lateralmente. Por último, para obtener la aportación al cambio en la orientación del robot, se tiene que calcular la velocidad angular de cada rueda. Se puede obtener la velocidad angular a partir de la velocidad de giro de cada rueda, ya que cada rueda se está moviendo en ese instante siguiendo una trayectoria de arco circular de L radio, pero en sentidos opuestos.
𝜔𝑅𝑙 = 𝑑 𝜑̇𝑙 𝐿 𝜔𝑅𝑟 = −𝑑 𝜑̇𝑟
𝐿
(2.6)
Sumando la contribución individual de cada rueda en cada componente, se puede obtener el vector que relaciona la contribución individual de cada rueda con el movimiento global del robot:
𝜉̇𝐼 = 𝑅(𝜃)−1 [
𝑑 𝜑̇𝑙
2 +𝑑 𝜑𝑟̇ 0 2 𝑑 𝜑̇𝑙
𝐿 −𝑑 𝜑̇𝑟 𝐿 ]
(2.7)
2.2.2. Maniobrabilidad
La maniobrabilidad de un robot es la habilidad de poder moverse por el entorno. La restricción básica que limita la movilidad de un robot móvil es que cada rueda tiene que satisfacer sus propias restricciones de deslizamiento. Por ejemplo, en las ruedas fijas convencionales el movimiento está limitado al plano de rotación de dicha rueda y el punto de contacto con el suelo. Un desarrollo exhaustivo de las restricciones de cada tipo de rueda se puede encontrar en el trabajo de (Siegwart, Nourbakhsh, & Scaramuzza, 2011). Para calcular las restricciones cinemáticas de un robot con M ruedas, se parte de la idea de que cada rueda impone cero o más restricciones en el movimiento del robot, y una vez analizadas las restricciones impuestas por cada rueda, se combinan en función de su posición en el robot para obtener las restricciones globales de movimiento del robot. Por lo tanto, la maniobrabilidad de un robot no depende de su número de ruedas, sino del número de restricciones que impone cada una. Se pueden definir cuatro tipos de ruedas, tal y cómo se pueden ver en la Figura 2.5:
2. Introducción a la robótica móvil
a) Rueda estándar: puede ser fija a la estructura del robot (un grado de libertad) o direccionable, para permitir el giro de esta (dos grados de libertad).
b) Rueda de castor: con dos grados de libertad, el eje con el que se sujeta a la estructura del robot está desplazado respecto al eje de la rueda en sí.
c) Rueda Suiza: puede tener 90º o 45º, y ofrece una configuración de tres grados de libertad.
d) Rueda esférica: su realización técnica es compleja y no se utilizan mucho.
Figura 2.5. Los cuatro tipos básicos de ruedas.
Según el estudio realizado en (Siegwart, Nourbakhsh, & Scaramuzza, 2011), se puede concluir que sólo las ruedas estándar, tanto fijas como direccionables, imponen restricciones cinemáticas a la estructura del robot. Por lo tanto, este tipo de ruedas son las únicas que hay que tener en cuenta a la hora de calcular las restricciones cinemáticas del robot.
El grado de maniobrabilidad total de un robot se define como la combinación del grado de movilidad, que se obtiene de las restricciones de deslizamiento de las ruedas estándar fijas; y el grado de direccionamiento, que se obtiene del giro y la dirección de las ruedas estándar direccionables. Podemos ver en la siguiente Ecuación 2.8 esta relación, siendo δM
el grado de maniobrabilidad, δm el grado de movilidad y δs el grado de direccionamiento.
𝛿𝑀 = 𝛿𝑚+ 𝛿𝑠 (2.8)
Nótese que dos vehículos con la misma maniobrabilidad no tienen por qué ser equivalentes.
Localización y control de un robot autónomo
12
2.2.3. Espacio de trabajo
Otra forma de definir la maniobrabilidad para un robot es como el número de grados de libertad (Degrees os Freedom, DOF) controlables. También es posible definir grados de libertad de un entorno, como las diferentes componentes independientes que lo componen.
En el entorno en el que se mueven los robots móviles se definen tres DOFs: la posición dentro del plano XY y el giro respecto al eje Z. Por lo tanto, la posición del robot queda definida como un vector (x, y, θ).
A la hora de definir el espacio de trabajo de un robot es necesario en primera instancia examinar el espacio de velocidades admisibles. A partir de las restricciones cinemáticas del robot, el espacio de velocidades describe las componentes independientes del movimiento del robot que son controlables por éste. El número de dimensiones del espacio de velocidades es el número de velocidades que se pueden obtener de forma independiente, y también se suele denominar Differential Degrees of Freedom (DDOF). En un robot, el DDOF es siempre igual a su grado de movilidad. En el argot de la ingeniería robótica, muchas veces se utiliza DDOF o DOF de forma indistinta, pero en este trabajo se recalca la diferencia en pos de una mejor comprensión debido a las siguientes comparaciones que se van a realizar.
Es posible establecer una relación entre DDOF y DOF, tal y como se puede ver en la Ecuación 2.9. En conclusión, los DOF de un robot móvil determinan la habilidad del robot para alcanzar diferentes poses y están directamente relacionados con el entorno en el que se mueve, mientras que los DDOF determinan la habilidad para poder seguir varias trayectorias.
𝐷𝐷𝑂𝐹 ≤ 𝛿𝑀 ≤ 𝐷𝑂𝐹 (2.9)
En robótica móvil, se define como un robot holonómico aquel que tiene cero restricciones cinemáticas no holonómicas, y un robot no holonómico como aquel que tiene una o más restricciones cinemáticas no holonómicas. Una restricción cinemática holonómica es aquella que se expresa únicamente en función de las variables relativas a la posición;
mientras que una restricción cinemática no holonómica requiere el uso de una relación diferencial, como la derivada de una variable de posición, o, dicho de otro modo, no es posible integrarla para obtener restricciones sólo en función de la posición.
2. Introducción a la robótica móvil
Una forma alternativa de describir un robot holonómico es utilizando la relación entre sus grados de libertad diferenciales y los grados de libertad del entorno. Un robot el holonómico si y solo si se cumple que DDOF = DOF. El uso de robots móviles que contienen ruedas estándar, al imponer restricciones no holonómicas, hace que un robot móvil pueda alcanzar cualquier configuración de poses en su entorno, pero teniendo que realizar una serie de maniobras, ya que no puede controlar de forma independiente cada una de las componentes del entorno. Se cumple en los robots no holonómicos que DDOF < DOF.
2.3. Análisis del robot
Como se ha indicado en el Apartado 2.2, para el desarrollo del proyecto, se utiliza un robot diferencial con rueda auxiliar para garantizar el equilibrio. Este tipo de robots están formados por dos ruedas estándar fijas, por lo que se trata de robots no holonómicos con un grado de movilidad y de maniobrabilidad de dos, por lo que se tiene que: DOF = 3 y DDOF = δM = δm = 2, cumpliendo así la relación establecida para los robots no holonómicos. Las órdenes de control, por lo tanto, serán velocidades de giro para cada una de las ruedas.
Una vez analizada la locomoción y la cinemática general de los robots, y en concreto de la del robot escogido para probar los algoritmos desarrollados, en los siguientes capítulos se detalla el funcionamiento y el proceso de implementación de los algoritmos de navegación.
Si bien esto algoritmos pueden abstraerse del sistema robótico utilizado, un análisis previo del robot que se va a utilizar siempre es preciso para determinar los parámetros propios de diseño que tal vez tengan que ser modificados en función de la cinemática y locomoción del robot, sobre todo en la parte del controlador.
3. Sistema de percepción
3.1. Estado del arte
El uso de códigos QR para sistemas de localización y tracking en entornos interiores y estructurados se ha extendido considerablemente durante los últimos años. No existe ningún debate dentro de la comunidad científica acerca de la importancia de la navegación por el entorno de los robots móviles, ya que es la base para poder realizar otras tareas más complejas como exploración, transporte de mercancías, etc. En el ámbito de la navegación, no hay un estándar para una técnica, ya que dependiendo del tipo de entorno es más o menos conveniente utilizar una técnica u otra. Por ejemplo, en sistemas exteriores es más recomendable utilizar sistemas de localización GPS, mientras que en entorno subterráneos no es posible debido a la falta de infraestructura, y lo común es realizar mapas con sensores de proximidad. El entorno, por lo tanto, es la mayor variable a tener en cuenta a la hora de elegir el tipo de localización y el sistema de percepción del robot.
Partiendo de las fuertes restricciones impuestas por el entorno, existen además cantidad de sensores que permiten obtener información del mismo, como sistemas basados en imágenes, sensores de proximidad, sensores inerciales, etc. A pesar de que en la literatura existen una gran variedad de soluciones al problema de la localización, no existe una técnica ni un conjunto viables de ellas que permitan una respuesta robusta frente a todos los tipos de entornos posibles. Sin embargo, dentro del marco de este proyecto, en el que el entorno es controlado e interior, se utiliza un sistema de localización basado en códigos QR.
El uso de los códigos QR como marcadores autoidentificativos que permiten la localización del robot es una respuesta natural al entorno de interacción humano en el que se pretende que este tipo de robots actúe. El principal motivo es la facilidad de colocación y la mínima preparación del entorno. Tal y como se explica en (Yasuda, Martins, & Cappiabianco, 2020), para los AGVs (Automated Guided Vehicles) que usaban modelos más antiguos basados en marcadores era necesaria una gran planificación y adaptación del entorno para acomodar dichas marcas, y un cambio en el entorno requería una reconfiguración costosa de los
Localización y control de un robot autónomo
16
marcadores. Como consecuencia de estas restricciones en el entorno, únicamente se aplicaban en áreas industriales. Con los códigos QR se minimiza la preparación del entorno, ya que son versátiles y pueden colocarse en cualquier hueco previamente disponible. Como consecuencia, se minimiza la sensación de intrusión de estos marcadores en el entorno, y maximizar la comodidad del usuario con el sistema es clave en cualquier sistema robótico enfocado a trabajar con personas.
Otro motivo es la relación calidad-precio, ya que con en un simple trozo de papel se tiene codificada toda la información necesaria para el funcionamiento del algoritmo. Trabajar con elementos sencillos y presentes en la vida cotidiana de las personas permite que en el caso de que se produzca el deterioro de la propia marca, el usuario puede reemplazarla fácilmente y no prescindir del servicio aportado durante un gran periodo de tiempo. Esta sencillez, sin embargo, no minimiza la calidad de los resultados obtenidos, posteriormente expuestos, por lo que es una solución idónea para el uso de marcadores en la localización de robots móviles.
3.2. Códigos QR
Un código QR se define como una matriz de puntos bidimensional de colores contrarrestados, es decir, un código de barras bidimensional. Fue inventado a mediados de la década de los noventa, y permite codificar información que puede abarcar desde una simple cadena de caracteres a una imagen completa. Debido a que pueden almacenar cualquier información que se desee y que existen multitud de herramientas que son capaces de extraer esta información de forma eficaz, se han popularizado en los últimos años en muchos sectores. Además, existen varios niveles de corrección de errores que permiten seguir extrayendo la información del QR aun cuando hay fallos en la lectura y en la distorsión de las esquinas y bordes.
La orientación del código QR se puede obtener porque existen unos cuadrados especiales en tres de las cuatro esquinas, llamados símbolos de posición, de modo que el lector puede distinguir las esquinas superiores de las inferiores. Además, existe otro cuadrado más pequeño, el símbolo de alineación, que se utiliza para detectar la posición cuando se ha producido un desplazamiento de los módulos debido a una distorsión. Para que el lector pueda saber el tamaño del código se utilizan las líneas de dimensión. Por último, se
3. Sistema de percepción
especifica la información variable, que es la que está relacionada con el formato del código.
Estos datos son la versión del código QR y el nivel de corrección de errores. En la Figura 3.1 se pueden observar las diferentes partes descritas que componen un código QR.
Figura 3.1. Esquema de las partes de un código QR.
Según el desarrollo encontrado en (Casselman, 2018), para conocer los datos codificados en el QR hay que identificar primero su máscara de protección, que es un ID de máscara que permite determinar los módulos del código QR, tal y como se puede comprobar en la Figura 3.2. Determinar estos módulos consiste en determinar los bytes por los que está formado. El ID de máscara se obtiene a partir de la información de formato: haciendo el módulo de dos a los bits contenidos en las posiciones de diez a catorce. El código QR, una vez se tiene la información de la máscara, se corresponde con una matriz en binario, que se transforma a decimal para extraer la información codificada.
Figura 3.2. Esquema de los módulos de un código QR.
Localización y control de un robot autónomo
18
Para poder trabajar en el algoritmo con los distintos puntos de interés del código QR, se le asigna a cada uno de ellos un nombre, con la distribución definida en la Figura 3.3, de modo que en el procesamiento de los datos sea más sencillo identificar cada esquina.
Figura 3.3. Puntos de interés del código para el algoritmo.
Para el algoritmo, únicamente es necesario codificar el identificador del código QR, las coordenadas de su centro en el sistema de referencia global, y el ángulo que forman entre los ejes X e Y. La cadena de información está codificada de forma normalizada para que el algoritmo siempre pueda extraer la información de la cadena correctamente. El formato que se sigue es:
(𝑖𝑑, 𝑥𝑄, 𝑦𝑄, 𝛼𝑋, 𝛼𝑌)
La cadena se decodifica de forma dinámica, utilizando caracteres delimitadores para conocer cuándo acaba un número y comienza otro, por lo que es posible leer números negativos y con el orden de magnitud y el número de decimales deseado sin tener que modificar el algoritmo.
3.2.1. Detección de los códigos QR
Para detectar y decodificar los códigos QR se utiliza una librería de código abierto llamada ZBar. Esta librería está disponible para diferentes plataformas, como Linux, Windows, iPhone, embedded, etc. Funciona en tiempo real, debido a la optimización del código y memoria, y permite que se puedan utilizar como entrada transmisiones de vídeos. El resultado es un proyecto robusto y estable que permite decodificar una gran variedad de
A
B C
D
Q
3. Sistema de percepción
códigos de barras desde diferentes fuentes. Además, al tratarse de una implementación modular, se puede adaptar a cualquier aplicación: utilizándolo stand-alone, integrándolo en proyectos Qt, o directamente incluyendo la librería en cualquier programa convencional de Python o C++.
Figura 3.4. Esquema descriptivo a alto nivel de los módulos de la librería.
Se puede encontrar el funcionamiento del algoritmo de decodificación, esquematizado en la Figura 3.4, en el trabajo de (Brown, 2011). Funciona como una aproximación a los escáneres láser que se utilizan en los códigos de barras unidimensionales, en los que únicamente se necesita un sensor de luz cualquiera que detecte las zonas claras y las oscuras del símbolo.
En el algoritmo implementado, se hace un escaneo lineal de la imagen de entrada, tratando cada píxel como una muestra de un sensor de luz convencional. De esta forma, la información es escaneada y decodificada en tiempo real. El procesamiento se separa en capas con interfaces claramente definidos, que se pueden utilizar de forma conjunta o insertarlas en otro sistema de forma independiente.
Para detectar el código QR y decodificar su etiqueta, convirtiendo la cadena de caracteres a valores numéricos con los que se puede trabajar, se utiliza el siguiente algoritmo:
Decodificar QR (imagen):
Convertir la imagen a blanco y negro Convertir la imagen al tipo imagenZBar Crear el objeto que escanea la imagen Escanear la imagen
Para cada código QR detectado:
Guardar las coordenadas de las esquinas en la imagen Guardar la etiqueta
Para cada carácter de la etiqueta
Localización y control de un robot autónomo
20
Si es una coma
Guardar el valor numérico anterior fin Si
fin Para fin Para
fin Decodificar QR
Una vez se obtienen los valores de interés del código QR detectado, se pueden implementar una serie de funciones en el caso de que se desee mostrar información gráfica de la detección al usuario.
3.3. Calibración de la cámara
El sistema de detección de los códigos QR y de localización del robot utiliza una cámara monocular que necesita calibrarse para obtener los parámetros intrínsecos de la misma. Los parámetros intrínsecos son aquellos que definen la geometría interna y la óptica de la cámara, por lo que determinan cómo se proyectan los puntos 3D en el plano de la imagen 2D. Estos parámetros son constantes si no se modifican ni la óptica ni las características de la cámara. Para obtenerlos se utiliza el modelo pinHole, en el que se modela la cámara como un agujero sin lente a través del cual pasa la luz, que se proyecta en un plano, llamado plano imagen. En la siguiente Figura 3.5 se muestra un esquema de este modelo.
Figura 3.5. Esquema del modelo de cámara pinHole.
3. Sistema de percepción
Los parámetros intrínsecos son la distancia focal y el centro óptico de la imagen. La distancia focal se define como la distancia f entre la apertura de la cámara y el plano de la imagen según el modelo pinHole. El centro óptico de la imagen, R, se define como el punto de corte del eje Z de la cámara con el plano de la imagen. También se puede contemplar un parámetro llamado skew, que define un giro de uno de los ejes del plano imagen, aunque normalmente se asume la unidad. Estos parámetros se representan en una matriz K:
𝐾 = [
𝑓𝑥 𝑠 𝑅𝑥 0 𝑓𝑦 𝑅𝑦
0 0 1
] (3.1)
La matriz K de parámetros intrínsecos no recoge los coeficientes de distorsión, ya que el modelo pinHole no contempla el uso de lentes. La distorsión radial hace que las líneas rectas aparezcan curvadas en la imagen; y la distorsión tangencial ocurre porque la lente no está perfectamente paralela al plano de la imagen, por lo que algunas áreas de la imagen pueden aparecer más cerca de lo que realmente están. Para corregir la distorsión radial y tangencial se emplean las siguientes ecuaciones, respectivamente:
𝑥𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑒𝑑= 𝑥(1 + 𝑘1𝑟2+ 𝑘2𝑟4+ 𝑘3𝑟6)
𝑦𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑒𝑑= 𝑦(1 + 𝑘1𝑟2+ 𝑘2𝑟4+ 𝑘3𝑟6) (3.2) 𝑥𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑒𝑑 = 𝑥 + [2𝑝1𝑥𝑦 + 𝑝2(𝑟2+ 2𝑥2)]
𝑦𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑒𝑑 = 𝑥 + [𝑝1(𝑟2+ 2𝑦2) + 2𝑝2𝑥𝑦] (3.3)
Por lo tanto, el vector de coeficientes de distorsión está compuesto por cinco elementos:
𝑑𝑖𝑠𝑡 = [𝑘1 𝑘2 𝑝1 𝑝2 𝑘3] (3.4)
Los parámetros extrínsecos relacionan el sistema de referencia del mundo 3D con el sistema de referencia de la cámara, es decir, describen la posición y la orientación de la cámara respecto al sistema de referencia global. Estos parámetros cambian cada vez que modificamos la posición de la cámara. Los dos parámetros extrínsecos son la matriz de rotación, que recoge la rotación independiente de los tres ejes entre los sistemas de coordenadas, y el vector de traslación, que indica el desplazamiento entre los origines de los sistemas de referencia. Estas dos transformaciones se recogen en una matriz de transformación T:
Localización y control de un robot autónomo
22 𝑇 = [
𝑅11 𝑅12 𝑅13 𝑇𝑋 𝑅21 𝑅22 𝑅23 𝑇𝑌 𝑅31 𝑅32 𝑅33 𝑇𝑍
] (3.5)
Una vez obtenidos los parámetros intrínsecos y extrínsecos de la cámara, es posible obtener la posición en el plano imagen (u, v) de un punto P a partir de sus coordenadas en el sistema de referencia global (x, y, z).
𝑠 [ 𝑢 𝑣 1
] = [
𝑓𝑥 𝑠 𝑅𝑥 0 𝑓𝑦 𝑅𝑦
0 0 1
] [
𝑅11 𝑅12 𝑅13 𝑇𝑋 𝑅21 𝑅22 𝑅23 𝑇𝑌 𝑅31 𝑅32 𝑅33 𝑇𝑍
] [ 𝑥 𝑦 𝑧 1
] (3.6)
El proceso por el cual se obtienen los parámetros de la cámara se denomina calibración. En este proceso es necesario el uso de un patrón de calibración, que no es más que una imagen estandarizada, normalmente un tablero de ajedrez, de la que se conocen las posiciones de unos puntos característicos fácilmente detectables llamados keypoints en el sistema de referencia global, para que el algoritmo de calibración pueda compararlas con las posiciones de los keypoints en el plano de la imagen y calcular el error de retroproyección. La calibración de la cámara se lleva a cabo con una estimación iterativa de los parámetros del modelo que queremos obtener, basada en el error de retroproyección. En los procesos de calibración no es suficiente con una única imagen del patrón de calibración, sino que es necesario un dataset de calibración, que es un conjunto de imágenes del patrón de calibración con diferentes posiciones y orientaciones, de modo que se pueda calcular la estimación de los parámetros de la cámara.
3.3.1. Algoritmo de calibración
Para codificar el problema se utiliza la librería de OpenCV para Python, ya que contiene una serie de funciones y clases que permiten calibrar la cámara de forma sencilla. En esta implementación, el tamaño del dataset de calibración debe ser como mínimo de diez imágenes para que el algoritmo funcione correctamente. El algoritmo de calibración se puede dividir en cuatro subprocesos, siguiendo el desarrollo que se encuentra en la propia documentación de la librería (OpenCV: Camera Calibration, s.f.), tal y como se muestra en la siguiente Figura 3.6:
3. Sistema de percepción
Figura 3.6. Flowchart del proceso de calibración de la cámara.
Para definir el sistema de referencia global, únicamente se asigna una posición a cada uno de los keypoints del patrón de calibración, manteniendo las propiedades geométricas del mismo. En las siguientes Figuras 3.7 se puede observar la detección del patrón de calibración.
Figuras 3.7. Ejemplos de detección de los keypoints en el patrón de calibración.
Existen diferentes patrones de calibración, como el tablero de ajedrez, los círculos simétricos o los círculos asimétricos. La diferencia entre usar un patrón u otro de calibración radica en la función de OpenCV que se utiliza para detectar los keypoints. En este caso se utiliza el patrón de calibración de tablero de ajedrez, por lo que utilizando el método findChessboardCorners se obtienen las coordenadas en el plano imagen de los puntos de interés a partir de la propia imagen y del tamaño del patrón de calibración.
Localización y control de un robot autónomo
24
Una vez se dispone de las coordenadas de un mismo punto tanto en el sistema de referencia global como en el de la imagen, se utiliza la función calibrateCamera de OpenCV para obtener los parámetros de la cámara a partir de las coordenadas de los keypoints. Este método devuelve el error de retroproyección, la matriz de parámetros intrínsecos y el vector de coeficientes de distorsión, así como los vectores de traslación y rotación. El error de retroproyección es una medida que ofrece una estimación de la calidad de la calibración de la cámara. La implementación del método está basada en (Zhang, Nov. 2000), donde se propone una técnica para la calibración de cámaras basada en una solución de forma cerrada y un proceso de refinamiento basado en el criterio de máxima verosimilitud. El algoritmo de calibración utilizado es el siguiente:
Calibrar Cámara:
Cargar las imágenes del dataset de calibración Para cada imagen cargada:
Si se encuentra el patrón de calibración en la imagen:
Detectar las coordenadas 2D de las esquinas del patrón fin Si
fin Para
Generar las coordenadas 3D de las esquinas del patón
Si se han detectado bien todos los puntos 2D en las imágenes:
Calibrar la cámara
Obtener el error de retroproyección Guardar los parámetros de calibración fin Si
Una vez conocidos los parámetros de la cámara, es posible aplicar el algoritmo de localización descrito en el Capítulo 4.
3.4. Corrección de la distorsión
En este proyecto concreto, se utiliza una cámara gran angular, que permite ampliar el campo de visión, pero distorsiona los extremos de la imagen obtenida. Al realizar pruebas, se comprueba que esta distorsión afecta notablemente en la detección de los códigos QR, por lo que es necesario corregirla. Para ello, es suficiente con conocer los parámetros de distorsión obtenidos en la calibración, ya que OpenCV posee un método para realizar este proceso. A partir de la imagen original y el vector de coeficientes de distorsión, el método undistort devuelve la imagen sin distorsión. Para obtener un resultado refinado, es necesario recortar la imagen para ajustarla al nuevo contenido, cambiando así la relación de aspecto.
3. Sistema de percepción
En las siguientes imágenes Figuras 3.8 se puede observar cómo afecta la distorsión a la detección del código QR. En las siguientes Figuras 3.9 se comprueba cómo se puede corregir sin perder campo de visión.
Figuras 3.8. Distorsión angular en las esquinas y el centro de la imagen.
Figuras 3.9. Corrección de la distorsión angular en la imagen.
4. Algoritmo de localización
4.1. Estado del arte
Tal y como se ha desarrollado en el apartado 3.1, los códigos QR se utilizan de forma amplia tanto en el ámbito comercial como el investigador para desarrollar sistemas de localización robustos y sencillos. A pesar de que el uso de los códigos QR dentro de la robótica móvil es relativamente reciente, existen diferentes estudios que reflejan la versatilidad de los mismos.
Por ejemplo, a pesar de que en este trabajo su uso está enfocado a la localización del propio robot, en (Anezaki, Eimon, Tansuriyavong, & Yagi, 2011) el sistema utiliza los códigos para reconocer las personas del entorno y realizar una función de tracking, llevando a cabo un control visual basado en patrones a partir de la imagen obtenida por una cámara.
También se encuentran estudios, por ejemplo el de (Atali, Garip, Ozkan, & Karayel, 2018), que utilizan los códigos QR del entorno y la localización del robot respecto a los mismos para el seguimiento de trayectorias. Está enfocado en una estructura de nodos, donde la trayectoria que tiene que seguir el robot se especifica a través del identificador de los marcadores que tiene que visitar para llegar a la posición global objetivo.
Otros trabajos, como por ejemplo (Yu, y otros, 2019), utilizan un sistema de visión binocular para la localización del robot y la detección de obstáculos en el movimiento a través de una trayectoria. En este trabajo, se utiliza la detección de códigos QR y la localización frente a ellos para poder reducir el error acumulado por el sistema de localización principal. Este enfoque de uso de códigos QR para reducción de errores acumulados también puede encontrarse en sistemas que utilizan otros sensores para la localización principal, como en (Nazemzadeh, Fontanelli, Macii, & Palopoli, 2017), en los que se utiliza odometría combinada con un filtro EHF para la localización general del robot, y los códigos QR para la reducción del error. O en (Taketani & Kobayashi, 2019), en los que la localización utilizando códigos QR mejora un sistema sensorial basado en imágenes.
Localización y control de un robot autónomo
28
Otro enfoque diferente al mencionado anteriormente es el de usar continuamente la localización proporcionada por el código QR para el control de la trayectoria seguida por el mismo, como por ejemplo en el trabajo de (Lee, Tewolde, Lim, & Kwon, 2015) y de (Zhang, Zhang, Yang, & Chen, 2015). Debido a la cantidad de marcadores que son necesarios para el continuo posicionamiento, en estas aplicaciones se suelen colocar en el techo. De esta manera, se puede conseguir una localización continua sin saturar el entorno. Estos sistemas, junto con el trabajo mencionado anteriormente de (Nazemzadeh, Fontanelli, Macii, &
Palopoli, 2017), utilizan las características geométricas del código QR detectado en la imagen, la información de la calibración de la cámara y la información codificada en el código QR para obtener la localización del robot.
4.2. Obtención de coordenadas
Para localizar al robot, se utiliza una técnica geométrica en la que, manteniendo el plano de la imagen paralelo al plano en el que se encuentran los QR, es posible obtener con ecuaciones matriciales sencillas la pose del robot en el instante en el que se decodifica el código QR. El esquema geométrico de dicha técnica se encuentra en la Figura 4.1. El algoritmo necesita como información de entrada las coordenadas del centro del QR en el mundo real, que se encuentran codificadas en la etiqueta del mismo; y las coordenadas del centro del QR en la imagen, que se obtienen a partir de las coordenadas de las esquinas que devuelve el algoritmo de detección. Definiendo O como el centro óptico de la imagen, que en este caso coincide con el centro de la imagen, y Q como el centro del código QR en la imagen, se definen las siguientes variables:
- El vector a, que es el vector entre Q y O.
- El ángulo α1, que es el ángulo que forman a y el eje positivo Y del código QR.
- El ángulo α2, que es el ángulo que forman a y el eje positivo X del código QR.
- El ángulo α3, que es el ángulo que forman el eje positivo Y del código QR y el eje positivo y de la imagen.
4. Algoritmo de localización
Figura 4.1. Esquema del sistema de coordenadas del QR y de la imagen con los parámetros descritos.
Además, es necesario calcular los parámetros unitx y unity se obtienen a partir de las distancias focales en cada eje fx y fy, que son parámetros de calibración, y representan la longitud de un píxel. De esta forma, podemos convertir la información obtenida en el plano de la imagen a coordenadas del mundo real.
𝑢𝑛𝑖𝑡𝑥= 1
𝑓𝑥 ; 𝑢𝑛𝑖𝑡𝑦 = 1
𝑓𝑦 (4.1)
Una vez calculados estos parámetros, ya es posible obtener las coordenadas de la cámara respecto al sistema de referencia del QR:
𝑥𝑐 = |𝑎⃗| ⋅ 𝑐𝑜𝑠 𝛼2⋅ 𝑢𝑛𝑖𝑡𝑥 𝑦𝑐 = |𝑎⃗| ⋅ 𝑐𝑜𝑠 𝛼1⋅ 𝑢𝑛𝑖𝑡𝑦
𝜃𝑐 = 𝛼3
(4.2)
Nótese que se utiliza el coseno de dos ángulos complementarios tanto para calcular la coordenada xc como para la yc, en vez de utilizar el seno y el coseno del mismo ángulo. Esto se debe a que todos los ángulos obtenidos anteriormente están acotados entre 0º y 180º, debido a limitaciones de implementación; por lo que, si queremos obtener el signo de la coordenada y no únicamente la magnitud, hay que utilizar cosenos.
Localización y control de un robot autónomo
30
4.2.1. Coordenadas absolutas de la cámara
Con las ecuaciones anteriores, se obtienen las coordenadas de la cámara respecto al sistema de referencia del QR detectado. Si los ejes de QR tienen la misma dirección y sentido que los ejes del sistema de referencia global, para obtener las coordenadas absolutas de la cámara únicamente es necesario sumar a las coordenadas obtenidas la posición del centro del QR:
𝑥𝑐𝐺 = 𝑥𝑐 + 𝑥𝑄 𝑦𝑐𝐺 = 𝑦𝑐+ 𝑦𝑄
𝜃𝑐𝐺 = 𝜃𝑐
(4.3)
Es posible que los sistemas de referencia no sean iguales. En este caso, antes de sumar la distancia del centro del QR a las coordenadas obtenidas, hay que transformarlas. Para ello, se define un ángulo de giro en el eje X, βx; y un ángulo de giro en el eje Y, βy. Definiendo un ángulo de giro diferente para cada eje se permite que se pueda cambiar el sentido de un solo eje, pero se tiene que tener en cuenta que el cambio de dirección tiene que ser el mismo para ambos, manteniendo la ortogonalidad.
[ 𝑥𝑐𝐺 𝑦𝑐𝐺 𝜃𝑐𝐺 ]
𝑇
= [
𝑐𝑜𝑠 𝛽𝑥 𝑠𝑖𝑛 𝛽𝑥 0
− 𝑠𝑖𝑛 𝛽𝑦 𝑐𝑜𝑠 𝛽𝑦 0
0 0 1
] ⋅ [ 𝑥𝑐 𝑦𝑐 𝜃𝑐] + [
𝑥𝑄 𝑦𝑄 𝛽𝑦]
𝑇
(4.4)
4.2.2. Coordenadas absolutas del robot
Por último, hay que tener en cuenta que las coordenadas obtenidas son las de la cámara, pero puede ser que las coordenadas de interés sean las de otro punto del robot, denominado P. El esquema geométrico de la transformación se puede observar en la Figura 4.2. En ese caso, se definen nuevos parámetros:
- El vector p, que es el vector entre P y O. Se obtiene directamente de la geometría del robot, conociendo las distancias entre la cámara y el punto de interés.
- El ángulo φy, que es el ángulo que forman p y el eje positivo Y del código QR.
- El ángulo φx, que es el ángulo que forman p y el eje positivo X del código QR.
4. Algoritmo de localización
Figura 4.2. Esquema de la transformación de coordenadas según el punto de interés.
Estos parámetros dependen de la geometría del robot y del punto de interés deseado, por lo que varían en función de la aplicación concreta de uso del algoritmo. Con esta información y las coordenadas calculadas anteriormente se puede obtener la localización del robot.
𝑥𝑟𝐺 = 𝑥𝑐𝐺 + |𝑝⃗| ⋅ 𝑐𝑜𝑠 𝜑𝑥 𝑦𝑟𝐺 = 𝑦𝑐𝐺+ |𝑝⃗| ⋅ 𝑐𝑜𝑠 𝜑𝑦
𝜃𝑟𝐺 = 𝜃𝑐𝐺
(4.5)
Al igual que en la localización, es necesario trabajar con cosenos para no perder el signo negativo o positivo. En este caso, se asume que la orientación del sistema de referencia de P no varía respecto al sistema de referencia de la cámara, por lo que la orientación se mantiene.
Sin embargo, si los sistemas están girados entre sí hace falta una matriz de transformación que los relacione. En el caso más sencillo, el vector p está alineado con el eje x o el Eje y del sistema de referencia de la cámara, de modo que se pueden obtener los ángulos φy y φx
igualándose directamente a los ángulos θcG y θcG+90º, según la orientación de la misma.
El resultado es una localización sencilla pero robusta, que es capaz de funcionar en tiempo real y que no requiere una gran inversión ni en hardware ni en software. En la siguiente Figura 4.3 se pueden observar los diferentes sistemas de coordenadas de la tarea.
Localización y control de un robot autónomo
32
Figura 4.3. Esquema de los sistemas de coordenadas de la tarea.
5. Algoritmo de control
5.1. Estado del arte
Basándose en el estudio realizado por (Yasuda, Martins, & Cappiabianco, 2020), se puede concluir que la mayor parte de los problemas que se producen en el desarrollo de la navegación autónoma del robot en entornos controlados están producidos por el sistema de visión y de localización. Sin embargo, el generador de trayectorias y el controlador tienen un papel clave en el funcionamiento del sistema en entornos que son desconocidos, dinámicos y desestructurados. Es en estos entornos donde existen múltiples líneas de investigación abiertas para la implementación de nuevos controladores que permitan robustez del robot cuando se encuentre con los problemas típicos de estos entornos: evitación de obstáculos dinámicos, desconocimiento del medio, etc.
5.1.1. Controlador
Existen trabajos como el de (Rusu, Petriu, Whalen, Cornell, & Spoelder, 2003), en los que se estudia un controlador basado en comportamientos que utiliza redes neuronales combinadas con lógica difusa en entornos interiores. Utilizar el control lógico difuso (fuzzy logic control, FLC) para robótica móvil permite que el sistema siga funcionando de forma correcta incluso en situaciones de incertidumbre. El hecho de combinar este sistema de control con redes neuronales permite que el robot pueda aprender del entorno y adaptar su comportamiento al mismo. El uso de la lógica difusa es común en estos estudios, tal y como se puede comprobar también en el trabajo realizado por (Triviedi & Ng, 1998), donde se utiliza también una combinación de FLC con una red neuronal recurrente RNN para resolver problemas de control dinámicos no lineales. Otro ejemplo del uso de RNN para controlar la trayectoria y la estabilidad de un robot móvil se puede encontrar en el trabajo de (Velagic, Osmic, & Lacevic, 2008).
En general, se pueden encontrar una variedad de técnicas para el control no lineal de robots móviles, analizando principalmente en las técnicas de Lyapunov40, en el libro de (Dixon,