Full text
Proyecto Fin de Carrera Ingeniería Industrial Automatización Industrial y Robótica Modelado y simulación de un robot Robucar TT Carlos Gracia Sola Director: Luis Montano Gella Departamento de Informática e Ingeniería de Sistemas Escuela de Ingeniería y Arquitectura Universidad de Zaragoza Mayo 2013
Modelado y simulación de un robot Robucar TT Resumen En este proyecto se ha creado un modelo para el robot Robucar TT del Grupo de Robótica, Percepción y Tiempo Real y posteriormente se ha implementado en el simulador Gazebo. El Robucar es un vehículo con tracción a las cuatro ruedas que puede moverse en tres modos distintos. El primero es el llamado modo coche, donde las ruedas traseras se fijan y giran únicamente las delanteras. En el segundo modo, de cuatro ruedas, todas ellas se mueven para permitir radios de giro menores. El último modo es el modo cangrejo, donde todas las ruedas giran en la misma dirección para permitir desplazamientos en diagonal. Un simulador de movimiento de un robot sirve para la puesta a punto de numerosas aplicaciones en robótica. Debe reproducir los más fielmente posible el comportamiento cinemático y dinámico del robot, además de sus distintos modos de tracción. Este comportamiento debería estar incorporado en el simulador. Sin embargo, lo más habitual es que no lo esté. Por tanto, en este proyecto se ha planteado incorporar las características obtenidas de la experimentación con el robot real Robucar TT. Para ello se han planteado una serie de pruebas con el robot real y se ha comparado su comportamiento con el del simulado utilizando las mismas órdenes. Ello ha permitido el ajuste de los parámetros en el simulador, modificando el modelo inicial para que se ajuste mejor a la realidad. Dado que es inevitable que exista un error, se crea un modelo para éste y se estima su matriz de covarianzas. Otro de los objetivos del proyecto era el estudio del modelado geométrico del robot y de su entorno a partir de un sensor RGB-D como una cámara Kinect. Se han desarrollado distintos métodos para ello. Se presentan los resultados obtenidos y se analizan sus limitaciones de aplicabilidad. III
ÍNDICE DE CONTENIDOS Resumen III Índice de contenidos V 1 Introducción 1 1.1 Motivación y objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Estructura de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Descripción del robot 5 2.1 El Robucar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1 Posicionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Geometría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2.1 Variación del tamaño de las ruedas . . . . . . . . . . . . . . 7 2.3 Cinemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3.1 Modo coche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3.2 Modo dual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3.3 Modo crab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4 Dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3 Implementación en el simulador 17 3.1 Software utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.1.1 ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.1.2 Gazebo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2 Modelado del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.1 Distribución de masa . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.2 Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3 Control del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.4 Análisis de sensibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 V
4 Pruebas y ajuste 31 4.1 Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.2 Ajuste del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.2.1 Radio de las ruedas . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.2.2 Velocidad lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.2.3 Rozamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.3 Evaluación del simulador . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.3.1 Estimación del error . . . . . . . . . . . . . . . . . . . . . . . . 39 4.4 Resumen de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5 Modelado visual del robot 43 5.1 Herramientas utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.1.1 Cámara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.1.2 PCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.1.3 OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.2 Alineación de nubes de puntos . . . . . . . . . . . . . . . . . . . . . . 45 5.3 Reconstrucción de superficies . . . . . . . . . . . . . . . . . . . . . . . 46 5.4 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6 Conclusiones y trabajo futuro 53 6.1 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 6.2 Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Anexos A Fotografías del robot 59 B Mensajes de ROS 65 C Análisis de sensibilidad 69 C.1 Distribución de masa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 C.2 Rozamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 C.3 Radios de las ruedas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 D Estructura de nodos en ROS 79 E Pruebas del robot 83 E.1 Rectas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 E.2 Giros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 E.3 Ochos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 VI
E.4 Nuevas pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 E.5 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 F Configuración del simulador 123 G Cálculo de la matriz de covarianzas 125 H Animaciones del simulador 129 Índice de figuras 131 Índice de tablas 135 Bibliografía 137 VII
CAPÍTULO 1 INTRODUCCIÓN El principal objetivo de este proyecto es el desarrollo de un simulador realista para un robot Robucar TT. Para ello se trabaja sobre el simulador Gazebo. Se puede ver una imagen del robot en la figura 1.1. Adicionalmente, se estudia la posibilidad de generar modelos tridimensionales tanto del robot como de su entorno utilizando un sensor Kinect para su visualización en el simulador. 1.1. Motivación y objetivos A la hora de crear nuevos programas para un robot, un simulador puede resultar ser una herramienta muy útil. Permite realizar pruebas con más rapidez, seguridad y comodidad que utilizando el robot real. Además, puede recrear escenarios cuya utilización en la realidad sería más compleja, inviable o directamente imposible. Como contrapartida, una simulación se basa necesariamente en un modelo simplificado de la realidad, por lo que su comportamiento nunca será exactamente igual. Algunos factores no se tendrán en cuenta y los demás no serán perfectamente realistas, así que nunca hay que perder de vista que un simulador no es más que una aproximación. A menudo, se utiliza como un paso previo antes de las pruebas reales, permitiendo eliminar los fallos más importantes en un entorno seguro para posteriormente comprobar y ajustar el funcionamiento en la realidad. Un simulador para robots cuyo uso se ha extendido mucho recientemente es Gazebo [ 1 ]. Permite introducir varios robots en un mapa, además de sus sensores y otros objetos. Genera información realista para esos sensores y cuenta con un motor de física para simular la dinámica de sólidos rígidos. El control de los robots se realiza mediante ROS, Robot Operating System [ 2 ]. Es otro sistema cuyo uso se ha generalizado en los últimos años. Presenta la
8CAPÍTULO 2. DESCRIPCIÓN DEL ROBOT Figura 2.3: Fotografía que muestra la tabla situada encima del robot. (a) Rueda deshinchada (b) Rueda hinchada Figura 2.4: Comparación entre una rueda tras un período de tiempo sin hinchar y otra recién hinchada. en función de cómo está cargado el robot y de la posición del brazo robótico. La figura 2.4 muestra una comparación entre una rueda recién hinchada y otra que no ha sido hinchada en varias semanas. Se observa el aplastamiento en la parte inferior, menos pronunciado en la recién hinchada Ésta es la mayor fuente de error para el modelo. Cambios muy pequeños en los radios de las ruedas de un robot pueden ocasionar grandes errores. Para intentar reducir el efecto, se medirá el tamaño real de cada rueda cuando se realicen las pruebas. Sin embargo, en cuanto cambien las condiciones esas medidas ya no serán correctas. Por lo tanto, es inevitable que se introduzcan errores, y lo único que se puede hacer es intentar acotarlos.
2.3. CINEMÁTICA 9 2.3. Cinemática En este apartado se describe la cinemática del robot en sus tres modos de movimiento: coche, dual y cangrejo o crab. En particular, lo que se quiere calcular son las velocidades de giro de las ruedas y el ángulo que deben estar giradas para cumplir con las órdenes de movimiento que se le envién. Estas órdenes tienen dos componentes. La primera es la velocidad lineal del robot y la segunda es el ángulo que tendría una hipotética rueda situada en medio de cada eje. Se explica qué significan exactamente esas órdenes para cada modo. La velocidad lineal del robot está limitada a 4 m/s y el ángulo máximo de giro de la rueda central es de 0,4 radianes. Para realizar los cálculos de cinemática tanto el robot como sus ruedas son considerados como sólidos rígidos. En el caso de las ruedas la aproximación sería mejor utilizando un sólido deformable. Sin embargo, el objetivo es que el simulador imite al robot real, y éste las trata como sólidos rígidos. Cuando las ruedas están giradas a la izquierda se considerarán los ángulos como positivos, y viceversa. 2.3.1. Modo coche En el modo coche el robot mantiene rectas las ruedas traseras y gira las delanteras. Como se puede ver en la figura 2.5, el ángulo que tienen que girar esas ruedas no es el mismo, algo que permite la geometría de Ackermann. Para este caso, la velocidad lineal del robot es la que corresponde al punto central del eje trasero, v . El ángulo es el que tendría una rueda situada en el centro del eje frontal, θ . A partir de estos dos datos y de la geometría del robot es necesario calcular las velocidades de avance y los ángulos de las cuatro ruedas. En primer lugar se calcula el radio de giro del robot, R , para el punto central del eje trasero. Para ello se utiliza el triángulo rectángulo formado entre ese punto, el centro de rotación y el punto central del eje trasero, del que se extrae: tan(θ) = S R, (2.1) donde la separación entre ejes es S. Hay que tener en cuenta el caso particular de que el radio de giro sea infinito, es decir, que el robot no gire. Es el caso más sencillo, puesto que implica que el ángulo de todas las ruedas es cero y que la velocidad lineal de todos los puntos es la misma, por lo que se encuentra la solución al problema. La velocidad angular sería cero.
10 CAPÍTULO 2. DESCRIPCIÓN DEL ROBOT CR θiθd θ v S L R θθiθd w Figura 2.5: Esquema del robot en modo coche, mostrando los ángulos de las ruedas frontales θi y θd , el de la rueda virtual central θ y el centro de rotación CR. Para el resto de los casos, se puede calcular la velocidad angular del robot, w = ˙ θ , a partir de la velocidad lineal del punto central trasero y del radio de giro en ese mismo punto, utilizando: w=v R. (2.2) Ahora se puede pasar a calcular los ángulos de las ruedas. El de las traseras es cero, por estar en modo coche. Para las ruedas frontales se utilizan los triángulos rectángulos formados por el centro de la rueda, el centro de la rueda trasera del mismo lado y el centro de rotación. Se conocen las longitudes de ambos catetos, siendo uno de ellos la separación entre ejes S y el otro es el radio de giro del punto central del eje trasero, sumando o restando la mitad de la longitud del eje L. Las siguientes ecuaciones indican el ángulo de giro de la rueda delantera izquierda, θi, y derecha θd. θi=tan−1 S R−L 2 , (2.3)
2.3. CINEMÁTICA 11 θd=tan−1 S R+L 2 . (2.4) En este contexto un radio de giro negativo indica un giro a la derecha. Hay que recordar que el radio de giro R sigue siendo el del centro del eje trasero del robot. Conocidos los ángulos de las ruedas, resta saber sus velocidades. Dado que sabemos la velocidad lineal de un punto y la velocidad angular del robot, se puede calcular la velocidad de cualquier punto, al ser un sólido rígido. La siguiente ecuación expresa esa relación: v=v0+ω×r, (2.5) donde v es la velocidad de un punto, v0 es la velocidad de otro punto, r es el vector que une ambos puntos y ωes la velocidad angular del sólido. Para saber la velocidad lineal a la que debe avanzar cada rueda se calculará el módulo de los vectores velocidad obtenidos, puesto que ya están orientadas en la dirección del movimiento: vf,i=sv−w·L 22 +(w·S)2, (2.6) vf,d=sv+w·L 22 +(w·S)2, (2.7) vt,i=v−w·L 2, (2.8) vt,d=v+w·L 2, (2.9) donde vf,i es la velocidad lineal de la rueda frontal izquierda, vf,d la de la frontal derecha, vt,i la de la trasera izquierda y vt,d la de la trasera derecha. Hay que destacar que estas ecuaciones dan velocidades positivas, el signo debe ser invertido para movimientos hacia atrás. Por último, es necesario saber a qué velocidad angular deben girar cada rueda, conocido su radio r . La siguiente ecuación muestra esa velocidad para una rueda cualquiera, wr. La velocidad lineal requerida a esa rueda es vr: wr=vr r. (2.10)
12 CAPÍTULO 2. DESCRIPCIÓN DEL ROBOT Particularizando para cada rueda se obtiene: wf,i=vf,i rf,i , (2.11) wf,d=vf,d rf,d , (2.12) wt,i=vt,i rt,i , (2.13) wt,d=vt,d rt,d . (2.14) 2.3.2. Modo dual Para lograr radios de giro menores, también se puede modificar la posición de las ruedas traseras, que también están configuradas según la geometría de Ackermann. La figura 2.6 muestra un esquema del robot en este modo. Se puede observar que los ángulos de las ruedas traseras son los opuestos de sus correspodientes ruedas delanteras. CR θf,iθf,d θ θt,iθt,d Figura 2.6: Esquema del robot en modo dual, mostrando los ángulos de las ruedas frontales θf,i y θf,d , los de las ruedas traseras θt,i y θt,d , el de la rueda virtual central θy el centro de rotación CR.
2.3. CINEMÁTICA 13 En este caso, la velocidad lineal del robot, v , que se recibe como orden es la del punto central. Se entiende que ese punto es el que equidista de los centros de ambos ejes, no el centro de gravedad del robot. El ángulo requerido, θ , sigue siendo el de la hipotética rueda situada en el centro del eje frontal, que también correspondería al opuesto de la rueda que estaría en el centro del eje trasero. La siguiente ecuación muestra cómo se puede obtener el radio de giro para el punto central del robot, con el triángulo rectángulo formado entre ese punto, el punto central del eje delantero y el centro de rotación CR: tan(θ) = S 2R. (2.15) Comparando con la ecuación 2.1 del modo coche, se puede ver que para el mismo ángulo el radio de giro que se obtiene es la mitad. De nuevo, si el radio de giro es infinito el robot va recto, su velocidad angular será nula y los ángulos de las vuatro ruedas serán cero. En el resto de las situaciones, la velocidad angular se calcula con la ecuación 2.2, igual que en el modo coche. Para el cálculo de los ángulos de las ruedas delanteras se utilizan los triángulos formados por el centro del eje frontal, el centro de rotación y el punto situado debajo de la rueda a la altura del centro del robot. Los de las ruedas traseras son simplemente los opuestos de su correspondiente rueda delantera. Se muestra cómo se hallan el ángulo de la rueda delantera izquierda, θf,i , y el de la derecha, θf,d: θf,i=tan−1 S 2R−L 2 , (2.16) θf,d=tan−1 S 2R+L 2 . (2.17) Conocidos los ángulos, se obtienen las velocidades de las ruedas utilizando la ecuación 2.5 y calculando sus módulos, al igual que en el modo coche. Por simetría, las velocidades de las ruedas traseras son iguales que las de su correpondiente rueda delantera. Se obtiene la velocidad de la rueda delantera izquierda, vf,i , y la de la derecha, vf,d: vf,i=v u u tv−w·L 22 +w·S 22 , (2.18)
14 CAPÍTULO 2. DESCRIPCIÓN DEL ROBOT vf,d=v u u tv+w·L 22 +w·S 22 . (2.19) De nuevo, la velocidad angular de las ruedas se calcula mediante la ecuación 2.10. 2.3.3. Modo crab El modo crab, o cangrejo, permite que el robot se mueva en diagonal, recordando en cierto modo al andar lateral de estos animales. En teoría, las cuatro ruedas deberían girar el mismo ángulo. Sin embargo, la misma geometría de Ackermann que permitía colocar todas las ruedas en el ángulo correcto en los dos modos anteriores impide lograr ese objetivo. Por consiguiente, únicamente se podrá lograr una aproximación y las ruedas se verán forzadas a deslizar. Esta es la razón por la que este modo de movimiento debería ser considerado como secundario y se recomienda evitar su uso en la medida de lo posible. La figura 2.7 contiene un esquema de este modo. Los ángulos de las ruedas se pueden obtener utilizando centros de rotación virtuales para cada eje. En realidad no existe rotación, pero sirven para garantizar que la posición de las ruedas cumple con la geometría de Ackermann, como están construidas. La velocidad lineal requerida en este modo se considera como la velocidad a la que debe avanzar el robot. En este modo no gira, por lo que la velocidad es la misma para todos sus puntos. El ángulo que se requiere es el de las ruedas virtuales centrales, θ. Las ruedas de cada lado estarán giradas el mismo ángulo, por lo que bastará con calcular los del eje delantero. Se puede tomar un radio de giro virtual R igual que el del modo coche de la ecuación 2.1, ya que son conocidas la separación entre ejes S y el ángulo virtual requerido θ . Acto seguido se aplica la ecuación 2.3 para calcular los ángulos de las ruedas izquierdas y la ecuación 2.4 para las derechas. Por supuesto, para pasar de la velocidad de avance de una rueda a su velocidad angular se vuelve a utilizar la ecuación 2.10. 2.4. Dinámica Un problema que se encuentra a la hora de caracterizar el robot es la ausencia de información sobre algunos de sus parámetros físicos. Por supuesto, su geometría se puede medir, pero el robot no ha sido pesado ni esa información ha sido proporcionada por el fabricante. Únicamente se sabe que su masa está en torno a los 250 kg. Tampoco se tiene mucha información sobre su tensor de inercia, es
2.4. DINÁMICA 15 CR1 CR2 θf,iθf,d θ θt,iθt,d θ Figura 2.7: Esquema del robot en modo crab, mostrando los ángulos de las ruedas frontales θf,i y θf,d , los de las ruedas traseras θt,i y θt,d , el de la rueda virtual central θy los centros de rotación virtuales CR1 y CR2. decir, sobre cómo está distribuida esa masa. El brazo robótico, con una masa en torno a los 50 kg, está situado en la parte delantera izquierda del robot y hace que esa sea su parte más pesada, pero esa es toda la información disponible. Por supuesto, la fuerza más importante a la que está sometido el robot es el peso. Al transmitir ese peso al suelo se produce una reacción igual y de sentido opuesto, según la tercera ley de Newton. Esta reacción, normal al plano del suelo, se reparte entre las cuatro ruedas. Si la distribución de masa del robot fuera uniforme sería igual para todas, pero al no serlo dependerá de esa distribución. De esas fuerzas normales depende la fuerza de fricción sobre el suelo. Según el modelo de Coulomb, utilizado por el simulador Gazebo, esa fuerza es menor o igual que un coeficiente de rozamiento multiplicado por la normal, según la ecuación: Fr≤µFn(2.20) donde Fr es la fuerza de rozamiento, µ es el coeficiente de rozamiento y Fn es la
16 CAPÍTULO 2. DESCRIPCIÓN DEL ROBOT fuerza normal al suelo. Esta fuerza de rozamiento se produce en la dirección del movimiento y se opone a éste. Se forma un cono de fricción con la suma de la fuerza normal y el máximo rozamiento. Por debajo de ese cono, la fuerza de rozamiento es insuficiente para evitar el movimiento. El simulador utiliza una aproximación de este modelo, como se explica en la sección 3.1.2. Para una rueda, la situación ideal es que este rozamiento sea lo más elevado posible, evitando el deslizamiento. Para una rueda que contactara con el suelo en un punto, el óptimo sería rozamiento infinito. Las del robot tienen una geometría de contacto más compleja, debido al aplastamiento de las ruedas mostrado en la figura 2.4. Además, hay que tener en cuenta que no es constante, depende del hinchado de la rueda en ese momento. Incluso cambiará cuando el robot acelere, al aparecer otras fuerzas además del peso. El coeficiente de rozamiento entre el neumático de goma y el suelo también puede variar, según el tipo de suelo, la velocidad, la temperatura, la presión y la geometría de contacto, entre otras variables ([ 9 ],[ 10 ]). Un valor razonable para el coeficiente µentre goma y asfalto es 0,9, según [10]. El par motor que se puede proporcionar a las ruedas no supone ninguna limitación para la velocidad que puede alcanzar el robot, ya que ésta no puede superar los 4 m/s por el software, por debajo de la que podría llegar.
CAPÍTULO 3 IMPLEMENTACIÓN EN EL SIMULADOR En este capítulo se explica cómo se implementa el modelo del robot en el simulador Gazebo. En primer lugar, se crea un robot con unas características similares al Robucar, sin buscar replicar su comportamiento exacto. De esta forma, se puede comprobar que los controles creados para el robot simulado funcionan correctamente. Una vez se consigue, se pasa pasar a intentar acercar el comportamiento del robot simulado al del real lo máximo posible. Además, debe funcionar utilizando exactamente las mismas órdenes que el robot real. De esta forma, se podrán utilizar los mismos programas sin necesidad de ninguna modificación. 3.1. Software utilizado Esta sección trata sobre el software más importante utilizado para poder simular el robot. En particular, se explica brevemente cómo funciona el simulador Gazebo y cómo interactúa con el entorno ROS. Se presta especial atención a los elementos más importantes para este proyecto. 3.1.1. ROS ROS son las siglas de Robot Operating System, Sistema Operativo Robótico [ 2 ]. Como su nombre indica, es un sistema operativo que permite controlar uno o varios robots, además de proporcionar una serie de paquetes con los que se pueden realizar tareas comunes como, por ejemplo, la planificación de rutas. Estos paquetes son contribuciones de usuarios y, como se ha hecho en este proyecto, se pueden modificar o añadir nuevos.
24 CAPÍTULO 3. IMPLEMENTACIÓN EN EL SIMULADOR Momentos Valor (kg m2) Ix42,58 Iy154,58 Iz168,33 Tabla 3.1: Momentos principales de inercia del modelo del robot. (a) Robot (b) Ruedas Figura 3.3: En la imagen (a) se puede ver el modelo completo del robot y en la (b) las ruedas con sus ejes. El aspecto visual muestra el modelo de colisión. tiene por qué coincidir con su visualización. En este capítulo se hace coincidir el modelo visual con el de colisión. Posteriormente, en el capítulo 5, se intenta imitar el aspecto real. Se simplifica la mayor parte de la estructura del robot como un ortoedro, como se puede ver en la figura 3.3a. Un pequeño cubo rojo es incluido en la parte delantera para identificarla. Este modelo simplificado permite acelerar la simulación. Se añaden dos ejes en la parte inferior, que unen el cuerpo del robot con las ruedas. Una unión en Gazebo no permite el giro en dos direcciones distintas, así que para cada rueda hay un pequeña pieza que gira sobre el eje y se encarga de orientarlas. Se les ha llamado rodamientos, al recordar en cierto modo a la función de éstos. Se muestran en la figura 3.4. El giro de las propias ruedas, montadas sobre los rodamientos, es el que permite el movimiento de avance del robot. El control por software se encarga de que las posiciones de las ruedas mantengan la geometría de Ackermann, en vez de recrearla en el modelo. De esta manera se simplifica y se facilita la creación de modelos de otros robots distintos en el futuro. Además, mientras el control se asegure de que los ángulos sean correctos
3.3. CONTROL DEL ROBOT 25 Figura 3.4: Piezas, llamadas rodamientos, sobre las que giran las ruedas permitiendo su orientación, en amarillo. Están situados en los dos extremos de cada eje. no comporta ninguna desventaja. También se limitan así los ángulos que pueden girar las ruedas. El motor de física del simulador da problemas al acercarse a los límites definidos en el modelo. Por ejemplo, el robot puede empezar a saltar, algo completamente absurdo. Las restricciones de esos ángulos se fijan suficientemente lejos como para evitar que se acerque en ningún momento. 3.3. Control del robot Básicamente, hay dos opciones disponibles para controlar un modelo en Gazebo: La primera es crear un nodo de ROS que publique mensajes con todas las órdenes para las ruedas del robot, tanto para el control de su posición como el de la velocidad de giro. A su vez, ese nodo leería la información de los sólidos del robot publicada por Gazebo y extraería la odometría. La otra opción es crear un plugin para Gazebo, que es un fragmento de código que se inserta dentro del programa. Permite controlar prácticamente cualquier aspecto de la simulación. Además, garantiza que se ejecutará una vez en cada paso de simulación, utilizando el estado del robot en ese instante. Es un poco más complejo que la opción anterior. Sin embargo, para un caso
26 CAPÍTULO 3. IMPLEMENTACIÓN EN EL SIMULADOR como el actual, que necesita controlar cuatro ruedas distintas, la diferencia es mínima. El plugin también es más rápido que la primera opción. El envío de mensajes requiere tiempo, así que con el nodo independiente no se garantiza que en cada momento se estén dando las órdenes adecuadas al estado del robot, o que éstas lleguen suficientemente pronto. No supondría un inconveniente para la velocidad de giro de las ruedas, que cambia muy poco comparado con el tiempo de cada paso del simulador; pero sí para el control de su posición, que utilizará un controlador PID. La única ventaja que presenta frente al plugin es que es más sencilla su implementación, ya que consiste simplemente en un nodo de ROS. Se ha elegido utilizar el plugin, al considerar que las ventajas que supone su uso superan con creces los problemas. Los mensajes que se usan para la comunicación entre Gazebo y el resto de los nodos de ROS se describen en el anexo B. El control se actualiza cada décima de segundo en la simulación, un tiempo suficientemente pequeño para proporcionar una buena precisión sin ralentizar demasiado el simulador. En caso necesario, basta con cambiar un valor para reducirlo y aumentar la precisión de la simulación o incrementarlo para hacerla más rápida. Al recibir las órdenes, se calcula la velocidad de giro y la posición de cada una de las ruedas a partir de las ecuaciones cinemáticas expuestas en la sección 2.3. Para controlar el movimiento de los sólidos en Gazebo hay dos opciones: aplicar una fuerza o fijar una velocidad. Teniendo en cuenta las incertidumbres existentes en la distribución de masa, se utilizarán velocidades, paliando su efec- to. También se limita la fuerza máxima que se puede aplicar para alcanzar esa velocidad, evitando discontinuidades en ella al restringir la aceleración. De esta forma, el control de la velocidad de giro de las ruedas es directo, simplemente se fija su velocidad. La posición es más compleja, ya que no se puede actuar sobre ella directamente. Para ello se añade un controlador proporcional integral derivativo (PID), que ajusta la velocidad para cumplir con la consigna que se le requiera. La acción integral es necesaria para que el error de posición sea cero. Para el ajuste de las constantes del controlador se prueban distintos valores hasta obtener un comportamiento similar al del robot real. La figura 3.5 muestra el comportamiento de la rueda virtual central antes y después del ajuste del PID, utilizando las órdenes y el comportamiento de una prueba real. Se puede observar que la sobreoscilación desaparece y se reduce el tiempo de respuesta, ajustándose mejor a la consigna. Se han incluido las constantes del PID en la descripción URDF del robot para facilitar su posterior modificación, en caso de que sea necesario, según se explica
3.3. CONTROL DEL ROBOT 27 (a) Antes del ajuste (b) Después del ajuste Figura 3.5: Se muestra la evolución del ángulo de la rueda central virtual antes (a) y después (b) de ajustar. En azul está el ángulo requerido, en rojo el del robot real y en verde el del simulado.
28 CAPÍTULO 3. IMPLEMENTACIÓN EN EL SIMULADOR en el anexo F. Dado que el plugin tiene acceso a la posición y velocidad del robot en todo momento, se puede publicar en ROS toda esa información. Para ello se utilizan los mensajes Odometry,CarLikeInfo yAckermannDriveStamped del anexo B. 3.4. Análisis de sensibilidad Antes de intentar ajustar el robot simulado al comportamiento del real, se va a comprobar que realmente el factor más influyente en el simulador es el tamaño de las ruedas, mientras que la importancia de otros parámetros como la masa, el tensor de inercia y el rozamiento con el suelo es mucho menor. Para ello, se realizan una serie de pruebas en el simulador, cambiando esos parámetros y comprobando su efecto. Esas pruebas se describen en el anexo C. Hay que tener en cuenta que esto no implica que en la realidad esos factores no sean importantes en la realidad, únicamente se comprueba su influencia en el robot simulado. De esta forma, se sabrá qué parámetros se pueden modificar para ajustar la simulación al robot real en el capítulo 4. Los resultados indican que los únicos factores que tienen un efecto importante en la simulación son los radios de cada rueda. Esto se debe a que el control se realiza fijando velocidades, proporcionando la fuerza necesaria para alcanzarla. El rozamiento, que es un factor muy importante en la realidad, no puede ser modelado correctamente utilizando el motor de física de Gazebo. La geometría de contacto varía según la rueda y cómo esté hinchada, la distribución de peso sobre las ruedas no es uniforme y cada terreno tendría un coeficiente de rozamiento distinto. Además, se ha comprobado que cambiar únicamente ese coeficiente no es suficiente. Por lo tanto, es necesario tenerlo en cuenta de otra forma, como se explica en la sección 4.2.3. La tabla 3.2 muestra un resumen de los distintos parámetros del modelo que deben ser ajustados, incluyendo una valoración cualitativa de su importancia. El marcado con las tres cruces, los radios de las ruedas, es un parámetro muy importante. Pequeños cambios producen grandes variaciones en el comportamiento. Entre los que tienen asignadas dos cruces, están los parámetros de la geometría de los ejes, muy relevantes, pero que pueden ser medidos directamente y que permanecen prácticamente constantes. También se considera que las velocidades máximas y el ángulo máximo de giro tienen una relevancia media, dado que únicamente influyen al acercarse el robot a esos límites. Además, están bien definidos en las especificaciones del robot. El último con dos cruces son las constantes del PID, que controlan los ángulos de las ruedas. Que no estén bien ajustadas implicaría un peor comportamiento de esos ángulos, pero su efecto únicamente se nota mucho cuando se producen
3.4. ANÁLISIS DE SENSIBILIDAD 29 Parámetro Importancia Geometría Radios de las ruedas +++ Separación entre ejes ++ Longitud de eje ++ Cinemática Velocidad lineal máxima ++ Velocidad angular máxima ++ Ángulo máximo de giro ++ Dinámica Masa del robot + Tensor de inercia + Coeficiente de rozamiento + Constantes PID ++ Fuerza máxima ruedas + Tabla 3.2: Resumen de parámetros que se deben ajustan. cambios bruscos en ellos. Los demás parámetros tienen una importancia muy reducida en el comportamiento de la simulación.
CAPÍTULO 4 PRUEBAS Y AJUSTE En el capítulo 3 se implementa en el simulador Gazebo un modelo del robot utilizando sus parámetros reales. Sin embargo, esto no implica que el comportamiento en la simulacion se ajuste a la realidad, tanto por las simplificaciones y aproximaciones del modelo como por las características de Gazebo. Por lo tanto, en este capítulo se realizan una serie de pruebas para comparar las respuestas tanto del robot real como del simulado a las mismas órdenes, con la idea de ajustarlo lo máximo posible. Posteriormente, se evalúan los resultados de este ajuste. Hay que mencionar que en estos momentos el control de las ruedas traseras del robot real no funciona, por lo que únicamente se puede utilizar en modo coche. Por consiguiente, ése es el modo del funcionamiento que se ha utilizado para realizar las pruebas y ajustar el simulador. 4.1. Pruebas Se han realizado una serie de pruebas utilizando el robot real, guardando la información que proporciona en rosbags. Después se usa para reproducir las mismas órdenes en el simulador. Entonces se pueden comparar las trayectorias y velocidades, buscar las diferencias e intentar corregirlas. Los resultados de estas pruebas se recogen en el anexo E. Se llevan a cabo seis pruebas distintas para poder ajustar el robot. Dos de ellas son trayectorias rectilíneas efectuadas a velocidades distintas. Otras dos son simplemente giros con velocidades crecientes, cada uno en un sentido. Por último, se efectúan dos ochos, a velocidades distintas. Todas las pruebas se realizan sobre un suelo de grava. Además, se repiten tres de esas pruebas para comprobar el resultado del ajuste. Por último, se realizan dos pruebas más para observar
32 CAPÍTULO 4. PRUEBAS Y AJUSTE cómo funciona el simulador en una condiciones para las que no ha sido ajustado específicamente. Esta serie de pruebas permiten encontrar errores tanto en la trayectoria del robot como en sus velocidades lineal y angular y los ángulos de la rueda central virtual. Un nodo de ROS se encarga de almacenar los mensajes de salida robot real, transformarlos en mensajes de entrada para el robot simulado y volver a reproducirlos con la sincronización adecuada. En el anexo B se explica cómo son estos mensajes. Además, otro nodo almacena información durante la simulación y dibuja la variación en el tiempo de las velocidades lineal y angular y del ángulo virtual frontal de las robots real, simulado y teórico. Adicionalmente, se calculan una serie de valores sobre los tres robots y las relaciones entre sus comportamientos en cada prueba. Se mide la distancia total recorrida en cada trayectoria, además del tiempo que le cuesta recorrerla. El anexo D explica con más detalles cómo se organizan los diferentes nodos. A partir de esos datos se puede obtener la velocidad lineal media. También se calcula la velocidad angular media. Para ambos casos se utilizan valores absolutos. En el caso de la velocidad lineal no es realmente importante, ya que las pruebas se realizan avanzando, al ser éste el comportamiento más habitual del robot. Sin embargo, para la velocidad angular es vital considerar valores absolutos, ya que de lo contrario en las pruebas que gira aproximadamente lo mismo hacia cada sentido parecería que no ha girado nada. Otro dato que se considera interesante es la separación final entre las posiciones finales de cada robot, aunque no hay que olvidar que el error de posición se acumula, por lo que también se calculan las separaciones finales por metro recorrido. Aún así, hay que tener en cuenta la posibilidad de que trayectorias muy distintas terminen en puntos cercanos simplemente por azar, por lo que estos valores deben ser tratados con cuidado. También se computan los errores existentes entre las velocidades y los ángulos de los robots real y simulado. Se calcula su media, su desviación típica y la media de sus valores absolutos. Esta última media informa sobre la magnitud de los errores, mientras que los dos primeros también nos permiten saber algo sobre su distribución. Por último, se buscan correlaciones entre los errores de velocidad lineal y angular y las propias velocidades lineal y angular. El coeficiente de Pearson mide la correlación lineal y el de Spearman la correlación entre su orden [ 17 ]. Se utilizan las correlaciones de la simulación, ya que son conocidas y pueden permitir corregir esos errores. Los valores reales no son conocidos durante la simulación. Para conocer lo significativas que son esas correlaciones se calcula la probabili-
4.2. AJUSTE DEL MODELO 33 Rueda Radio medido (m) Radio ajustado (m) Delantera izquierda 0,295 0,294 Delantera derecha 0,298 0,299 Trasera izquierda 0,302 0,300 Trasera derecha 0,306 0,307 Tabla 4.1: Radios de las ruedas ajustados. dad de que se produzcan bajo la hipótesis nula de que no existe correlación. Se asume que la distribución que ésta sigue es una t de Student con n - 2 grados de libertad, donde n es el tamaño de la muestra [ 17 ]. A esta probabilidad se le llama valor p. 4.2. Ajuste del modelo Una vez realizadas las distintas pruebas propuestas en la sección 4.1, cuyos resultados se presentan en el anexo E, se puede pasar a corregir los problemas observados. Los más importantes son el desvío hacia la izquierda debido a las diferencias entre radios, el error en la velocidad lineal en giros hacia la derecha y el deslizamiento en velocidades angulares elevadas. El objetivo principal es ajustar las velocidades. Las trayectorias van acumulando error y es más difícil utilizarlas para comprobar lo bien que funciona el simulador. Además, un comportamiento más realista de las velocidades implica que las posiciones también mejorarán. 4.2.1. Radio de las ruedas En primer lugar, se busca imitar la desviación a la izquierda del robot real modificando los radios de las ruedas. Para empezar, se miden las ruedas en la realidad y se introducen esas medidas en el simulador. Acto seguido, se prueba con esos valores y se van modificando hasta llegar a un resultado satisfactorio, sin alejarse mucho de las mediciones. La tabla 4.1 muestra tanto radios medidos como los finales. En la figura 4.1 se muestran las trayectorias tanto utilizando los radios medidos como tras el ajuste. Es destacable que una diferencia de unos pocos milímetros tiene un efecto bastante apreciable en esas trayectorias. Hay que señalar que estos radios cambian según cómo estén hinchadas las ruedas, la presión y la temperatura, entre otros factores, por lo que este ajuste únicamente será correcto para las circunstancias de esta prueba. Además, hace que
40 CAPÍTULO 4. PRUEBAS Y AJUSTE Figura 4.5: Diferentes trayectorias más larga. En azul la trayectoria teórica, en rojo la real y en verde la simulada. Figura 4.6: Diferentes velocidades angulares de la trayectoria de la figura 4.5.
4.4. RESUMEN DE RESULTADOS 41 entre los elementos de un vector. Para el compuesto por las dos coordenadas cartesianas x e y y la orientación θ de un movimiento en dos dimensiones es una matriz simétrica 3×3: Σ = σ2 xσxy σxθ σxy σ2 yσyθ σxθσyθσ2 θ , (4.2) donde los elementos de la diagonal principal son varianzas y el resto covarianzas. Con el objetivo de simplificar la obtención de estos valores, se busca su relación con las varianzas de la distancia recorrida, s , y el ángulo de la rueda virtual central, φ . Para ello se lineariza utilizando un desarrollo de Taylor de primer orden: Σ = J Q JT. (4.3) Se considera que el error de s aumenta linealmente con la velocidad, mientras que con φ se considera constante. Q es la matriz que contiene esas dos varianzas, además de su covarianza: Q= |s|·σ2 sσsφ σsφσ2 φ , (4.4) mientras que J es la matriz jacobiana de la función que relaciona los incrementos de posición y ángulo con s y φ . En el anexo G se explica cómo se obtienen sus términos. A la hora de estimar los errores se utiliza una prueba real del robot y se compara con el comportamiento de la simulación. Se escoge el peor caso posible, una trayectoria donde la velocidad del robot sea elevada. Además, dado que el error de deslizamiento aumenta linealmente con la velocidad angular [ 19 ], se utiliza el ángulo máximo de las ruedas. Tampoco se usa el ajuste del deslizamiento con el ángulo de las ruedas. Los resultados se presentan en la tabla 4.2. Estos valores se introducen en el simulador tal y como se explica en el anexo F. Además, también se explica cómo modificarlos en el caso de que sea necesario. 4.4. Resumen de resultados A continuación, se presenta un breve resumen de los resultados obtenidos tanto en el análisis de sensibilidad, presentado en la sección 3.4, como del ajuste realizado en el presente capítulo.
42 CAPÍTULO 4. PRUEBAS Y AJUSTE Elemento Valor estimado σ2 s0,0001373 (m2) σ2 φ0,0001985 (rad2) σsφ-0,00002115 (m·rad) Tabla 4.2: Estimación de la matriz de covarianzas Q. Los dos factores que más error introducen son: La variación en el tamaño de las ruedas. En el anexo C se ha comprobado que pequeñas variaciones en ese tamaño producen grandes cambios en el comportamiento dela simulación. Además, en la sección 2.2.1 se explica que este tamaño no es constante, siendo distinto para diferentes condiciones. El deslizamiento lateral del robot. A velocidades angulares elevadas, por encima de aproximadamente 0,3 rad/s, se produce un importante efecto de deslizamiento que puede dar lugar a errores muy importantes, como se explica en la sección 4.2.3. Además, al depender tanto del estado del terreno como de las condiciones atmosféricas no puede ajustarse el modelo sin más, ya que cambia para cada caso. Se pueden reducir estos errores modificando el ajuste para cada caso concreto, tal y como se explica en el anexo F. Además, en la sección 4.3.1 se propone un modelo de error gaussiano para el simulador, que permite acotarlo.
CAPÍTULO 5 MODELADO VISUAL DEL ROBOT Este capítulo versa sobre el aspecto visual del robot y cómo reflejarlo en el simulador Gazebo, mediante el uso de una cámara RGB-D. En primer lugar se describen las herramientas utilizadas, tanto la cámara como el software. Después se explica cómo se alinean varias capturas de esa cámara, cuya información se almacena en las llamadas nubes de puntos. Por último, se proponen varios métodos para la reconstrucción de superficies a partir de una serie de nubes de puntos alineadas. Utilizar este tipos de métodos en vez de un programa de CAD tiene como propósito de facilitar la creación de otros modelos tridimensionales. En especial, se podrían crear escenarios más realistas para el simulador en menos tiempo. 5.1. Herramientas utilizadas En esta sección se explica brevemente cómo es la cámara utilizada y las dos librerías más importantes que se han usado: PCL y OpenCV. 5.1.1. Cámara Para la captura de las imágenes se utiliza una cámara RGB-D. En concreto, se utiliza un dispositivo Kinect, desarrollado inicialmente por Microsoft para su videoconsola Xbox 360. Las siglas RGB significan Red Green Blue y se refieren a una cámara digital normal. Ésta almacena las imágenes como matrices bidimensionales de píxeles. Éstos contienen tres campos con los colores rojo, verde y azul. La D significa profundidad, del inglés depth, debido al sensor de profundidad con el que estas cámaras cuentan. Un proceso de triangulación es utilizado para
44 CAPÍTULO 5. MODELADO VISUAL DEL ROBOT Figura 5.1: Ejemplo de nube de puntos que muestra al robot. obtenerla [ 20 ]. Hay que tener en cuenta que la resolución disminuye con el cuadrado de la distancia a la cámara. Pasa de aproximadamente 2 mm a un metro a 2,5 cm a tres metros y 7 cm a cinco metros [ 21 ]. Esto limita el rango de visión, ya que, a pesar de que la cámara es capaz de detectar objetos hasta unos seis metros, la precisión de esas medidas es muy reducida. En la práctica se recomienda limitar la distancia a unos tres metros, dependiendo de la aplicación. También existe un límite inferior en torno a 60 cm. Un método para almacenar la información combinada de color y profundidad es mediante una nube de puntos. Cada píxel se coloca en un espacio cartesiano tridimensional utilizando su profundidad y su posición en la imagen RGB bidimensional. Al visualizarse, el conjunto de puntos recuerda a una nube, como se puede ver en la figura 5.1. Con la ayuda de OpenNI, un driver de código abierto, se pueden capturar nubes de puntos con el dispositivo Kinect para su posterior uso. 5.1.2. PCL PCL, Point Cloud Library, es una herramienta que se puede utilizar el procesado de nubes de puntos [ 22 ] [ 23 ]. Originalmente surgió como un paquete de
5.2. ALINEACIÓN DE NUBES DE PUNTOS 45 ROS. De hecho, es posible añadir uno o varios sensores Kinect al robot y que éste reciba y procese su información dentro de uno o varios nodos de ROS. Incluye una serie de funciones para su alineación y modificación. Además, tiene implementados varios algoritmos para la reconstrucción de superficies a partir de nubes. Posteriormente, esas superficies pueden ser guardadas en un formato compatible con Gazebo como Collada. Para ello se utiliza un programa para la modificación de mallas, como MeshLab. 5.1.3. OpenCV Para el procesado de imágenes en dos dimensiones se puede usar OpenCV, Open Source Computer Vision [ 24 ]. También está integrado en ROS. Entre muchas otras funciones, permite la búsqueda de emparejamientos entre dos imágenes, algo que se utiliza en el proceso de alineamiento de nubes de puntos. 5.2. Alineación de nubes de puntos Es necesario utilizar varias nubes de puntos tomadas desde distintos puntos para lograr una reconstrucción completa de una escena o de un objeto. Por ello, conocer la transformación que permita pasar todas ellas al mismo sistema de referencia es imprescindible. Este proceso se conoce como registro o alineación de nubes de puntos. En primer lugar, se buscan correspondencias entre las imágenes bidimensionales. Para ello se utiliza el extractor de keypoints, o puntos clave, SURF (Speeded Up Robust Features) implementado en OpenCV [ 25 ]. Estos puntos se obtienen de la imagen transformada a escala de grises. También se computa un descriptor para cada uno. Se buscan los keypoints correspondientes entre las imágenes utilizando un Flann Based Matcher, emparejador basado en Flann (Fast Approximate Nearest Neighbors) [ 26 ]. Es otro algoritmo que ya está implementado en OpenCV. La figura 5.2 muestra este proceso para dos imágenes. Se presentan únicamente algunos de ellos para facilitar su visualización. Después es necesario rechazar los emparejamientos erróneos, mediante el uso de RANSAC (Random Sample Consensus)[ 27 ]. De nuevo, se utiliza la versión disponible en OpenCV. Una vez eliminados esos emparejamientos erróneos se transforman los restantes a tres dimensiones en la nube de puntos y se vuelve a aplicar RANSAC, con dos objetivos. El primero es rechazar algún emparejamiento erróneo que todavía pueda quedar. El segundo es obtener una primera aproximación de la matriz
46 CAPÍTULO 5. MODELADO VISUAL DEL ROBOT Figura 5.2: Emparejamientos entre dos imágenes utilizando el Flann Based Matcher. de transformación entre las nubes. Al estar trabajando con nubes se utilizan los métodos de PCL a partir de este punto. Tras ese alineamiento preliminar se aplica ICP, Iterative Closest Point [ 28 ]. Este algoritmo busca minimizar los errores entre dos nubes que ya estén aproximadamente alineadas. Una vez realizado se obtiene una matriz de transformación que permite pasar la segunda nube al sistema de referencia de la primera y se da por concluido el proceso de registro. Las sucesivas nubes se alinean con la anterior y se les aplica esa transformación y todas las anteriores para que el sistema de referencia de todas ellas sea el mismo, correspondiente con el de la primera nube. 5.3. Reconstrucción de superficies Antes de proceder a reconstruir las superficies es necesario eliminar la parte de las nubes que no se corresponden con el objeto que se quiere utilizar. Para ello, se asume que estará situado encima del suelo y suficientemente alejado de otros objetos. Se proporciona una herramienta para escoger la porción de espacio donde está el objeto y se eliminan los puntos exteriores, como se muestra en la figura 5.3. Para simplificar la elección del espacio se escoge un punto central y una distancia máxima a ese punto, formando una esfera. Después se busca el mayor plano de la nube restante y se elimina. Se asume que este plano es el suelo. Por supuesto, este método presenta importantes limitaciones, pero es útil como una primera aproximación que permite continuar con el proceso. Se pide confirmación antes de eliminarlo, ya que no tendría sentido utilizarlo para escenarios, donde en principio es interesante conservar las nubes
5.3. RECONSTRUCCIÓN DE SUPERFICIES 47 (a) Colocación de la esfera (b) Resultado Figura 5.3: Recorte de nubes de puntos. En (a) se muestra la nube donde se puede modificar la esfera amarilla y en (b) el resultado.
48 CAPÍTULO 5. MODELADO VISUAL DEL ROBOT Figura 5.4: Nube de puntos utilizada para los ejemplos de reconstrucción de superficies. enteras. Es posible que existan puntos espurios, que deben ser encontrados y eliminados. Se utiliza un algoritmo que elimina los puntos que estén alejados más de una desviación típica de la distancia media a sus vecinos más cercanos [ 29 ]. También se utiliza un Voxel Grid para reducir el tamaño de las nubes, con el fin de acelerar el proceso. Este método llena de cuboides el espacio y dentro de cada uno aproxima los puntos por su centroide. Antes de utilizar los algoritmos para reconstruir las superficies es necesario estimar sus vectores normales. Para ello se utiliza un método que modifica esos vectores y consigue superficies más lisas y uniformes, aproximando por polinomios con mínimos cuadrados móviles (Moving Least Squares, MLS) [ 30 ]. Es importante reseñar que en algunos casos este método provoca superficies ligeramente onduladas, algo que debe ser tenido en cuenta cuando se usa. Se proponen varias alternativas para la reconstrucción de superficies. La primera es Greedy Projection Triangulation [ 31 ]. Un algoritmo greedy, que se puede traducir como voraz o ávido, sigue una heurística para buscar soluciones óptimas locales. De esta manera se puede conseguir una buena solución global, aunque no se garantiza. En este caso lo que se hace es crear un mallado triangular. El segundo método es la reconstrucción de superficies por Poisson (Poisson Surface Reconstruction)[ 32 ]. Busca una solución global, lo que lo hace menos
5.3. RECONSTRUCCIÓN DE SUPERFICIES 49 Figura 5.5: Ejemplo de reconstrucción de una superficie mediante Greedy Projection Triangulation. sensible al ruido. Sin embargo, siempre cierra la superficies, lo que es un problema cuando no se está intentando reconstruir un objeto cerrado. Si el objeto de la nube tiene varias partes las intenta unir de algun manera, generando superficies que no tienen ningún sentido. Otra posibilidad es utilizar Grid Projection [ 33 ]. Los resultados que produce son parecidos a los del primer método, pero es mucho más lento, pasando de unos pocos segundos a varias horas, dependiendo del tamaño de la nube de puntos utilizada. Por último, se aplica a los resultados un suavizado de malla Laplaciano [ 34 ], con el objetivo de reducir la rugosidad de las superficies generadas. Se aplican estos métodos a una pequeña parte de un escenario, mostrado en la nube de la figura 5.4. La figura 5.5 muestra un ejemplo del primer método presentado, la figura 5.6 del segundo y la figura 5.7 del tercero. Sería posible realizar varias modificaciones para permitir la reconstrucción de superficies a partir de un número mayor de nubes de puntos, que permitiría crear modelos tridimensionales de escenarios más grandes y del robot. Se puede utilizar cerrado de bucles basado en SLAM, Simultaneous Localization and Mapping [ 35 ], fijando una nube de puntos como referencia y transformando simultáneamente todas las demás a esa referencia [36] [37]. En [ 38 ]se aplica para mejorar el alineamiento de las nubes. En este proyecto
Anexos
ANEXO A FOTOGRAFÍAS DEL ROBOT En este anexo se incluyen una serie de fotografías del robot sobre el que trata el proyecto, con el objetivo de poder conocer su aspecto. Se presenta una visión de conjunto en las primeras imágenes, en las figuras A.1 y A.2. Después se incluyen algunos detalles. Los sensores láser situados tanto delante como detrás del robot se muestran en las figuras A.3 y A.4. El brazo robótico se puede ver en la figura A.5. La figura A.6 incluye una imagen de la geometría de dirección de Ackermann. En la figura A.7 se observan los sensores situados en el poste de la parte trasera, la cámara térmica y el GPS. Por último, los ordenadores montados a bordo del robot se muestran en la figura A.8.
60 ANEXO A. FOTOGRAFÍAS DEL ROBOT Figura A.1: Fotografía lateral-trasera del robot. Figura A.2: Fotografía lateral del robot.
61 Figura A.3: Fotografía delantera del robot. Figura A.4: Fotografía trasera del robot.
62 ANEXO A. FOTOGRAFÍAS DEL ROBOT Figura A.5: Fotografía del brazo robótico. Figura A.6: Fotografía de la geometría de giro de Ackermann.
63 Figura A.7: Fotografía de la cámara térmica y del sensor GPS. Figura A.8: Fotografía de los ordenadores situados a bordo del robot.
ANEXO B MENSAJES DE ROS Este anexo muestra los mensajes de ROS utilizados tanto para enviar las órdenes al robot como para que éste informe sobre su estado. Saber cómo son estos mensajes es imprescindible para poder interactuar con el simulador, y se incluyen para facilitar su consulta. Además, se ofrece una breve explicación de cada uno. Se han utilizado los mismos que usa el robot real, con el objetivo de hacer más sencillo el uso del simulador. La primera línea de cada mensaje indica tanto el paquete de ROS como el propio nombre del mensaje. Las demás son los distintos campos del mensaje, incluyendo en primer lugar el tipo y en segundo lugar el nombre. El primer mensaje, CarLikeCmd, es el utilizado para enviar las órdenes al robot en el modo coche. Incluye información sobre la acción que debe realizar, action, la velocidad lineal que se le solicita en metros por segundo, target_speed, y el ángulo requerido a la rueda virtual central en radianes, target_steering. En qué consiste esa rueda virtual se explica en la sección 2.3.1. rosbucar/CarLikeCmd: uint8 action float32 target_speed float32 target_steering El siguiente mensaje, CarLikeInfo, es uno de los mensajes que utiliza el robot para proporcionar información. Se incluye el estado del robot, status, la velocidad lineal actual en metros por segundo, current_speed y el ángulo de la rueda virtual central en radianes, current_steering. También se incluyen las órdenes que ha recibido el robot del mensaje anterior. Es muy importante tener en cuenta que, en caso de que el deslizamiento sea importante, calcular la velocidad angular a partir del ángulo de la rueda es muy inexacto.
72 ANEXO C. ANÁLISIS DE SENSIBILIDAD Parámetro Valor elegido Valores probados Masa robot 200 kg 150; 250 Posición masa brazo 1 0,5; 0 Momentos de inercia: Ix42,58 kg m24,258; 425,8 Iy154,58 kg m215,458; 1545,8 Iz168,33 kg m216,833; 1683,3 Coeficiente de rozamiento 0,9 0,5; 100 Radios de las ruedas: Delantera izquierda 0,3 m 0,295 Delantera derecha 0,3 m 0,305 Trasera izquierda 0,3 m 0,295 Trasera derecha 0,3 m 0,305 Tabla C.1: Parámetros que serán modificados en el análisis de sensibilidad del simulador. En el primero se cambia la masa total del robot, utilizando los valores entre lo que se cree que está. Los resultados se muestran en la tabla C.2. Se puede apreciar que en ninguno de los casos se produce ninguna variación importante. Es cierto que las velocidades angulares de las rectas cambian bastante, pero esto se debe únicamente a que son valores muy cercanos a cero, a efectos prácticos pueden ser considerados nulos. En la segunda prueba lo que se cambia es la posición de la masa que representa la posición del brazo robótico. La posición 1 representa que está en la esquina superior izquierda, la 0 que está en el centro del robot y la 0,5 que está a medio camino entre las dos. Los resultados se presentan en la tabla C.3. Al igual que en caso anterior, no se descubren variaciones significativas. En tercer lugar, la última prueba relacionada con la distribución de masa cambia el tensor de inercia. Los números indican el tensor que se utiliza de la tabla C.1. El 1 es para el original, el 2 es ése dividido entre diez y el 3 multiplicado por diez. Incluso utilizando unos valores extremos, no se produce ninguna variación importante. C.2. Rozamiento Se prueban coeficientes de rozamiento razonables para el contacto entre la goma de los neumáticos y distintas superficies, según [10]. Sin embargo, no hay
C.2. ROZAMIENTO 73 Trayectoria Recta lenta Recta rápida Masa 250 200 300 250 200 300 Distancia recorrida (m) 43,04 43,03 43,09 32,99 32,99 33,00 Velocidad media (m/s) 0,5136 0,5135 0,5148 1,641 1,641 1,642 Vel. angular media (rad/s) 0,0005671 0,0005235 0,0005495 0,0009577 0,001201 0,0008737 Trayectoria Ocho lento Ocho rápido Masa 250 200 300 250 200 300 Distancia recorrida (m) 32,35 32,34 32,36 47,05 47,04 47,16 Velocidad media (m/s) 0,4218 0,4222 0,4219 1,010 1,009 1,012 Vel. angular media (rad/s) 0,1326 0,1332 0,1327 0,3090 0,3070 0,3084 Tabla C.2: Resultados de las distintas pruebas cambiando la masa del robot.
74 ANEXO C. ANÁLISIS DE SENSIBILIDAD Trayectoria Recta lenta Recta rápida Posición 1 0,5 0 1 0,5 0 Distancia recorrida (m) 43,04 43,07 43,09 32,99 32,99 32,99 Velocidad media (m/s) 0,5136 0,5140 0,5148 1,641 1,641 1,641 Vel. angular media (rad/s) 0,0005671 0,0003005 0,00009154 0,0009577 0,0004016 0,0001269 Trayectoria Ocho lento Ocho rápido Posición 1 0,5 0 1 0,5 0 Distancia recorrida (m) 32,35 32,30 32,39 47,05 47,13 47,11 Velocidad media (m/s) 0,4218 0,4211 0,4224 1,010 1,011 1,011 Vel. angular media (rad/s) 0,1326 0,1327 0,1330 0,3090 0,3090 0,3095 Tabla C.3: Resultados de las distintas pruebas cambiando la posición de la masa que simula el brazo robótico.
C.2. ROZAMIENTO 75 Trayectoria Recta lenta Recta rápida Tensor 1 2 3 1 2 3 Distancia recorrida (m) 43,04 43,05 43,07 32,99 32,99 33,00 Velocidad media (m/s) 0,5136 0,5137 0,5140 1,641 1,641 1,642 Vel. angular media (rad/s) 0,0005671 0,0006404 0,0001330 0,0009577 0,0009448 0,0003670 Trayectoria Ocho lento Ocho rápido Tensor 1 2 3 1 2 3 Distancia recorrida (m) 32,35 32,30 32,30 47,05 47,28 47,07 Velocidad media (m/s) 0,4218 0,4211 0,4217 1,010 1,017 1,010 Vel. angular media (rad/s) 0,1326 0,1326 0,1326 0,3090 0,3119 0,3088 Tabla C.4: Resultados de las distintas pruebas cambiando el tensor de inercia del robot.
76 ANEXO C. ANÁLISIS DE SENSIBILIDAD Figura C.3: Trayectorias efectuadas tanto por el robot simulado, en verde, como por el robot real, en rojo, en la prueba con variación de radios de las ruedas. La trayectoria teórica se muestra en azul. que olvidar que hay mucho más parámetros que influyen en la fuerza de fricción. Utilizar un valor razonable no garantiza que los resultados sean realistas, así que se añade una prueba con un valor muy elevado. De esta forma, se puede comparar con un caso en el que no se produce deslizamiento. Los resultados se muestran en la tabla C.5. Al igual que en las demás pruebas, no se aprecian cambios significativos. Hay que insistir que esto no implica que el rozamiento no sea importante en el robot real, únicamente que para imitar su comportamiento no se puede utilizar este parámetro, tal y como está diseñado el modelo. C.3. Radios de las ruedas La tabla C.6 presenta los resultados de la última de las pruebas. La prueba original se muestra bajo el número 1 y la otra bajo el 2. En esta segunda prueba se reducen ligeramente los radios de las ruedas del lado izquierdo y se aumentan las del derecho. Se aprecia una importante variación en la velocidad angular de las trayectorias rectas, que provoca que la trayectoria del robot se aleje bastante de la recta que tendría que recorrer teóricamente, como se puede ver en la figura C.3. También se puede destacar que el robot real también presenta este comportamiento, aunque en menor medida.
C.3. RADIOS DE LAS RUEDAS 77 Trayectoria Recta lenta Recta rápida Rozamiento 0,9 0,5 100 0,9 0,5 100 Distancia recorrida (m) 43,04 43,04 43,09 32,99 33,00 33,03 Velocidad media (m/s) 0,5136 0,5143 0,5141 1,641 1,642 1,643 Vel. angular media (rad/s) 0,0005671 0,0005224 0,0005692 0,0009577 0,0008564 0,001058 Trayectoria Ocho lento Ocho rápido Rozamiento 0,9 0,5 100 0,9 0,5 100 Distancia recorrida (m) 32,35 32,34 32,33 47,05 47,05 47,07 Velocidad media (m/s) 0,4218 0,4222 0,4220 1,010 1,010 1,012 Vel. angular media (rad/s) 0,1326 0,1331 0,1330 0,3090 0,3083 0,3080 Tabla C.5: Resultados de las distintas pruebas cambiando el rozamiento de las ruedas con el suelo.
78 ANEXO C. ANÁLISIS DE SENSIBILIDAD Trayectoria Recta lenta Recta rápida Radios 1 2 1 2 Distancia recorrida (m) 43,04 43,02 32,99 32,97 Velocidad media (m/s) 0,5136 0,5134 1,641 1,632 Vel. angular media (rad/s) 0,0005671 0,006631 0,0009577 0,03070 Trayectoria Ocho lento Ocho rápido Radios 1 2 1 2 Distancia recorrida (m) 32,35 32,41 47,05 47,21 Velocidad media (m/s) 0,4218 0,4226 1,010 1,013 Vel. angular media (rad/s) 0,1326 0,1334 0,3090 0,3089 Tabla C.6: Resultados de las distintas pruebas cambiando los radios de las ruedas.
ANEXO D ESTRUCTURA DE NODOS EN ROS En este anexo se describen los nodos de ROS utilizados para las pruebas del capítulo 4 y las comunicaciones que se producen entre ellos mediante topics. En primer lugar, se reproduce la información almacenada en una rosbag de una prueba real del robot. La figura D.1 muestra un esquema de los nodos en ese caso. El nodo cuyo nombre empieza por /play es el que está leyendo la rosbag y publicando sus topics. Los más importantes son /car/out, de tipo CarLikeInfo, y /localization/out, de tipo PoseWithCovarianceStamped. En el anexo B se describen los distintos tipos de mensajes de ROS utilizados. extract_vel_cmd almacena esa información, que luego será reproducida de nuevo con el formato adecuado para la entrada del robot simulado. El simulador, en el nodo gazebo, ya está activo, aunque todavía no recibe información y por lo tanto el robot no realiza ninguna acción. simulation_control es el nodo que se encarga de procesar todos los datos que se reciben, al final del proceso. Hasta entonces, va almacenando la información que necesita. Por último, convert_ gps [ 44 ]transforma la posición del GPS en latitud y longitud a coordenadas cartesianas. Sin embargo, se ha considerado que la posición que proporciona el IMU es más fiable para las pruebas realizadas en este proyecto, por lo que finalmente no ha sido utilizada. Una vez finaliza la reproducción de la rosbag, el esquema cambia, como se refleja en la figura D.2. El nodo extract_vel_cmd transforma los datos recibidos al formato de las órdenes del robot, publicando en el topic /robucar/car/in mensajes del tipo CarLikeCmd. También publica la información de odometría en /real_robot/odometry, con el tipo Odometry. Ahora el robot simulado en el nodo gazebo ya está recibiendo órdenes y moviéndose. Publica en /robucar/car_like_info mensajes del tipo CarLikeInfo y en /robucar/odometry del tipo Odometry. También se publica en /robu-
80 ANEXO D. ESTRUCTURA DE NODOS EN ROS Figura D.1: Esquema de los nodos de ROS durante la reproducción de la información de una prueba.
81 Figura D.2: Esquema de los nodos de ROS durante el procesado de la información de una prueba.
88 ANEXO E. PRUEBAS DEL ROBOT Robot Real Simulado Teórico Distancia recorrida (m) 42,49 42,53 42,49 Tiempo total (s) 98,4 98,4 98,3 Velocidad media (m/s) 0,4318 0,4322 0,4322 Vel. ang. media (rad/s) 0,004671 0,0005582 0 Comparación Sim./Real Sim./Teór. Real/Teór. Separación final (m) 4,637 0,02326 4,65 Separación por metro 0,109 0,000547 0,1094 Error vel. lineal (m/s) Media -0,0006 Desviación típica 0,0156 Media abs. 0,0030 Error vel. angular (rad/s) Media 0,0022 Desviación típica 0,0064 Media abs. 0,0048 Error ángulo (rad) Media 0,0015 Desviación típica 0,0000 Media abs. 0,0015 Correlación entre error vel. lineal y vel. lineal Pearson -0,0760 Valor p 0,02361 Spearman -0,2731 Valor p 1,533e-17 Correlación entre error vel. angular y vel. lineal Pearson 0,5365 Valor p 5,522e-73 Spearman 0,5367 Valor p 4,642e-73 Correlación entre error vel. lineal y vel. angular Pearson 0,1896 Valor p 7,062e-09 Spearman 0,0742 Valor p 0,0271 Correlación entre error vel. angular y vel. angular Pearson 0,0586 Valor p 0,07442 Spearman 0,1168 Valor p 0,000491 Tabla E.1: Resultados de la prueba 1, recta lenta antes del ajuste.
E.1. RECTAS 89 Figura E.5: Diferentes trayectorias de la prueba 2, recta rápida antes del ajuste. Figura E.6: Diferentes velocidades lineales de la prueba 2, recta rápida antes del ajuste.
90 ANEXO E. PRUEBAS DEL ROBOT Figura E.7: Diferentes velocidades angulares de la prueba 2, recta rápida antes del ajuste. Figura E.8: Diferentes ángulos de la rueda virtual de la prueba 2, recta rápida antes del ajuste.
E.1. RECTAS 91 Robot Real Simulado Teórico Distancia recorrida (m) 38,6 38,59 38,6 Tiempo total (s) 20,9 20,9 20,9 Velocidad media (m/s) 1,847 1,847 1,847 Vel. ang. media (rad/s) 0,02344 0,0009438 0 Comparación Sim./Real Sim./Teór. Real/Teór. Separación final (m) 9,257 0,03026 9,273 Separación por metro 0,2399 0,000784 0,2403 Error vel. lineal (m/s) Media 0,0001 Desviación típica 0,0645 Media abs. 0,0317 Error vel. angular (rad/s) Media 0,0217 Desviación típica 0,0188 Media abs. 0,0238 Error ángulo (rad) Media -0,0019 Desviación típica 0,0004 Media abs. 0,0019 Correlación entre error vel. lineal y vel. lineal Pearson -0,3413 Valor p 1,08e-06 Spearman -0,5120 Valor p 8,598e-15 Correlación entre error vel. angular y vel. lineal Pearson 0,6942 Valor p 1,09e-30 Spearman 0,6102 Valor p 4,58e-22 Correlación entre error vel. lineal y vel. angular Pearson 0,3907 Valor p 1,429e-08 Spearman 0,5340 Valor p 3,226e-16 Correlación entre error vel. angular y vel. angular Pearson -0,1805 Valor p 0,0129 Spearman -0,1551 Valor p 0,03208 Tabla E.2: Resultados de la prueba 2, recta rápida antes del ajuste.
92 ANEXO E. PRUEBAS DEL ROBOT Figura E.9: Diferentes trayectorias de la prueba 3, recta lenta después del ajuste. Figura E.10: Diferentes velocidades lineales de la prueba 3, recta lenta después del ajuste.
E.1. RECTAS 93 Figura E.11: Diferentes velocidades angulares de la prueba 3, recta lenta después del ajuste. Figura E.12: Diferentes ángulos de la rueda virtual de la prueba 3, recta lenta después del ajuste.
94 ANEXO E. PRUEBAS DEL ROBOT Robot Real Simulado Teórico Distancia recorrida (m) 42,49 42,46 42,49 Tiempo total (s) 98,3 98,3 98,3 Velocidad media (m/s) 0,4322 0,432 0,4323 Vel. ang. media (rad/s) 0,004676 0,00225 0 Comparación Sim./Real Sim./Teór. Real/Teór. Separación final (m) 0,1277 4,525 4,65 Separación por metro 0,003007 0,1066 0,1095 Error vel. lineal (m/s) Media 0,0005 Desviación típica 0,0117 Media abs. 0,0027 Error vel. angular (rad/s) Media 0,0001 Desviación típica 0,0063 Media abs. 0,0043 Error ángulo (rad) Media 0,0014 Desviación típica 0,0001 Media abs. 0,0014 Correlación entre error vel. lineal y vel. lineal Pearson -0,0779 Valor p 0,02064 Spearman -0,2791 Valor p 2,771e-18 Correlación entre error vel. angular y vel. lineal Pearson 0,5425 Valor p 7,286e-75 Spearman 0,5799 Valor p 7,806e-88 Correlación entre error vel. lineal y vel. angular Pearson -0,0694 Valor p 0,03807 Spearman -0,1258 Valor p 0,0001696 Correlación entre error vel. angular y vel. angular Pearson 0,3767 Valor p 1,735e-33 Spearman 0,5765 Valor p 1,443e-86 Tabla E.3: Resultados de la prueba 3, recta lenta después del ajuste.
E.2. GIROS 95 E.2. Giros La prueba 4 corresponde a un giro hacia la izquierda y la prueba 5 a uno hacia la derecha. Se intenta observar la importancia del deslizamiento en giros en ambos sentidos. En las dos pruebas se gira el máximo las ruedas del robot y se va incrementando gradualmente su velocidad lineal. En esta situación, al aumentarla también lo hace linealmente la velocidad angular. En teoría, para un ángulo de ruedas constante el radio de giro no debería variar, pero las trayectorias indican claramente que ha ido aumentando. Además, las gráficas de velocidad angular muestran que, a partir de un punto, casi no aumenta más, y se queda muy lejos del valor teórico. Se observa una correlación lineal positiva muy fuerte entre el error en velocidad angular y las velocidades lineal y angular, en ambos casos. Una diferencia muy clara es el error en velocidad lineal que se produce al girar a la derecha, con una correlación lineal positiva casi perfecta con las velocidades. En el giro hacia la izquierda la correlación lineal es mucho más débil, aunque siga existiendo según el coeficiente de Spearman. Este efecto se debe a la asimetría de la distribución de masas en el modelo del simulador. Para comprobar la corrección del ajuste no se utilizan las pruebas de giros, ya que se considera que los ochos son más completos, al incorporar en la misma prueba un giro en ambos sentidos.
96 ANEXO E. PRUEBAS DEL ROBOT Figura E.13: Diferentes trayectorias de la prueba 4, giro hacia la izquierda antes del ajuste. Figura E.14: Diferentes velocidades lineales de la prueba 4, giro hacia la izquierda antes del ajuste.
E.2. GIROS 97 Figura E.15: Diferentes velocidades angulares de la prueba 4, giro hacia la izquierda antes del ajuste. Figura E.16: Diferentes ángulos de la rueda virtual de la prueba 4, giro hacia la izquierda antes del ajuste.
104 ANEXO E. PRUEBAS DEL ROBOT Figura E.23: Diferentes velocidades angulares de la prueba 6, ocho lento antes del ajuste. Figura E.24: Diferentes ángulos de la rueda virtual de la prueba 6, ocho lento antes del ajuste.
E.3. OCHOS 105 Robot Real Simulado Teórico Distancia recorrida (m) 28,81 29,34 28,81 Tiempo total (s) 53,4 53,4 53,41 Velocidad media (m/s) 0,5396 0,5494 0,5394 Vel. ang. media (rad/s) 0,1719 0,1785 0,1842 Comparación Sim./Real Sim./Teór. Real/Teór. Separación final (m) 1,695 0,4448 2,127 Separación por metro 0,05779 0,01516 0,07382 Error vel. lineal (m/s) Media -0,0226 Desviación típica 0,0251 Media abs. 0,0249 Error vel. angular (rad/s) Media 0,0002 Desviación típica 0,0386 Media abs. 0,0192 Error ángulo (rad) Media -0,0315 Desviación típica 0,3703 Media abs. 0,3497 Correlación entre error vel. lineal y vel. lineal Pearson 0,4227 Valor p 8,898e-24 Spearman 0,9124 Valor p 9,292e-207 Correlación entre error vel. angular y vel. lineal Pearson 0,1545 Valor p 0,0006628 Spearman 0,1290 Valor p 0,004683 Correlación entre error vel. lineal y vel. angular Pearson 0,3256 Valor p 5,007e-14 Spearman 0,4043 Valor p 1,16e-21 Correlación entre error vel. angular y vel. angular Pearson -0,0357 Valor p 0,2846 Spearman 0,2232 Valor p 5,227e-07 Tabla E.6: Resultados de la prueba 6, ocho lento antes del ajuste.
106 ANEXO E. PRUEBAS DEL ROBOT Figura E.25: Diferentes trayectorias de la prueba 7, ocho rápido antes del ajuste. Figura E.26: Diferentes velocidades lineales de la prueba 7, ocho rápido antes del ajuste.
E.3. OCHOS 107 Figura E.27: Diferentes velocidades angulares de la prueba 7, ocho rápido antes del ajuste. Figura E.28: Diferentes ángulos de la rueda virtual de la prueba 7, ocho rápido antes del ajuste.
108 ANEXO E. PRUEBAS DEL ROBOT Robot Real Simulado Teórico Distancia recorrida (m) 50,48 51,15 50,47 Tiempo total (s) 34,9 34,9 34,99 Velocidad media (m/s) 1,447 1,466 1,442 Vel. ang. media (rad/s) 0,2974 0,426 0,4396 Comparación Sim./Real Sim./Teór. Real/Teór. Separación final (m) 14,17 0,2932 14,46 Separación por metro 0,2771 0,005732 0,2865 Error vel. lineal (m/s) Media -0,0458 Desviación típica 0,0619 Media abs. 0,0553 Error vel. angular (rad/s) Media -0,0098 Desviación típica 0,1804 Media abs. 0,1518 Error ángulo (rad) Media -0,0123 Desviación típica 0,4034 Media abs. 0,3444 Correlación entre error vel. lineal y vel. lineal Pearson 0,3598 Valor p 1,539e-11 Spearman 0,2987 Valor p 3,809e-08 Correlación entre error vel. angular y vel. lineal Pearson 0,8924 Valor p 1,044e-120 Spearman 0,8864 Valor p 7,593e-117 Correlación entre error vel. lineal y vel. angular Pearson 0,3914 Valor p 1,276e-13 Spearman 0,2839 Valor p 1,935e-07 Correlación entre error vel. angular y vel. angular Pearson 0,9510 Valor p 1,395e-177 Spearman 0,9097 Valor p 3,606e-133 Tabla E.7: Resultados de la prueba 7, ocho rápido antes del ajuste.
E.3. OCHOS 109 Figura E.29: Diferentes trayectorias de la prueba 8, ocho lento después del ajuste. Figura E.30: Diferentes velocidades lineales de la prueba 8, ocho lento después del ajuste.
110 ANEXO E. PRUEBAS DEL ROBOT Figura E.31: Diferentes velocidades angulares de la prueba 8, ocho lento después del ajuste. Figura E.32: Diferentes ángulos de la rueda virtual de la prueba 8, ocho lento después del ajuste.
E.3. OCHOS 111 Robot Real Simulado Teórico Distancia recorrida (m) 28,81 29,4 28,81 Tiempo total (s) 53,3 53,3 53,2 Velocidad media (m/s) 0,5406 0,5516 0,5416 Vel. ang. media (rad/s) 0,1722 0,1795 0,1849 Comparación Sim./Real Sim./Teór. Real/Teór. Separación final (m) 2,011 0,8574 2,126 Separación por metro 0,06839 0,02916 0,07379 Error vel. lineal (m/s) Media -0,0108 Desviación típica 0,0133 Media abs. 0,0130 Error vel. angular (rad/s) Media -0,0043 Desviación típica 0,0382 Media abs. 0,0196 Error ángulo (rad) Media -0,0277 Desviación típica 0,3710 Media abs. 0,3488 Correlación entre error vel. lineal y vel. lineal Pearson 0,1297 Valor p 0,004529 Spearman 0,6685 Valor p 5,046e-69 Correlación entre error vel. angular y vel. lineal Pearson 0,1363 Valor p 0,00283 Spearman 0,2821 Valor p 1,238e-10 Correlación entre error vel. lineal y vel. angular Pearson 0,0941 Valor p 0,03813 Spearman 0,5493 Valor p 2,658e-42 Correlación entre error vel. angular y vel. angular Pearson -0,0584 Valor p 0,1619 Spearman 0,2656 Valor p 1,636e-09 Tabla E.8: Resultados de la prueba 8, ocho lento después del ajuste.
112 ANEXO E. PRUEBAS DEL ROBOT Figura E.33: Diferentes trayectorias de la prueba 9, ocho rápido después del ajuste. Figura E.34: Diferentes velocidades lineales de la prueba 9, ocho rápido después del ajuste.
E.3. OCHOS 113 Figura E.35: Diferentes velocidades angulares de la prueba 9, ocho rápido después del ajuste. Figura E.36: Diferentes ángulos de la rueda virtual de la prueba 9, ocho rápido después del ajuste.
120 ANEXO E. PRUEBAS DEL ROBOT Figura E.43: Diferentes velocidades angulares de la prueba 11, nuevo camino después del ajuste. Figura E.44: Diferentes ángulos de la rueda virtual de la prueba 11, nuevo camino después del ajuste.
E.4. NUEVAS PRUEBAS 121 Robot Real Simulado Teórico Distancia recorrida (m) 131,4 131,9 131,4 Tiempo total (s) 135,5 135,5 135,4 Velocidad media (m/s) 0,9701 0,9734 0,9708 Vel. ang. media (rad/s) 0,09009 0,09777 0,09665 Comparación Sim./Real Sim./Teór. Real/Teór. Separación final (m) 24,33 29,08 34 Separación por metro 0,1845 0,2204 0,2587 Error vel. lineal (m/s) Media -0,0032 Desviación típica 0,0092 Media abs. 0,0059 Error vel. angular (rad/s) Media -0,0054 Desviación típica 0,0258 Media abs. 0,0180 Error ángulo (rad) Media 0,0010 Desviación típica 0,1671 Media abs. 0,1139 Correlación entre error vel. lineal y vel. lineal Pearson -0,0385 Valor p 0,1478 Spearman 0,1989 Valor p 6,837e-13 Correlación entre error vel. angular y vel. lineal Pearson 0,2031 Valor p 2,111e-13 Spearman 0,2346 Valor p 1,258e-17 Correlación entre error vel. lineal y vel. angular Pearson 0,4054 Valor p 1,882e-53 Spearman 0,5751 Valor p 3,757e-118 Correlación entre error vel. angular y vel. angular Pearson 0,3399 Valor p 6,549e-37 Spearman 0,4554 Valor p 7,402e-69 Tabla E.11: Resultados de la prueba 11, nuevo camino después del ajuste.
122 ANEXO E. PRUEBAS DEL ROBOT E.5. Conclusiones El error que se producía en las rectas debido a los radios de las ruedas prácticamente se ha eliminado de la recta con la que se ajustó. La separación final se ha reducido aproximadamente 36 veces. Al probar con otra, se puede observar que se aproxima bastante, pero sí existe un pequeño error. Esto se debe a que la otra recta se probó en condiciones distintas, y cualquier pequeña variación en los tamaños de las ruedas se traduce en errores considerables. De cualquier forma, este error es más de diez veces más pequeño que antes del ajuste, de unos tres milímetros por cada metro recorrido. Para una trayectoria con curvas a una velocidad elevada los resultados se acercan más que antes de ajustar, reduciéndose el error en un 228%. Sin embargo, siguen sin ser muy precisos, con un error medio de 0,0043 rad/s. Esto se debe a que la corrección de velocidad angular se realiza para unas condiciones en concreto, que no son las de esta trayectoria. Sería necesario reajustar para esta situación o simplemente asumir que para altas velocidades angulares existe un error que debe ser tenido en cuenta. Al probar con una trayectoria más larga, en la prueba 11, se observa que los errores de posición, acumulados a lo largo del ensayo, son bastante considerables. Sin embargo, las velocidades lineales y los ángulos presentan errores muy reducidos. La principal causa del error en este caso es, de nuevo, la velocidad angular, con una media de 0,0054 rad/s. En general, se puede decir que el simulador es bastante realista para velocidades angulares reducidas. En cuanto el fenómeno del deslizamiento empieza a ser relevante los resultados empeoran considerablemente. Las posiciones terminan teniendo errores grandes, pero se debe principalmente a que se acumulan. Las velocidades lineales y los ángulos de la rueda virtual central se reproducen con exactitud, al igual que la velpcidad angular si ésta es reducida.
ANEXO F CONFIGURACIÓN DEL SIMULADOR Este anexo trata sobre los parámetros del simulador que se pueden controlar modificando el fichero configuration.urdf.xacro de la descripción URDF del robot. Todos los parámetros se introducen con el siguiente formato: <xacro:property name="nombre" value="valor" /> El campo name indica su nombre y el campo value el valor que toma. Xacro es un lenguaje de macros de XML que permite simplificar las descripciones de los robots. En este caso se utiliza para poder modificar todos los valores al principio del fichero. Las macros se encargan después de colocar esos valores en sus lugares correspondientes. El simulador permite utilizar un valor distinto para los cálculos que utilizan el radio de las ruedas y para cada rueda del modelo. wheel_radius es el teórico usado para esos cálculos, mientras que los otros cuatro son los del modelo. Todos los valores deben estar en metros. name="wheel_radius" value="0.3" name="front_left_radius" value="0.294" name="front_right_radius" value="0.299" name="back_left_radius" value="0.300" name="back_right_radius" value="0.307" La velocidad lineal y el ángulo virtual central máximos se controlan limitando las órdenes recibidas. Limitar directamente los ángulos de las ruedas provoca comportamientos extraños cuando éstas se acercan a ese límite. El parámetro que limita la velocidad lineal es wheel_turn_software_limit, en metros por segundo. robot_linear_speed_limit indica el valor máximo que puede tomar el ángulo, expresado en radianes.
124 ANEXO F. CONFIGURACIÓN DEL SIMULADOR name="wheel_turn_software_limit" value="0.4" name="robot_linear_speed_limit" value="4.0" La frecuencia con la que se actualiza el control de las ruedas, tanto el de la velocidad de giro como el del PID de los ángulos, se fija con control_update_rate. Su valor indica el período de actualización, en segundos. name="control_update_rate" value="0.1" Las constantes del controlador PID del ángulo de las ruedas se controlan con los siguientes parámetros. El término proporcional es pid_kp, el integral es pid_ki y el derivativo pid_kd. Hay que destacar que pequeños cambios en estos valores pueden provocar que el control pase a ser inestable. Por lo tanto, se recomienda modificarlos con cuidado. name="pid_kp" value="3.5" name="pid_ki" value="0.01" name="pid_kd" value="0.02" Para activar la corrección del ángulo de las ruedas para simular el deslizamiento hay que introducir un valor no nulo en sliding_on. El valor de velocidas angular a partir del cual empieza a tener efecto es lower_limit. A partir de ahí aumenta linealmente con la orden de velocidad angular hasta que ésta llega a upper_limit_theo, punto en el que la del simulador será upper_limit_real. A partir de ahí se mantiene constante. Todas esas velocidades angulares deben expresarse en radianes por segundo. name="sliding_on" value="1.0" name="lower_limit" value="0.3" name="upper_limit_real" value="0.55" name="upper_limit_theo" value="0.7" Es importante tener en cuenta que utilizar esta correción provoca que el ángulo deje de ser correcto, buscando una velocidad angular más realista para el caso para el que se hayan calculado los parámetros. Finalmente, las varianzas del desplazamiento del robot y del ángulo de la rueda central virtual son respectivamente sigma_s ysigma_phi. Estos valores se usan después para el cómputo de la matriz de covarianzas, como se explica en la sección 4.3.1. name="sigma_s^2" value="0.0" name="sigma_phi^2" value="0.0" name="sigma_s_phi" value="0.0"
ANEXO G CÁLCULO DE LA MATRIZ DE COVARIANZAS En este anexo se describe con más detalle cómo se calcula la matriz de covarianzas utilizada para la estimación del error de la sección 4.3.1 en el capítulo 4. Σes esa matriz de covarianzas: Σ = σ2 xσxy σxθ σxy σ2 yσyθ σxθσyθσ2 θ , (G.1) donde los elementos de la diagonal principal son las varianzas de los errores en las coordenadas cartesianas x e y y la orientación θ . El resto de elementos son sus covarianzas. Se necesita obtener la relación con las varianzas de la distancia recorrida, s , y el ángulo de la rueda virtual central, φ . Se utiliza un desarrollo de Taylor de primer orden para aproximar esa relación: Σ = J Q JT. (G.2) La matriz Q contiene esas dos varianzas, además de la covarianza. El error de saumenta linealmente con la velocidad y el de φse considera constante. Q= |s|·σ2 sσsφ σsφσ2 φ . (G.3) J es la matriz jacobiana de la función que relaciona los incrementos de posición y ángulo con syφ:
126 ANEXO G. CÁLCULO DE LA MATRIZ DE COVARIANZAS J= ∂∆x ∂s ∂∆x ∂ φ ∂∆y ∂s ∂∆y ∂ φ ∂∆θ ∂s ∂∆θ ∂ φ . (G.4) Para obtener esta matriz se comienza con las variaciones de la posición y la orientación, para un robot sin deslizamiento: ˙ x=vcosθ, (G.5) ˙ y=vsenθ, (G.6) ˙ θ=vtanφ L, (G.7) donde ves la velocidad lineal y Lla distancia entre ejes. Integrando respecto al tiempo se llega a: ∆x=vt cosθ, (G.8) ∆y=vt senθ, (G.9) ∆θ=vt tanφ L. (G.10) Teniendo en cuenta que la distancia recorrida es igual a la velocidad lineal por el tiempo, estas ecuaciones también se pueden expresar en función de la distancia recorrida s: ∆x=scosθ, (G.11) ∆y=ssenθ, (G.12) ∆θ=stanφ L. (G.13) Derivando respecto a s se obtienen los elementos de la primera columna de la matriz jacobiana: ∂x ∂s=cosθ, (G.14) ∂y ∂s=senθ, (G.15)
127 ∂ θ ∂s=tanφ L. (G.16) Y los otros tres se obtienen derivando respecto a φ: ∂x ∂ φ = (1+tan2φ)s·cos(∆θ)−L·sen(∆θ) tanφ tanφsi ∆θ6=0 −s·senθtanφ Lsi ∆θ=0, (G.17) ∂y ∂ φ = (1+tan2φ)s·sen(∆θ)−L·(cos(∆θ)−1) tanφ tanφsi ∆θ6=0 s·cosθtanφ Lsi ∆θ=0, (G.18) ∂ θ ∂ φ =s(1+tan2θ) L. (G.19) El desplazamiento lineal sse calcula utilizando: s= ∆θ∆x2+∆y2 2∆ysi ∆θ6=0 ∆xsi ∆θ=0. (G.20) Para el ángulo φse usa: φ=tan−12·L·∆y ∆x2+∆y2. (G.21)
ANEXO H ANIMACIONES DEL SIMULADOR Se añade al proyecto un CD-ROM que incluye algunas animaciones del robot en el simulador: Robot moviéndose por un escenario en modo coche. Ejemplo del movimiento del robot en modo dual. Ejemplo del movimiento del robot en modo crab. También se adjunta una carpeta con los vídeos correspondientes a las pruebas del anexo E, etiquetadas con la numeración de ese anexo.
BIBLIOGRAFÍA [1]Gazebo, “Simulador multi-robot 3D.” http://gazebosim.org/. [2]ROS, “Robot Operating System.” http://www.ros.org. [3] pr2_simulator, “Simulador para Gazebo del robot PR2.” http://www. ros.org/wiki/pr2_simulator. [4] turtlebot_simulator, “Simulador para Gazebo del robot TurtleBot.” http: //ros.org/wiki/turtlebot_simulator. [5] Kinect, “Kinect para Xbox 360.” http://www.xbox.com/es-ES/ Kinect/GetStarted. [6] S. Izadi, D. Kim, O. Hilliges, D. Molyneaux, R. Newcombe, P. Kohli, J. Shotton, S. Hodges, D. Freeman, A. Davison, y A. Fitzgibbon, “Kinectfusion: real-time 3d reconstruction and interaction using a moving depth camera,” en Proceedings of the 24th annual ACM symposium on User interface software and technology, UIST ’11, (New York, NY, USA), pp. 559–568, ACM, 2011. [7] P. Henry, M. Krainin, E. Herbst, X. Ren, y D. Fox, “Rgb-d mapping: Using kinect-style depth cameras for dense 3d modeling of indoor environments,” The International Journal of Robotics Research, vol. 31, no. 5, pp. 647–663, 2012. [8] A. King, “Inertial navigation - forty years of evolution,” GEC review, vol. 13, no. 3, pp. 140–149, 1998. [9] M. Barquins y A. D. Roberts, “Rubber friction variation with rate and temperature: some new observations,” Journal of Physics D: Applied Physics, vol. 19, no. 4, p. 547, 1986. [10] R. Pinnington, “Rubber friction on rough and smooth surfaces,” Wear, vol. 267, pp. 1653 – 1664, 2009.
138 BIBLIOGRAFÍA [11]fuerte, “ROS Fuerte Turtle.” http://ros.org/wiki/fuerte. [12] diamondback, “ROS Diamondback.” http://ros.org/wiki/ diamondback. [13] M. Quigley, K. Conley, B. P. Gerkey, J. Faust, T. Foote, J. Leibs, R. Wheeler, y A. Y. Ng, “ROS: an open-source Robot Operating System,” en ICRA Workshop on Open Source Software, 2009. [14] J. C. Trinkle, J.-S. Pang, S. Sudarsky, y G. Lo, “On dynamic multi-rigid- body contact problems with coulomb friction,” ZAMM - Journal of Applied Mathematics and Mechanics /Zeitschrift für Angewandte Mathematik und Mechanik, vol. 77, no. 4, pp. 267–279, 1997. [15] N. Koenig y A. Howard, “Design and use paradigms for Gazebo, an opensource multi-robot simulator,” en Intelligent Robots and Systems, 2004.(IROS 2004). Proceedings. 2004 IEEE/RSJ International Conference on, vol. 3, pp. 2149–2154, IEEE. [16] Penn Robotics, “Matlab-ROS IPC Bridge.” https://alliance. seas.upenn.edu/~meam620/wiki/index.php?n=Roslab. IpcBridge. [17] W. Mendenhall y T. Sincich, Probabilidad y estadística para ingeniería y ciencias. Prentice Hall Hispanoamericana, 4aed., 1997. [18] G. Bishop y G. Welch, “An introduction to the Kalman filter,” Proc of SIGGRAPH, Course, vol. 8, pp. 27599–3175, 2001. [19] A. Kelly, “Linearized error propagation in odometry,” The International Journal of Robotics Research, vol. 23, no. 2, pp. 179–218, 2004. [20] B. Freedman, A. Shpunt, M. Machline, y Y. Arieli, “Depth mapping using projected patterns,” Abr. 2 2008. US Patent App. 12/522,171. [21] K. Khoshelham y S. O. Elberink, “Accuracy and resolution of kinect depth data for indoor mapping applications,” Sensors, vol. 12, no. 2, pp. 1437– 1454, 2012. [22]PCL, “Point Cloud Library.” http://pointclouds.org/. [23] R. B. Rusu y S. Cousins, “3D is here: Point Cloud Library (PCL),” en IEEE International Conference on Robotics and Automation (ICRA), (Shanghai, China), May 9-13 2011.
BIBLIOGRAFÍA 139 [24]OpenCV, “Open Source Computer Vision.” http://opencv.org/. [25] H. Bay, T. Tuytelaars, y L. Van Gool, “Surf: Speeded up robust features,” Computer Vision–ECCV 2006, pp. 404–417, 2006. [26] M. Muja y D. G. Lowe, “Fast approximate nearest neighbors with automatic algorithm configuration,” en International Conference on Computer Vision Theory and Applications (VISSAPP’09), pp. 331–340, 2009. [27] M. A. Fischler y R. C. Bolles, “Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography,” Communications of the ACM, vol. 24, no. 6, pp. 381–395, 1981. [28] S. Rusinkiewicz y M. Levoy, “Efficient variants of the ICP algorithm,” en 3-D Digital Imaging and Modeling, 2001. Proceedings. Third International Conference on, pp. 145–152, IEEE, 2001. [29] R. B. Rusu, Z. C. Marton, N. Blodow, M. Dolha, y M. Beetz, “Towards 3D point cloud based object maps for household environments,” Robotics and Autonomous Systems, vol. 56, no. 11, pp. 927–941, 2008. [30] M. Alexa, J. Behr, D. Cohen-Or, S. Fleishman, D. Levin, y C. T. Silva, “Computing and rendering point set surfaces,” Visualization and Computer Graphics, IEEE Transactions on, vol. 9, no. 1, pp. 3–15, 2003. [31] C. T. Silva, J. S. Mitchell, y A. E. Kaufman, “Automatic generation of triangular irregular networks using greedy cuts,” en Proceedings of the 6th conference on Visualization’95, p. 201, IEEE Computer Society, 1995. [32] M. Kazhdan, M. Bolitho, y H. Hoppe, “Poisson surface reconstruction,” en Proceedings of the fourth Eurographics symposium on Geometry processing, 2006. [33] R. Li, L. Liu, L. Phan, S. Abeysinghe, C. Grimm, y T. Ju, “Polygonizing extremal surfaces with manifold guarantees,” en Proceedings of the 14th ACM Symposium on Solid and Physical Modeling, pp. 189–194, ACM, 2010. [34] O. Sorkine, D. Cohen-Or, Y. Lipman, M. Alexa, C. Rössl, y H.-P. Seidel, “Laplacian surface editing,” en Proceedings of the 2004 Eurographics/ACM SIGGRAPH symposium on Geometry processing, pp. 175–184, ACM, 2004. [35] A. J. Davison, “Real-time simultaneous localisation and mapping with a single camera,” en Computer Vision, 2003. Proceedings. Ninth IEEE International Conference on, pp. 1403–1410, IEEE, 2003.
140 BIBLIOGRAFÍA [36] F. Lu y E. Milios, “Globally consistent range scan alignment for environment mapping,” Autonomous robots, vol. 4, no. 4, pp. 333–349, 1997. [37] D. Borrmann, J. Elseberg, K. Lingemann, A. Nüchter, y J. Hertzberg, “The efficient extension of globally consistent scan matching to 6 dof,” Knowledge Based Systems, vol. 1, p. 20, 2008. [38] R. A. Newcombe, A. J. Davison, S. Izadi, P. Kohli, O. Hilliges, J. Shotton, D. Molyneaux, S. Hodges, D. Kim, y A. Fitzgibbon, “Kinectfusion: Realtime dense surface mapping and tracking,” en Mixed and Augmented Reality (ISMAR), 2011 10th IEEE International Symposium on, pp. 127–136, IEEE, 2011. [39] T. Whelan, M. Kaess, M. Fallon, H. Johannsson, J. Leonard, y J. McDonald, “Kintinuous: Spatially extended KinectFusion,” en RSS Workshop on RGB- D: Advanced Reasoning with Depth Cameras, (Sydney, Australia), Jul 2012. [40] H. Hoppe, T. DeRose, T. Duchamp, J. McDonald, y W. Stuetzle, Surface reconstruction from unorganized points, vol. 26. ACM, 1992. [41] J. C. Carr, R. K. Beatson, J. B. Cherrie, T. J. Mitchell, W. R. Fright, B. C. McCallum, y T. R. Evans, “Reconstruction and representation of 3d objects with radial basis functions,” en Proceedings of the 28th annual conference on Computer graphics and interactive techniques, pp. 67–76, ACM, 2001. [42] gazebo_plugins, “Plugins de sensores para Gazebo.” http://ros.org/ wiki/gazebo_plugins. [43] hector_gazebo, “Plugins de Team Hector para Gazebo.” http://www. ros.org/wiki/hector_gazebo. [44] gps_common, “GPS Common.” http://www.ros.org/wiki/gps_ common.