Modelado de robots móviles con ruedas

MT3005 - Robótica 1

Un tipo "simple" de robots de base móvil

hasta el momento hemos sido capaces de considerar una perspectiva puramente cinemática para el control de manipuladores

hasta el momento hemos sido capaces de considerar una perspectiva puramente cinemática para el control de manipuladores

desafortunadamente, las técnicas más avanzadas para controlar los mismos (y robots de base flotante) requieren de dinámica de cuerpos rígidos 

hasta el momento hemos sido capaces de considerar una perspectiva puramente cinemática para el control de manipuladores

desafortunadamente, las técnicas más avanzadas para controlar los mismos (y robots de base flotante) requieren de dinámica de cuerpos rígidos 

sin embargo, existe un tipo particular de robots de base móvil que sí pueden describirse y controlarse sólo con su cinemática

Robots móviles con ruedas

para la gran mayoría de aplicaciones (de robótica móvil) las ruedas son la solución más apropiada

para la gran mayoría de aplicaciones (de robótica móvil) las ruedas son la solución más apropiada

con tres ruedas se garantiza estabilidad (más de tres requieren de suspensión)

para la gran mayoría de aplicaciones (de robótica móvil) las ruedas son la solución más apropiada

con tres ruedas se garantiza estabilidad (más de tres requieren de suspensión)

la selección de ruedas depende de la aplicación

Tipos de ruedas

standard wheel

(2 DOF)

Tipos de ruedas

Tipos de ruedas

standard wheel

(2 DOF)

caster wheel

(3 DOF)

Tipos de ruedas

Tipos de ruedas

standard wheel

(2 DOF)

caster wheel

(3 DOF)

Swedish wheel

(3DOF)

Tipos de ruedas

Manipuladores vs robots con ruedas

movimiento de manipuladores definido por juntas actuadas

Manipuladores vs robots con ruedas

Manipuladores vs robots con ruedas

movimiento de manipuladores definido por juntas actuadas

movimiento de robot con ruedas definido por restricciones de rodamiento y no deslizamiento

Manipuladores vs robots con ruedas

Manipuladores vs robots con ruedas

movimiento de manipuladores definido por juntas actuadas

movimiento de robot con ruedas definido por restricciones de rodamiento y no deslizamiento

en ambos nos interesa la cinemática directa e inversa, sin embargo, para los robots con ruedas los valores de los encoders no pueden mapearse a poses únicas

Manipuladores vs robots con ruedas

Manipuladores vs robots con ruedas

movimiento de manipuladores definido por juntas actuadas

movimiento de robot con ruedas definido por restricciones de rodamiento y no deslizamiento

en ambos nos interesa la cinemática directa e inversa, sin embargo, para los robots con ruedas los valores de los encoders no pueden mapearse a poses únicas

Manipuladores vs robots con ruedas

\(\Rightarrow\) no hay forma instantánea de medir su posición

ej. encoder magnético

q_1, \ q_2, \ \cdots \ \to \mathbf{q}

ej. encoder magnético

q_1, \ q_2, \ \cdots \ \to \mathbf{q}

NO aplica para robots con ruedas

\{I\}
x
y

Sistemas no holonómicos

\{I\}
x
y
s_1
s_2

\(s=r\varphi\) distancia recorrida

\mathbf{q} \sim \left(x,y,\theta\right)=\boldsymbol{\xi}

Sistemas no holonómicos

\{I\}
x
y
\left(x_1,y_1,\theta_1\right)
s_1
s_2
s_{1,\ell}
s_{1,r}

\(s=r\varphi\) distancia recorrida

s_{2,\ell}
s_{2,r}
\left(x_2,y_2,\theta_2\right)
\mathbf{q} \sim \left(x,y,\theta\right)=\boldsymbol{\xi}

Sistemas no holonómicos

\{I\}
x
y
\left(x_1,y_1,\theta_1\right)
s_1
s_2
s_{1,\ell}
s_{1,r}

\(s=r\varphi\) distancia recorrida

s_{2,\ell}
s_{2,r}
\left(x_2,y_2,\theta_2\right)
\mathbf{q} \sim \left(x,y,\theta\right)=\boldsymbol{\xi}
s_{1,\ell}=s_{2,\ell} \\ s_{1,r}=s_{2,r}
\to
\left(x_1,y_1,\theta_1\right) \neq \left(x_2,y_2,\theta_2\right)

Sistemas no holonómicos

en el caso de robots con ruedas se tiene entonces un set de restricciones no integrables

\mathbf{A}\left(\mathbf{q}\right)\dot{\mathbf{q}}=\mathbf{0}

(restricciones no holonómicas)

en el caso de robots con ruedas se tiene entonces un set de restricciones no integrables

\mathbf{A}\left(\mathbf{q}\right)\dot{\mathbf{q}}=\mathbf{0}

