Este documento describe la simulación de un robot omnidireccional de tres ruedas en el software Webots. Se presenta el modelo cinemático del robot, incluyendo las ecuaciones que relacionan la velocidad lineal, frontal y angular con las velocidades de las ruedas. También se detallan mejoras realizadas al diseño CAD del robot para mejorar su rigidez. Finalmente, se explica el proceso de importar el modelo CAD al entorno de simulación Webots, incluyendo la configuración de la jerarquía de nodos y las articulaciones
1. UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA. INGENIERÍA EN MECATRÓNICA. ROBÓTICA MÓVIL 1
Simulación de un Robot Omnidireccional
I.B Amaya-Ramos, J.L Sanchez-Buy and A.N Reyes-Armengol
Resumen—Este proyecto se centra en la simulación y de-
sarrollo de un Robot Omnidireccional de 3 ruedas con la
incorporación de una cámara de un teléfono inteligente para
la detección de señalamientos viales. Se describirá el diseño
del robot ası́ como los dibujos CAD realizados en el software
SolidWords y como fueron importados al software Webots.
Palabras Clave—Robótica Móvil,Robot Omnidireccional,
Robot autónomo, Robots móviles, Simulación.
I. INTRODUCCIÓN
En el siguiente reporte se mostrara el trabajo que se hizo,
tanto en cuestión del modelo cinemático del robot omnidi-
reccional, como la mejora del chasis del robot en modelo
CAD. También se describirá el proceso de exportación del
modelo CAD al entorno de simulación 3D Webots y ası́ poder
programar y visualizar una trayectoria sencilla en el entorno.
II. MODELO CINEMÁTICO DEL ROBOT OMNIDIRECCIONAL
DE 3 RUEDAS
A continuación de describe el modelo cinemático de nuestro
robot. Este modelo se implementará en versiones posteriores,
cuando se necesite generar trayectorias deseadas.
En la figura 1 podemos observar el diagrama cinemático de
un robot omnidireccional de tres ruedas
Fig. 1. Diagrama cinemático de un Robot Omnidirecional de 3 ruedas
La posición de las ruedas, tomando como origen el centro
de masa del robot O y utilizando como eje
−
−
→
OX el vector
−
→
P01, puede obtenerse fácilmente con la ayuda de la matriz de
rotación (θes el ángulo de giro medido en sentido antihorario)
R(θ) =
cos(θ) −sin(θ)
sin(θ) cos(θ)
(1)
Por lo tanto:
P01 =
L
2
(
1
√
3
) P02 = R(
2π
3
) P03 = R(
4π
3
) (2)
Donde L es la distancia de las ruedas al centro de masa. Los
vectores unitarios Di determinan la dirección de avance de la
rueda i. Estas se determinan, tomando en cuenta el mismo
sistema de coordenadas usado anteriormente, por:
Di =
1
L
R(
π
2
)P0i (3)
D1 =
0
1
D2 =
1
2
√
3
1
D3 =
1
2
√
3
−1
(4)
El vector P0 = (x y)T
es la posición del centro de masa en
el sistema de coordenadas visto en la figura 1. La posición de
cada rueda y su velocidad en este sistema está determinada
por
ri = P0 + R(θ)Poi (5)
Vi = ˙
P0 + Ṙ(θ)Poi (6)
mientras que las velocidad individual de cada rueda (compo-
nente de velocidad de la rueda en el sentido del vector Di)
es:
vi = V T
i (R(θ)Di) (7)
Sustituyendo la ecuación 6 en la ecuación 7 resulta en
vi = ˙
PT
o R(θ)Di + PT
oiṘt(θ)R(θ)Di (8)
El segundo término de la ecuación es simplemente la velocidad
tangencial del robot y se puede escribir de la siguiente forma:
PT
oi
˙
PT (θ)R(θ)Di = Lθ̇ (9)
Por lo tanto la velocidad de las ruedas es una función lineal
de la velocidad y la velocidad angular del robot es...
v1
v2
v3
=
−sin(θ) cos(θ) L
−sin(
π
3
− θ) −cos(
π
3
− θ) L
sin(
π
3
+ θ) −cos(
π
3
+ θ) L
ẋ
ẏ
θ̇
(10)
Finalmente partiendo de la ecuación 10 y sabiendo que la
velocidad angular de una rueda es φi = vi
r , para lograr un
movimiento en coordenadas cartesianas a partir de ẋ, ẏ, θ̇, se
obtienen las velocidades angulares de las ruedas mediante la
siguiente transformación lineal
2. UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA. INGENIERÍA EN MECATRÓNICA. ROBÓTICA MÓVIL 2
vf
vl
ω
=
1
r
−sin(θ) cos(θ) L
−sin(
π
3
− θ) −cos(
π
3
− θ) L
sin(
π
3
+ θ) −cos(
π
3
+ θ) L
r1
r2
r3
(11)
Donde r es el radio de las ruedas, L es la distancia desde el
centro del robot a las ruedas, y θ es el ángulo entre el eje X
y la primer rueda.
Para r1, r2 y r3 tenemos que
r1 = −k(xo − xd) (12)
r2 = −k(yo − yd) (13)
r3 = −k(θo − θd) (14)
De lo anterior las ecuaciones de velocidad lateral, frontal y
angular se describen a continuación
vf =
1
r
(−sin(θ)r1 + cos(θ)r2 + Lr3) (15)
vl =
1
r
(−sin(
π
3
− θ)r1 − cos(
π
3
− θ)r2 + Lr3) (16)
ω =
1
r
(sin(
π
3
+ θ)r1 − cos(
π
3
+ θ)r2 + Lr3) (17)
III. CAMBIOS EN EL MODELO
En esta parte se muestran las mejoras que se le hicieron al
robot con respecto al chasis y el motivo por el cual fueron
hechas las mejoras.
Fig. 2. Primer diseño CAD del Robot
Omnidireccional. Vista Isométrica.
Fig. 3. Primer diseño CAD del
Robot Omnidireccional. Vista
Frontal.
Como se puede observar, el cambio que se le realizó al
robot fue del tipo estructural, esto con el objetivo de mejorar
la rigidez en la parte de los soportes del motor, ya que,
en comparación de la estructura anterior, figura 3 y 2, se
corrı́a el riesgo de perder los ángulos al que se encuentran
las llantas, que debido a, las vibraciones que se generan por
los motores estos podı́an perder su alineación de 120° con
respecto el uno del otro, lo cual, puede generar fallos en el
robot ya que esta separación es una condición necesaria para
su correcto funcionamiento.
En las imágenes 4 y 5 se muestra el cambio de estructural
del modelo CAD del robot en donde se puede notar, figura 4,
el refuerzo en la parte inferior del robot en comparación de la
imagen 2.
Fig. 4. Actualización del diseño CAD
del Robot Omnidireccional.
Fig. 5. Actualización del
diseño CAD del Robot Omni-
direccional.Vista Isométrica
IV. SOFTWARE WEBOTS
Para la simulación se va a utilizar el software Webots.
Webots es una aplicación de escritorio de código abierto y
compatible con Gnu/Linux, MacOS y Windows, que se utiliza
para simular robots.
Webots proporciona un entorno de desarrollo completo para
modelar, programar y simular robots. Una de sus principales
ventajas es que permite al usuario interactuar con el modelo
durante la simulación. Además podremos encontrar ejemplos
de robots, sensores, biblioteca de objetos y materiales para un
diseño fácil. Webots utiliza ODE (Open Dynamics Engine)
para la detección de colisiones y la simulación dinámica del
cuerpo rı́gido. La biblioteca ODE permite simular la fı́sica de
los objetos.
Este programa también permite construir robots a través
de la definición geométrica y dinámica de las partes que lo
componen. Igualmente permite especificar colores y texturas
para una mejor visualización. Webots ha sido diseñado para
un uso profesional y se usa ampliamente en la industria, la
educación y la investigación. [1] [2]
V. IMPORTACIÓN DEL MODELO
A continuación se describe el proceso seguido para exportar
el diseño del Robot Omnidireccional realizado en SolidWorks
al entorno de simulación de Webots. En la figura 9 se sintetizan
los pasos que se siguieron.
A. Configuración general del Robot
Para realizar la simulación se tienen que tomar en cuenta
los siguientes puntos del entorno de simulación de Webots.
1) La estructura principal de un modelo de Robot es un
árbol de nodos sólidos enlazados entre sı́. El nodo raı́z
de este árbol deberı́a ser un nodo Robot.
2) Los nodos derivados de Joint permiten crear diferentes
tipos de restricciones entre los nodos sólidos vinculados.
El que se va a utilizar, es el HingeJoint que permite
modelar motores rotativos incluyendo ruedas.
3. UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA. INGENIERÍA EN MECATRÓNICA. ROBÓTICA MÓVIL 3
3) Un nodo de articulación se puede controlar o activar
agregando un nodo de sensor de posición o un nodo de
motor a su campo device, respectivamente.
Teniendo estos puntos en cuenta, podemos comenzar a
diseñar la jerarquı́a de nodos a utilizar para nuestro Robot.
Si observamos la configuración de nuestro robot, la podemos
dividir en cinco nodos sólidos: El cuerpo, los electrónicos y
las tres ruedas. En la figura 6 se muestra la jerarquı́a de nodos
de nuestro robot.
Fig. 6. Representación de la jerarquı́a de nodos del Robot Omnidireccional
El Elemento HingeJoint de la figura 6 representa cada
uno de los motores de las ruedas que se tiene. En términos
generales cada HingeJoint tiene como posición inicial los
puntos configurados en su campo de traslación y rotación
del nodo solido. Además el origen de rotación (anchor) y
el eje de rotación (axis) están definidos por el elemento
secundario HingeJointParameters. En la figura 7 se muestra
la representación gráfica del elemento HingeJoint.
Fig. 7. Representación de una articulación HingeJoint
En nuestro caso es necesario configurar cada elemento
HingeJoint para que su origen de rotación este alineado con
los ejes fı́sicos de los motores a utilizar y sus eje de rotación
este separado 120° entre ellos. En la figura 8 se muestra la
configuración final de estas articulaciones.
Fig. 8. Representación de la jerarquı́a de las uniones HingeJoint del Robot
Omnidirecional
B. Descripción detallada
Fig. 9. Diagrama del proceso de exportación del Robot
Para iniciar la migración del modelo, es necesario guardar el
diseño CAD como un archivo VRML versión 97 y configurar
el sistema de referencia para que coincida con el entorno de
Webots, como se ve en la figura 10. Después de esto se crea
un nuevo ambiente de trabajo en Webots con una área de
simulación de 3x3m donde se moverá nuestro robot.
Ahora importamos el modelo, como se ve en la figura 11.
Fig. 10. Diseño CAD con nuevo Sis-
tema de Referencia
Fig. 11. Robot Omnidirec-
cional importado a Webots
El modelo importado nos añade todas las piezas que
conforman cada componente de nuestro robot. Es necesario
nombrarlas para que posteriormente se vayan agrupando en
un solo elemento, como se ve en la figura 13.
Una vez identificadas y nombradas todas las piezas, las
agrupamos como hijos de un elemento Robot de Webots para
que podamos controlar todas las piezas en conjunto.
Para el elemento robot se necesita configurar los parámetros
de fı́sica como la densidad, centro de masa, la gravedad, la
inercia, etc. y el parámetro boundingObject que le indica
a Webots el sólido que tendrá como limite para detectar
colisiones con otros cuerpos, con el suelo o con paredes y
obstáculos en el área de trabajo. Esta configuración se ve en
la figura 12.
4. UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA. INGENIERÍA EN MECATRÓNICA. ROBÓTICA MÓVIL 4
Fig. 12. Configuración del Robot Omnidireccional como un elemento Robot
de Webots
Teniendo esto, añadimos las unión revoluta para cada motor.
Como se ha visto,en webots estas uniones se indican con un
elemento HingeJoint y se tiene que especificar que es un motor
rotacional. Para cada unión también debemos configurar su
fı́sica y sus limites en el parámetro boundingObject.
Cuando se añaden las uniones los ejes de giro se colocan
sobre el eje x del área de trabajo. Ahora se deben ajustar para
que coincidan con los ejes de los motores fı́sicos del diseño
CAD, los cuales se encuentran separados 120° y a una altura
h de 0.2928m, como se ve en la figura 14.
Fig. 13. Robot Omnidireccional con
piezas identificadas
Fig. 14. Robot Omnidirec-
cional con los ejes de giro es-
tablecidos
Finalmente se escribe el código en Python para el control
de movimiento y se vincula con el Robot. Para este parcial
sólo se realizaron pruebas con movimientos básicos, como ir
hacia adelante, moverse lateralmente y girar sobre el propio
eje del robot. Parte del código se muestra en la figura 15.
Fig. 15. Simulación de movimientos básicos del Robot Ominidirecional
VI. CONCLUSIONES
Se lograron generar movimientos básicos (ir hacia enfrente,
ir hacia un lado y girar sobre el propio eje del robot) en el en-
torno de simulación de Webots. Para lograr estos movimientos
se tuvo que realizar una documentación del software, que nos
permitió entender las configuraciones necesarias para estable-
cer de una manera correcta los elementos boundingObject para
detectar los limites del robot y la configuración de los ejes de
las uniones HingeJoint, que fueron los principales desafı́os que
se tuvieron.
REFERENCIAS
[1] Webots.http://www.cyberbotics.com. Open-source Mobile Robot Simula-
tion Software.
[2] D. A, “Webots, un software de código abierto para simular robots
móviles”, Ubunlog, mar. 17, 2020. https://ubunlog.com/webots-software-
simulacion-robots-moviles/ (consultado may 13, 2021).