7.2 Creación de Modelos 3D: Plataforma y Mecanismos
7.2.1 Modelo Urdf y Visualización en Rviz
Para cumplir con la estructura de árbol requerida, la plataforma tiene un cuerpo rígido principal al cual están enlazados todas las otras estructuras por medio de
cadenas seriales como se muestra en la Figura 7-1 donde los cuerpos rígidos se representan por medio de rectángulos y las uniones por círculos.
En urdf cada estructura se representa por medio de una etiquetalinkla cual tiene parámetros como el nombre y está compuesta por más etiquetas como visual,
inertial y collision.
En estas etiquetas, como se puede inferir por su nombre, se declaran los 3 tipos de modelo mencionados anteriormente y que contienen las características visuales, de colisión y de inercia del cuerpo rígido para la simulación dinámica.
Figura 7-1: Diagrama Generalizado de la Estructura Árbol del Modelo del Robot.
Por ejemplo, ellink principal se llamó base y sumodelo visual se declara usando una etiqueta visual la cual se subdivide en más etiquetas como <geometry>, usada para especificar la forma y tamaño del objeto; origin, describe el punto de origen de la geometría respecto al marco de referencia local y materialusada para definir el color. El fragmento del código se muestra en seguida.
<? xml v e r s i o n = " 1 . 0 " ? > < r o b o t x m l n s:x a c r o= " h t t p :// www . ros . org / w i k i / x a c r o " n a m e= " p l a t f o r m "> < l i n k n am e= " b a s e "> < visual > < o r i g i n xyz= " 0 0 0 " rpy= " 0 0 0 " / > < g e o m e t r y > < box s i ze= " $ { b a s e _ p r o f u n d i d a d } $ { b a s e _ a n c h o } $ { b a s e _ g r o s o r } "/ > </ g e o m e t r y > < m a t e r i a l n a m e= " b l u e "/ > </ v i s u a l > </ l i n k >... </ r o b o t >
En el caso de la base, su geometría es de un cubo y por eso se utiliza la etiqueta
<box/>, la representación dellink’base’ en el visualizador 3D de ROS se muestra en la Figura 7-2.
Además, es de destacar que se utiliza Xacro para declarar constantes que después se llaman en varios archivos mediante la sintaxis ${constante}. Las constantes en Xacro se declaran en unidades del SI y como se muestra a continuación:
7.2 Creación de Modelos 3D: Plataforma y Mecanismos 125
Figura 7-2: Visualización en Rviz del link ’base’.
<? xml v e r s i o n = " 1 . 0 " ? > < r o b o t x m l n s:x a c r o= " h t t p :// www . ros . org / w i k i / x a c r o " n a m e= " p l a t f o r m "> < m a t e r i a l n a m e= " g r a y "> < c o l o r r gb a= " 0 . 2 8 0 . 2 8 0 . 2 8 1 "/ > </ m a t e r i a l > < m a t e r i a l n a m e= " b l a c k "> < c o l o r r gb a= " 0 . 1 4 0 . 1 4 0 . 1 6 1 "/ > </ m a t e r i a l > < x a c r o : p r o p e r t y n a m e= " M _ P I " v a l u e= " 3 . 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 1 " / > < x a c r o : p r o p e r t y n a m e= " b a s e _ p r o f u n d i d a d " v a l u e= " 0 . 5 3 3 4 "/ > < x a c r o : p r o p e r t y n a m e= " b a s e _ a n c h o " v a l u e= " 0 . 3 4 2 9 "/ > < x a c r o : p r o p e r t y n a m e= " b a s e _ g r o s o r " v a l u e= " 0 . 0 3 "/ > </ r o b o t >
También, es importante usar la etiqueta robot ya que es necesaria en todos los archivos urdf; y la inclusión de la sentenciaxmlns:xacro... habilita las funciones de Xacro.
Por otra parte, a partir del link ’base’ se expande y se ramifica la estructura en árbol del robot sembrador. Por ejemplo, sobre la plataforma se dispone el contenedor de semillas. Este es un link cuya geometría no es una forma básica sino un modelo 3D, se muestra en seguida:
< l i n k n a m e= " c o n t e n e d o r "> < visual > < g e o m e t r y > < m e s h f i l e n a m e= " p a c k a g e :// r o b o t _ s e m b r a d o r / m e s h e s / c o n t a i n e r . stl "/ > </ g e o m e t r y > < o r i g i n rpy= " 0 0 $ { M _ P I /2} " xyz= " 0 0 0 "/ > < m a t e r i a l n a m e= " o r a n g e "/ > </ v i s u a l >
< x a c r o : c o l i _ c a j a f o n d o= " $ { c o n t a i n e r _ f o n d o } " a n c h o= " $ { c o n t a i n e r _ a n c h o } " a l t o= " $ { c o n t a i n e r _ a l t o } " m a s a= " $ { m a s a _ c o n t e n e d o r } "> < o r i g i n rpy= " 0 0 0 " xyz= " 0 0 $ {( c o n t a i n e r _ a l t o /2) + 0 . 0 1 + b a s e _ g r o s o r } "/ > </ x a c r o : c o l i _ c a j a > </ l i n k >
Es de destacar el uso del Xacrocoli_caja, este macro tiene la función de calcular elmodelo dinámico de cada cuerpo rígido y se replica en cadalink. En consecuencia, es un código que calcula los bordes de colisión y la inercia de la pieza según los argumentos de entrada que sonfondo, ancho, alto,masa y origen.
Como se observa en la Figura7-3, aunque visualmente ellink’contenedor’ es un
mesh (está compuesto por polígonos); su modelo de colisión se ha simplificado a una caja.
Figura 7-3: Visualización del link ’contenedor’: a) El mesh. b) Modelo de colisión.
La simplificación de colisión se realizó debido a que para el motor físico de Gazebo tiene menos costo computacional realizar interacciones entre formas básicas 4. Ahora que se tienen dos cuerpos rígidos se necesita unjoint para unirlos. Ya que no hay movimiento entre la ’base’ y el ’contenedor’, es decir, no hay un actuador; urdf permite declarar un joint de tipo fijo, así:
< j o i n t na m e= " b a s e _ a _ c o n t e n e d o r " t y p e= " f i x e d "> < p a r e n t l i n k= " b a s e "/ >
< c h i l d li n k= " c o n t e n e d o r "/ >
< o r i g i n xyz= " $ { -0.2} $ { 0 . 0 2 } $ { -( b a s e _ g r o s o r / 2 ) - 0 . 0 1 } " 4http://gazebosim.org/tutorials/?tut=ros_urdf
7.2 Creación de Modelos 3D: Plataforma y Mecanismos 127
rpy= " 0 0 0 " / > </ j o i n t >
Unjoint une dos partes, a saber, ellinkpadre con el hijo; y el origen deljoint
determina la diferencia entre el marco de referencia dellinkhijo con el delpadre. Es decir, en el caso del ’contenedor’, su marco de referencia ó frame está a -0.2m en el eje xdelframe de la ’base’ y no tiene ninguna rotación respecto a este. Esta diferencia se aprecia en la Figura 7-4.
Figura 7-4: Visualización de los frames de los links ’base’ y ’contenedor’ en Rviz.
De la misma forma se añaden todos los links pasivos que conforman los módulos de dirección y de las ruedas; es decir, las estructuras en aluminio que se muestran en la Figura 7-5. Además, se observan los motores de direccionamiento y un motor de impulso.
Esto se debe a que la interacción entre motor y gearbox se asumió como pasiva, mientras que entre la caja de engranajes y el eje se planteó un movimiento rotacional. Como resultado, la unión entre el gearbox y su eje no es fija sino de revolución.
En urdf, una unión de este tipo para un motor de giro continuo se le denomina un
joint de tipocontinuous. Dentro de esta etiqueta se establecen valores como el eje de giro en el frame hijo y el torque y velocidad máximos como se muestra a continuación: < j o i n t n a me= " g e a r _ a _ s t e e r e j e _ 1 " t y p e= " c o n t i n u o u s "> < p a r e n t l in k= " s t e e r g e a r _ 1 "/ > < c h i l d l i nk= " s t e e r e j e _ 1 "/ > < o r i g i n xyz= " $ { o f f s e t _ e j e _ s t e e r } 0 0 " rpy= " 0 0 0 " / > < a x i s xyz= " 0 0 1 " / > < l i m i t e f f o r t= " 2 " v e l o c i t y= " 2 . 8 2 7 "/ > </ j o i n t >
Figura 7-5: Algunos link de soporte añadidos mediante joints tipofijo.
En este caso, eljointentre el gearbox de direccionamiento y su eje rota alrededor dez en el frame local (Figura7-6) según la etiqueta <axis/>. Después de esto, se completa el módulo añadiendo el actuador de impulso y la rueda.
Figura 7-6: Conexión entre gearbox y eje, a)Marcos de referencia. b) Rotación del eje z.
Repitiendo el proceso anterior con el fin de alcanzar la configuración planeada 4WD/2WS, se disponen en el modelo seis uniones continuas, una para cada actuador. El robot ya con estas características se muestra en la figura 7-7. El modelo 3D de las ruedas se obtuvo del proveedor.
7.2 Creación de Modelos 3D: Plataforma y Mecanismos 129
Figura 7-7: Robot con 6 actuadores visualizado en Rviz.
Después, se añadió el mecanismo de siembra. Este módulo no tiene actuadores y en consecuencia solo se utilizaron uniones fijas. En cuanto a los links, visualmente se utilizaron los modelos hechos en Tinkercad, mientras que la colisión se redujo a formas geométricas básicas como se muestra en la Figura 7-8.
Figura 7-8: Mecanismo abre-surco del robot a)Parte visual. b) Colisión.
Finalmente, se agregó el dispositivo de dosificación. En este dispositivo hay un actuador lo cual significa un joint tipo continuous. La caja dosificadora se muestra en la Figura 7-9 junto con toda la plataforma final.
Figura 7-9: Dispositivo dosificador unido a la plataforma.