(restricciones no holonómicas)

por lo tanto, si tenemos restricciones de velocidad pero nos interesa la cinemática del robot

\(\Rightarrow\) cinemática diferencial

+

\varphi, \ r
\beta

Cinemática diferencial: rueda estándar fija

chasis del robot

v=r\dot{\varphi}
x_B
y_B
\beta

+

\varphi, \ r
\beta

Cinemática diferencial: rueda estándar fija

chasis del robot

{^B}\dot{x}
{^B}\dot{y}
{^B}\dot{\theta}
v=r\dot{\varphi}
x_B
y_B
\ell
\alpha
\beta

+

\varphi, \ r
\beta

Cinemática diferencial: rueda estándar fija

chasis del robot

{^B}\dot{x}
{^B}\dot{y}
{^B}\dot{\theta}
v=r\dot{\varphi}
x_B
y_B
\ell
\alpha
\beta

+

\varphi, \ r
\beta

\(\beta \to \beta(t)\) para una caster wheel

Cinemática diferencial: rueda estándar fija

{^B}\dot{x}
{^B}\dot{y}
{^B}\dot{\theta}
v=r\dot{\varphi}
x_B
y_B
\ell
\alpha
\beta
x_1
\{1\}
y_1
\ell {^B}\dot{\theta}\sin\beta
\ell {^B}\dot{\theta}\cos\beta
\ell {^B}\dot{\theta}
\{0\}
x_0
y_0
\alpha+\beta

velocidad de la rueda, desde el marco de la rueda

{^1}\mathbf{v}=\begin{bmatrix} {^1}v_x \\ {^1}v_y \end{bmatrix}=\begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}

velocidad de la rueda, desde el marco de la rueda

{^1}\mathbf{v}=\begin{bmatrix} {^1}v_x \\ {^1}v_y \end{bmatrix}=\begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}

restricción de no deslizamiento

restricción de rodamiento

velocidad de la rueda, desde el marco de la rueda

{^1}\mathbf{v}=\begin{bmatrix} {^1}v_x \\ {^1}v_y \end{bmatrix}=\begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}

restricción de no deslizamiento

restricción de rodamiento

la velocidad de la rueda es la combinación de todas las velocidades que experimenta el robot

{^1}\mathbf{R}_B{^B}\mathbf{v}+\ell{^B}\dot{\theta}\begin{bmatrix} \sin\beta \\ \cos\beta \end{bmatrix}=\begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}
{^B}\mathbf{R}_1=\begin{bmatrix} \cos(\alpha+\beta) & -\sin(\alpha+\beta) \\ \sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix}
{^1}\mathbf{R}_B=\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix}
{^B}\mathbf{R}_1=\begin{bmatrix} \cos(\alpha+\beta) & -\sin(\alpha+\beta) \\ \sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix}
{^1}\mathbf{R}_B=\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix}
\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \end{bmatrix} +\begin{bmatrix} \ell{^B}\dot{\theta}\sin\beta \\ \ell{^B}\dot{\theta}\cos\beta \end{bmatrix}= \begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}
\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \end{bmatrix} +\begin{bmatrix} \ell{^B}\dot{\theta}\sin\beta \\ \ell{^B}\dot{\theta}\cos\beta \end{bmatrix}= \begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}
\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \end{bmatrix} +\begin{bmatrix} \ell{^B}\dot{\theta}\sin\beta \\ \ell{^B}\dot{\theta}\cos\beta \end{bmatrix}= \begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}

Rodamiento:

-\sin(\alpha+\beta){^B}\dot{x}+\cos(\alpha+\beta){^B}\dot{y}+\ell{^B}\dot{\theta}\cos\beta=-r\dot{\varphi}
\begin{bmatrix} \sin(\alpha+\beta) & \cos(\alpha+\beta) & \ell\cos\beta \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \\ {^B}\dot{\theta} \end{bmatrix}-r\dot{\varphi}=0
\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \end{bmatrix} +\begin{bmatrix} \ell{^B}\dot{\theta}\sin\beta \\ \ell{^B}\dot{\theta}\cos\beta \end{bmatrix}= \begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}

Rodamiento:

-\sin(\alpha+\beta){^B}\dot{x}+\cos(\alpha+\beta){^B}\dot{y}+\ell{^B}\dot{\theta}\cos\beta=-r\dot{\varphi}
\begin{bmatrix} \sin(\alpha+\beta) & \cos(\alpha+\beta) & \ell\cos\beta \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \\ {^B}\dot{\theta} \end{bmatrix}-r\dot{\varphi}=0
\mathbf{J}_{1i}
{^B}\dot{\boldsymbol{\xi}}
\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \end{bmatrix} +\begin{bmatrix} \ell{^B}\dot{\theta}\sin\beta \\ \ell{^B}\dot{\theta}\cos\beta \end{bmatrix}= \begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}

