¿Qué es un robot móvil diferencial?


Sin duda, uno de los mecanismos más utilizados en la investigación como en las aplicaciones industriales. Por lo tanto, si estas empezando en este grandioso mundo de la Robótica, te recomiendo iniciar con este robot móvil.
Principio de funcionamiento de un robot diferencial

Ahora, si dos ruedas giran en la misma dirección, pero con diferentes velocidades, el robot se alejará del motor más rápido. Por ejemplo, si la rueda derecha gira más que la otra, el vehículo se moverá a la izquierda.

Finalmente, si ambas ruedas giran a la misma velocidad, pero en direcciones opuestas, el vehículo girará en su propio eje en sentido horario o antihorario.

Modelo cinemático de un robot diferencial
Para determinar la localización del móvil en el plano cartesiano, vamos a utilizar el modelo cinemático diferencial directo. Este modelo relaciona las velocidades del punto de interés o control h(x,y) con las velocidades de los actuadores considerando al vehículo como una masa puntual, es decir, sin analizar las fuerzas que ejercen sobre el mismo (momentos de inercia y rozamientos).
Para el obtener el modelo cinemático, vamos a guiarnos de la Figura 2, donde se muestra la geometría de un vehículo tipo diferencial, cuya posición la define el punto h(x,y) y la orientación el ángulo (phi).
Aprende robótica ahora
En la robótica, cada error es una oportunidad para aprender y mejorar
50
%
Off
Como resultado del análisis geométrico, la cinemática diferencial con el punto de control ubicado en el centro del eje que une las ruedas es la siguiente.
Como se menciona anteriormente este modelo proporciona velocidades (no posiciones), por lo tanto, para obtener la posición y orientación del móvil es necesario integrar las velocidades en un periodo de tiempo constante (ts) llamado tiempo de muestreo.
Modelo cinemático videotutorial
Si quieres aprender como se determina la cinemática del robot, puedes revisar el tutorial. ¡No olvides suscribirte a mi canal de YouTube!
Simulador 3D con Python
Para realizar la simulación en Python es necesario instalar los siguientes módulos y realizar los siguientes pasos.
- pip install pyvista==0.23.1
- pip install PyQt5
- pip install numpy
- descargar el módulo pyRobotics creado por Roboticoss
Código de simulación en Python
Aquí proporcionamos el código para observar el comportamiento del robot usando el modelo cinemático. Copie el siguiente código en su IDE de Python, y recuerde instalar antes las librerías anteriores.
from pyRobotics import *
import matplotlib.pyplot as plt
######################### TIEMPO ############################
tf = 60 #Tiempo de simulacion
ts = 0.1 # Tiempo de muestreo
t = np.arange(0,tf+ts,ts) # Vector tiempo
N = len(t) # Cantidad de muestras
################# CONDICIONES INICIALES ##################
# Inicializacion de variables
hx = np.zeros(N+1) #Posicion del punto de interes en eje x en [m]
hy = np.zeros(N+1) #Posicion del punto de interes en eje y en [m]
phi = np.zeros(N+1) # Orientacion del robot con respecto al eje x en [rad]
hx[0] = 0 #Posicion inicial en eje x en [m]
hy[0] = 0 #Posicion inicial en eje y en [m]
phi[0] = 0 # Orientacion inicial en [rad]
################# VELOCIDADES DE REFERENCIA (INPUTS) ##############
u = 0.3*np.cos(0.1*t) # Velocidad lineal en [m/s]
w = -0.4*np.sin(0.1*t) # Velocidad angular en [rad/s]
############### BUCLE DE SIMULACION ###################
for k in range(N):
phi[k+1] = phi[k] +ts*w[k]
hxp = u[k]*np.cos(phi[k+1]) #Velocidades en el punto de interes en el eje x en [m/s]
hyp = u[k]*np.sin(phi[k+1]) #Velocidades en el punto de interes en el eje y en [m/s]
# Integral numerica (Metodo de Euler)
hx[k+1] = hx[k] + ts*hxp
hy[k+1] = hy[k] + ts*hyp
######################## SIMULADOR ###################
pathStl = 'stl'
color = ['yellow','black','gray','white','#20A4FF','#78858E']
diferencial = robotics(pathStl,color)
xmin = -2
xmax = 2
ymin = -2
ymax = 2
zmin = 0
zmax = 1
bounds = [xmin,xmax,ymin,ymax,zmin,zmax]
diferencial.configureScene(bounds)
diferencial.initTrajectory(hx,hy)
escala = 3
diferencial.initRobot(hx,hy,phi,escala)
diferencial.startSimulation(10,ts)
######################## GRAFICAS ###################
plt.figure()
plt.title("Desplazamiento en el x")
plt.plot(t,hx[0:-1])
plt.grid()
plt.figure()
plt.title("Desplazamiento en el y")
plt.plot(t,hy[0:-1])
plt.grid()
plt.figure()
plt.title("Trayectoria generada")
plt.plot(hx,hy)
plt.grid()
plt.show()
Implementa este código en un robot físico
Arduino| Odometría | Visión por computador | Ingeniería de control
50
%
Off
Modelos matemáticos para navegación autónoma de robots
Ahora que ya sabes como localizar un robot usando la cinemática, el siguiente paso es usar este modelo para la navegación autónoma de robots, mira este articulo para aprender como controlar robots de manera autónoma.
6 comentarios en “Modelo cinemático y simulación de un robot móvil diferencial”
Hola, disculpe, ya realice todos los pasos pero al ejecutar el código la ventana de python robotics no responde. Incluso he instalado la versión de python que se muestra en el video (3.8.6), pero sigue sucediendo lo mismo. ¿De casualidad se les ocurre alguna solución? https://prnt.sc/10kfemt
Esto suele suceder cuando tiene otro programa ejecutándose, si no funciona por favor compartir el código para revisarlo.
Hola edalxgoam, a mi me está pasando lo mismo. Puedo saber cómo lo resolviste?
Gracias. Saludos.
Saludos, estoy viendo que el problema es si ejecutan en jupyter, por favor, usar el IDLE de Python.
descargar el módulo pyRobotics creado por Roboticoss,¿como lo hago?
Saludos, puede descargar aquí https://roboticoss.com/product/robotica-con-python-modelo-cinematico/ dando click en comprar es GRATIS.
Los comentarios están cerrados.