Rodamiento:

\mathbf{J}_{1i}{^B}\dot{\boldsymbol{\xi}}=-r\dot{\varphi} \quad \Rightarrow \quad \mathbf{J}_{1i}{^B}\mathbf{\mathrm{Rot}}_I(\theta){^I}\dot{\boldsymbol{\xi}}=-r\dot{\varphi}=v_i
\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \end{bmatrix} +\begin{bmatrix} \ell{^B}\dot{\theta}\sin\beta \\ \ell{^B}\dot{\theta}\cos\beta \end{bmatrix}= \begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}

Rodamiento:

\mathbf{J}_{1i}{^B}\dot{\boldsymbol{\xi}}=-r\dot{\varphi} \quad \Rightarrow \quad \mathbf{J}_{1i}{^B}\mathbf{\mathrm{Rot}}_I(\theta){^I}\dot{\boldsymbol{\xi}}=-r\dot{\varphi}=v_i

¿Por qué? 


\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \end{bmatrix} +\begin{bmatrix} \ell{^B}\dot{\theta}\sin\beta \\ \ell{^B}\dot{\theta}\cos\beta \end{bmatrix}= \begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}

Rodamiento:

\mathbf{J}_{1i}{^B}\dot{\boldsymbol{\xi}}=-r\dot{\varphi} \quad \Rightarrow \quad \mathbf{J}_{1i}{^B}\mathbf{\mathrm{Rot}}_I(\theta){^I}\dot{\boldsymbol{\xi}}=-r\dot{\varphi}=v_i

¿Por qué? 

es el equivalente de la configuración pero para robots con ruedas

{^I}\boldsymbol{\xi}=\begin{bmatrix} x \\ y \\ \theta \end{bmatrix}
\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \end{bmatrix} +\begin{bmatrix} \ell{^B}\dot{\theta}\sin\beta \\ \ell{^B}\dot{\theta}\cos\beta \end{bmatrix}= \begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}

No deslizamiento:

\cos(\alpha+\beta){^B}\dot{x}+\sin(\alpha+\beta){^B}\dot{y}+\ell{^B}\dot{\theta}\sin\beta=0
\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) & \ell\sin\beta \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \\ {^B}\dot{\theta} \end{bmatrix}=0
\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \end{bmatrix} +\begin{bmatrix} \ell{^B}\dot{\theta}\sin\beta \\ \ell{^B}\dot{\theta}\cos\beta \end{bmatrix}= \begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}

No deslizamiento:

\cos(\alpha+\beta){^B}\dot{x}+\sin(\alpha+\beta){^B}\dot{y}+\ell{^B}\dot{\theta}\sin\beta=0
\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) & \ell\sin\beta \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \\ {^B}\dot{\theta} \end{bmatrix}=0
\mathbf{C}_{1i}
{^B}\dot{\boldsymbol{\xi}}
\begin{bmatrix} \cos(\alpha+\beta) & \sin(\alpha+\beta) \\ -\sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \begin{bmatrix} {^B}\dot{x} \\ {^B}\dot{y} \end{bmatrix} +\begin{bmatrix} \ell{^B}\dot{\theta}\sin\beta \\ \ell{^B}\dot{\theta}\cos\beta \end{bmatrix}= \begin{bmatrix} 0 \\ -r\dot{\varphi} \end{bmatrix}

No deslizamiento:

\Rightarrow \mathbf{C}_{1i}{^B}\mathbf{\mathrm{Rot}}_I(\theta){^I}\dot{\boldsymbol{\xi}}=0

para obtener el modelo del robot, se apilan las restricciones de cada rueda (asumiendo \(N\) ruedas):

\mathbf{J}_1=\begin{bmatrix} \mathbf{J}_{11} \\ \vdots \\ \mathbf{J}_{1N} \end{bmatrix} \qquad \mathbf{C}_1=\begin{bmatrix} \mathbf{C}_{11} \\ \vdots \\ \mathbf{C}_{1N} \end{bmatrix} \qquad \mathbf{v}=\begin{bmatrix} v_1 \\ \vdots \\ v_N \end{bmatrix} \\ \mathbf{J}_2=\mathbf{I} \qquad \mathbf{C}_2=\mathbf{0}

para obtener el modelo del robot, se apilan las restricciones de cada rueda (asumiendo \(N\) ruedas):

\begin{bmatrix} \mathbf{J}_1 \\ \mathbf{C}_1 \end{bmatrix}{^B}\mathbf{\mathrm{Rot}}_I(\theta){^I}\dot{\boldsymbol{\xi}}=\begin{bmatrix} \mathbf{J}_2 \\ \mathbf{C}_2 \end{bmatrix}\mathbf{v}

para obtener el modelo del robot, se apilan las restricciones de cada rueda (asumiendo \(N\) ruedas):

\mathbf{A}
\mathbf{B}
\begin{bmatrix} \mathbf{J}_1 \\ \mathbf{C}_1 \end{bmatrix}{^B}\mathbf{\mathrm{Rot}}_I(\theta){^I}\dot{\boldsymbol{\xi}}=\begin{bmatrix} \mathbf{J}_2 \\ \mathbf{C}_2 \end{bmatrix}\mathbf{v}

para obtener el modelo del robot, se apilan las restricciones de cada rueda (asumiendo \(N\) ruedas):

{^I}\dot{\boldsymbol{\xi}}={^I}\mathbf{\mathrm{Rot}}_B(\theta)\mathbf{A}^\dagger\mathbf{B}\mathbf{v}=\mathbf{f}\left({^I}\boldsymbol{\xi},\mathbf{v}\right)

para obtener el modelo del robot, se apilan las restricciones de cada rueda (asumiendo \(N\) ruedas):

{^I}\dot{\boldsymbol{\xi}}={^I}\mathbf{\mathrm{Rot}}_B(\theta)\mathbf{A}^\dagger\mathbf{B}\mathbf{v}=\mathbf{f}\left({^I}\boldsymbol{\xi},\mathbf{v}\right)

velocidad de las ruedas

para obtener el modelo del robot, se apilan las restricciones de cada rueda (asumiendo \(N\) ruedas):

{^I}\dot{\boldsymbol{\xi}}={^I}\mathbf{\mathrm{Rot}}_B(\theta)\mathbf{A}^\dagger\mathbf{B}\mathbf{v}=\mathbf{f}\left({^I}\boldsymbol{\xi},\mathbf{v}\right)

velocidad de las ruedas

{^I}\mathbf{\mathrm{Rot}}_B(\theta)=\begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}

para obtener el modelo del robot, se apilan las restricciones de cada rueda (asumiendo \(N\) ruedas):

{^I}\dot{\boldsymbol{\xi}}={^I}\mathbf{\mathrm{Rot}}_B(\theta)\mathbf{A}^\dagger\mathbf{B}\mathbf{v}=\mathbf{f}\left({^I}\boldsymbol{\xi},\mathbf{v}\right)

velocidad de las ruedas

{^I}\mathbf{\mathrm{Rot}}_B(\theta)=\begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}

velocidad del robot

\ell
\ell
r
v_r
v_\ell

Ejemplo: robot diferencial (differential drive)

{^I}\dot{\boldsymbol{\xi}}=\dfrac{r}{2}\begin{bmatrix} \cos\theta & \cos\theta \\ \sin\theta & \sin\theta \\ 1/\ell & -1/\ell \end{bmatrix} \begin{bmatrix} \dot{\varphi}_R \\ \dot{\varphi}_L \end{bmatrix}
\ell
\ell
r
v_r
v_\ell

Ejemplo: robot diferencial (differential drive)

{^I}\dot{\boldsymbol{\xi}}=\dfrac{r}{2}\begin{bmatrix} \cos\theta & \cos\theta \\ \sin\theta & \sin\theta \\ 1/\ell & -1/\ell \end{bmatrix} \begin{bmatrix} \dot{\varphi}_R \\ \dot{\varphi}_L \end{bmatrix}
\ell
\ell
r
v_r
v_\ell
\dot{x}=\dfrac{r\left(\dot{\varphi}_R+\dot{\varphi}_L\right)}{2}\cos\theta
\dot{y}=\dfrac{r\left(\dot{\varphi}_R+\dot{\varphi}_L\right)}{2}\sin\theta
\dot{\theta}=\dfrac{r\left(\dot{\varphi}_R-\dot{\varphi}_L\right)}{2\ell}

Ejemplo: robot diferencial (differential drive)

Ejemplo: robot diferencial (differential drive)

{^I}\dot{\boldsymbol{\xi}}=\dfrac{r}{2}\begin{bmatrix} \cos\theta & \cos\theta \\ \sin\theta & \sin\theta \\ 1/\ell & -1/\ell \end{bmatrix} \begin{bmatrix} \dot{\varphi}_R \\ \dot{\varphi}_L \end{bmatrix}
\ell
\ell
r
v_r
v_\ell
\dot{x}=\dfrac{r\left(\dot{\varphi}_R+\dot{\varphi}_L\right)}{2}\cos\theta
\dot{y}=\dfrac{r\left(\dot{\varphi}_R+\dot{\varphi}_L\right)}{2}\sin\theta
\dot{\theta}=\dfrac{r\left(\dot{\varphi}_R-\dot{\varphi}_L\right)}{2\ell}

>> mt3005_clase12_modelado_diffdrive.mlx

>> mt3005_clase12_diffdrive.m

MT3005 - Lecture 12 (2025)

By Miguel Enrique Zea Arenales

MT3005 - Lecture 12 (2025)

  • 35