01 · Punto de partida
Del brazo al vehículo
Hasta el tema 24 trabajamos con un robot fijo: un brazo anclado a su base. A partir de aquí el robot se desplaza por el entorno. Cambian las preguntas: ya no es «dónde está el extremo respecto de la base», sino «dónde está el robot respecto del mundo y cómo llega a otro lugar».
La respuesta depende del cuerpo. Un vehículo que gira sobre su eje se maneja de una manera; uno que dirige como un automóvil, de otra; uno que se mueve de costado, de una tercera. Esta unidad (temas 25 a 34) desarrolla la navegación de un robot móvil, y conviene empezar viendo las alternativas de diseño.
Es un tema de decisión de diseño. No hay una configuración «mejor»: cada una resuelve ciertos problemas y crea otros. Para este curso usaremos la diferencial (temas 26 a 34), y aquí veremos por qué es una buena elección para aprender.
02 · Vocabulario
Tres conceptos clave
Grados de libertad del chasis. Un cuerpo rígido en el plano tiene tres: la posición (x, y) y la orientación θ (la pose, tema 20). Un robot ideal podría controlar los tres de forma independiente.
Restricción no holonómica. Una rueda convencional rueda pero no desliza de costado. Eso impone una restricción sobre las velocidades: en cada instante, el robot no puede moverse lateralmente. Si el robot tiene menos grados de libertad controlables que los tres de su pose, se llama no holonómico; si puede controlar los tres, es holonómico.
«No holonómico» no significa «no puede llegar a cualquier lado»: un automóvil llega a cualquier pose del plano, pero tiene que hacer maniobras (como estacionar en paralelo) en lugar de desplazarse de costado. La consecuencia es que planificar los movimientos es más complejo.
Centro instantáneo de rotación (CIR). En cada instante, un robot que se mueve en el plano gira alrededor de un punto: el CIR. Si todas las ruedas fijas ruedan sin deslizar, el CIR está donde se cortan las líneas perpendiculares a la dirección de cada rueda, trazadas por su eje. Si se cortan en un mismo punto, el movimiento es consistente; si no, hay deslizamiento. El radio de giro es la distancia del CIR al robot.
| Configuración | δm | δs | δM | Holonómico |
|---|---|---|---|---|
| Diferencial | 2 | 0 | 2 | No |
| Triciclo / Ackermann | 1 | 1 | 2 | No |
| Omnidireccional (3 ruedas) | 3 | 0 | 3 | Sí |
Los dos primeros tienen maniobrabilidad 2: controlan dos grados de libertad de la pose de forma independiente (por ejemplo, avance y giro). Solo la configuración omnidireccional controla los tres.
03 · Los componentes
Las ruedas disponibles
| Rueda | Cómo funciona | Efecto |
|---|---|---|
| Fija | Eje fijo respecto del chasis | Impone la restricción de no deslizar de costado |
| Directriz | Se orienta con un servo o motor | Cambia la dirección del movimiento; es la base de triciclo y Ackermann |
| Loca (caster) o esférica | Gira libre sobre un pivote o una bola | Apoya el chasis sin imponer restricciones |
| Omnidireccional | Rodillos perpendiculares a la rueda en su borde | Rueda hacia adelante y desliza libre de costado |
| Mecanum | Rodillos a 45° respecto del eje | Combinando cuatro ruedas, permite desplazarse en cualquier dirección |
La rueda loca es fundamental en los robots educativos de dos motores: apoya el chasis en un tercer punto sin afectar el movimiento. Pero tiene un costo oculto: al invertir el sentido de marcha, la rueda debe girar 180° sobre su pivote, y puede imprimir un empujón lateral. Es una de las fuentes de error de los diferenciales pequeños.
04 · La más usada en educación
Tracción diferencial
Dos ruedas motrices fijas sobre un mismo eje, cada una con su motor, más un apoyo (rueda loca o esférica). La dirección se logra con la diferencia de velocidades: iguales para avanzar en línea recta, distintas para curvar, opuestas para girar sobre el lugar.
- Ventajas: mecánica simple y barata; sin servo de dirección; gira sobre su eje (radio de giro cero), lo que le permite moverse en espacios reducidos; la cinemática es sencilla (tema 26).
- Limitaciones: no se desplaza de costado; ir recto depende de que los dos motores giren igual, y casi nunca lo hacen (la deriva en recta se corrige con encoders, tema 18); la rueda loca puede perturbar; a alta velocidad, el centro de masa puede volcar o patinar al girar.
- Odometría: es de las más fiables, porque cada rueda motriz puede medirse con un encoder y la geometría es directa (tema 27).
El CIR de un diferencial está siempre sobre la línea que une las dos ruedas. Cuando las velocidades son iguales, el CIR está en el infinito (recta); cuando son opuestas, está en el centro (giro en el lugar).
05 · Dirigir como un automóvil
Triciclo y Ackermann
En el triciclo, una rueda delantera dirige (y a veces tracciona) y dos ruedas traseras fijas siguen el movimiento. En la configuración Ackermann, las dos ruedas delanteras dirigen y las traseras traccionan, como en un automóvil.
En ambos casos, el CIR está sobre la prolongación del eje trasero. Con el modelo de bicicleta equivalente, de distancia entre ejes L y ángulo de dirección δ, el radio de giro del centro del eje trasero es:
En Ackermann, para que las dos ruedas delanteras ruedan sin deslizar, deben apuntar al mismo centro. La rueda interior gira más que la exterior; con ancho de vía W:
Con L = 25 cm, W = 20 cm y δ = 30° (en el modelo de bicicleta): R ≈ 43,3 cm, rueda interior a 36,9° y exterior a 25,1°. Una barra de dirección con paralelogramo simple los hace iguales y produce deslizamiento leve; la geometría de Ackermann real los ajusta.
- Ventajas: estable a alta velocidad; tracción y dirección separadas, buena para terrenos exteriores; los motores no se oponen entre sí.
- Limitaciones: no puede girar en el lugar; necesita un radio mínimo y espacio para maniobrar (estacionar, invertir el sentido); requiere un servo o mecanismo de dirección; la planificación de trayectorias es más compleja.
El espacio para un giro de 180° se mide con el «diámetro pared a pared»: dos veces el radio de la esquina más exterior, 2·√((R + W/2)² + L²). Con las medidas anteriores son unos 118 cm, contra 32 cm de un diferencial del mismo tamaño que gira sobre su eje.
06 · Moverse en cualquier dirección
Omnidireccional
Con ruedas omnidireccionales (tres a 120°, o cuatro) o ruedas mecanum, el chasis puede trasladarse en cualquier dirección sin girar y, a la vez, rotar. Es la única configuración de esta lista que controla los tres grados de libertad: es holonómica.
- Ventajas: maniobra en espacios muy reducidos; permite acercarse a un objeto desde cualquier lado sin cambiar la orientación (por ejemplo, un brazo apuntando siempre al frente); la planificación de movimientos es más simple.
- Limitaciones: más motores (tres o cuatro) y más complejidad; los rodillos reducen el agarre y la capacidad de carga; funcionan mejor en suelos lisos y planos, y vibran en superficies irregulares; el deslizamiento hace menos fiable la odometría; el costo es mayor.
La cinemática de cada rueda depende de su ángulo de montaje. Para el curso alcanza con reconocer que se trata de un sistema de ecuaciones lineales que relaciona las velocidades de las ruedas con las del chasis.
07 · Terreno difícil
Orugas y deslizamiento
Un vehículo de orugas, o de ruedas con dirección por deslizamiento (skid steer), se maneja como un diferencial: dos lados, cada uno con su velocidad. Para girar, un lado avanza más que el otro, y el vehículo desliza contra el suelo, porque sus apoyos no son puntuales.
- Ventajas: tracción y agarre excelentes en terreno suelto o irregular; supera obstáculos pequeños; gira en el lugar; robusto.
- Limitaciones: el giro requiere vencer la fricción lateral, así que consume mucha energía y desgasta el suelo; el deslizamiento hace que el giro real dependa de la superficie; la odometría es poco fiable (los encoders miden las orugas, no el avance real); es más pesado y ruidoso.
La imprecisión de la odometría es el costo principal: para estimar la pose hay que apoyarse en otros sensores (IMU, tema 29, o referencias externas). Se la elige cuando el terreno importa más que la precisión de la navegación.
08 · Lado a lado
Comparación
| Configuración | Gira en el lugar | Movimiento lateral | Motores | Odometría | Terreno |
|---|---|---|---|---|---|
| Diferencial | Sí | No | 2 | Buena | Liso o poco irregular |
| Triciclo | No | No | 1 o 2, más dirección | Aceptable | Liso o poco irregular |
| Ackermann | No | No | 1 o 2, más dirección | Aceptable | Variado, exteriores |
| Omnidireccional | Sí | Sí | 3 o 4 | Regular | Liso y plano |
| Orugas | Sí (deslizando) | No | 2 | Pobre | Irregular o suelto |
Dos observaciones. Primero, no hay una fila ganadora en todas las columnas: la elección es un compromiso. Segundo, el dato más importante para la programación de la navegación es la columna de odometría, porque determina cuánto podemos confiar en saber dónde estamos (temas 27 y 29).
09 · Una decisión de diseño
Cómo elegir
Escribí la tarea y el entorno antes de elegir. Las preguntas que ordenan la decisión:
- ¿Dónde opera? Interior liso, pasillos angostos, exterior con tierra o pasto.
- ¿Cuánto espacio tiene para girar? Compará el diámetro pared a pared con el ancho disponible.
- ¿Necesita moverse de costado o mantener la orientación? Si sí, considerá una omnidireccional.
- ¿Qué precisión de posición exige? Si va a depender de la odometría, evitá las que deslizan.
- ¿Qué carga lleva y a qué velocidad? La estabilidad y el agarre importan.
- ¿Qué complejidad y costo admite? Más motores y mecánica significan más puntos de falla.
Una matriz de decisión ponderada ayuda a ordenar las ideas: se asigna un peso a cada criterio según la tarea y un puntaje a cada configuración. El laboratorio 2 lo hace con puntajes orientativos. Es una herramienta para discutir, no un oráculo: los puntajes dependen de cada implementación y de la experiencia del equipo.
Para un robot educativo que sigue líneas, recorre laberintos y evade obstáculos en una mesa lisa, la configuración diferencial gana de forma clara: es simple, barata, gira en el lugar y tiene buena odometría. Por eso es la que adoptamos desde el tema 26.
10 · Código para la placa
Geometría de giro en Arduino
Este sketch no necesita hardware. Calcula, para unas medidas de chasis, el radio de giro y los ángulos de las ruedas de un triciclo o un Ackermann, y el diámetro de giro en el lugar de las configuraciones que lo permiten. Sirve como calculadora de diseño antes de construir.
struct GiroDireccion { bool ok; float radio, interior, exterior, diametro; };
// Triciclo o Ackermann: L = distancia entre ejes, W = ancho de vía (cm), delta = dirección máxima.
GiroDireccion giroConDireccion(float L, float W, float deltaGrados) {
GiroDireccion g = { false, 0, 0, 0, 0 };
if (L <= 0 || W <= 0 || deltaGrados <= 0 || deltaGrados >= 90) return g;
const float R = L / tan(deltaGrados * DEG_TO_RAD); // centro del eje trasero
if (R <= W / 2.0 + 1e-6) return g; // la rueda interior pasaría de 90°
g.ok = true;
g.radio = R;
g.interior = atan(L / (R - W / 2.0)) * RAD_TO_DEG;
g.exterior = atan(L / (R + W / 2.0)) * RAD_TO_DEG;
g.diametro = 2.0 * sqrt((R + W / 2.0) * (R + W / 2.0) + L * L); // esquina delantera exterior
return g;
}
// Diferencial, orugas u omnidireccional: gira sobre su centro; el chasis mide W x L.
float diametroEnSitio(float L, float W) { return sqrt(W * W + L * L); }
void mostrar(float L, float W, float delta) {
Serial.print("L="); Serial.print(L, 1); Serial.print(" W="); Serial.print(W, 1);
Serial.print(" delta="); Serial.println(delta, 1);
const GiroDireccion g = giroConDireccion(L, W, delta);
if (g.ok) {
Serial.print(" Triciclo/Ackermann: R="); Serial.print(g.radio, 1);
Serial.print(" cm, interior="); Serial.print(g.interior, 1);
Serial.print(" grados, exterior="); Serial.print(g.exterior, 1);
Serial.print(" grados, pared a pared="); Serial.print(g.diametro, 1); Serial.println(" cm");
} else {
Serial.println(" Triciclo/Ackermann: combinacion no realizable");
}
Serial.print(" Diferencial/orugas/omni (en sitio): ");
Serial.print(diametroEnSitio(L, W), 1); Serial.println(" cm");
}
void setup() {
Serial.begin(115200);
Serial.setTimeout(100);
Serial.println("Escribi 'L W delta' (cm, cm, grados), por ejemplo: 25 20 30");
mostrar(25.0, 20.0, 30.0);
}
void loop() {
if (Serial.available() == 0) return;
const float L = Serial.parseFloat();
const float W = Serial.parseFloat();
const float delta = Serial.parseFloat();
while (Serial.available() > 0) Serial.read();
mostrar(L, W, delta);
}
Al iniciar muestra el caso 25 20 30: R=43.3 cm, interior=36.9 grados, exterior=25.1 grados y pared a pared=117.7 cm; y 32.0 cm para un diferencial, orugas u omni del mismo tamaño. Probá 25 20 45 (radio de 25 cm con la dirección a 45°) y 25 50 45 (no realizable: la rueda interior tendría que girar 90°).
Los resultados son geometría ideal: no incluyen el deslizamiento, el voladizo del chasis ni las tolerancias de la dirección. Cuando midas tu robot, sumá un margen. Como en temas anteriores, parseFloat() espera con un tiempo límite, aceptable aquí porque el sketch solo calcula.
11 · Exploración interactiva
Laboratorios: giro y decisión
1. Cuánto espacio necesita para girar
Elegí una configuración y las medidas del chasis (largo o distancia entre ejes, ancho de vía y, si dirige, el ángulo máximo). Se dibuja visto desde arriba el vehículo y el círculo que barre al dar la vuelta. La línea punteada exterior es el «pared a pared».
Elegí una configuración.
Con Ackermann de 25 × 20 cm y δ = 30° se necesitan unos 118 cm de pasillo para dar la vuelta; con un diferencial del mismo tamaño, 32 cm. Probá bajar δ a 15°: el radio sube a 93 cm y el pasillo a 213 cm. Probá W = 50 cm y δ = 45° con Ackermann: la combinación no se puede realizar.
2. Una matriz de decisión
Asigná un peso de 0 a 5 a cada criterio según tu tarea. El laboratorio multiplica por puntajes orientativos de cada configuración (0 a 5) y las ordena. Los puntajes son una opinión de diseño, no una medición.
| # | Configuración | Puntos | Del máximo posible |
|---|
Elegí los pesos.
Con los pesos iniciales (un robot de interior, que gira en espacios reducidos, simple y con buena odometría) gana la diferencial con 59 de 70 puntos posibles, el 84 %. Si subís el peso del terreno irregular a 5 y bajás el resto, ganan las orugas. Si el movimiento lateral pasa a 5, gana la omnidireccional. Si lo que importa es la estabilidad a velocidad, gana la Ackermann.
12 · Código ejecutable
Comparar configuraciones en Python
Repetimos los cálculos de giro y la matriz de decisión con los mismos números. Cambiá las medidas, los pesos o los puntajes para ver cómo se mueve el ranking.
Probalo en el navegador. Python se descarga con Pyodide la primera vez y requiere conexión. El código es editable y no controla ningún robot.
import math
W, L = 20.0, 25.0 # ancho de vía y largo (o distancia entre ejes), cm
DELTA = 30.0 # ángulo máximo de dirección equivalente (grados)
def giro_con_direccion(L, W, delta_deg):
d = math.radians(delta_deg)
R = L / math.tan(d) # radio del centro del eje trasero
interior = math.degrees(math.atan(L / (R - W / 2)))
exterior = math.degrees(math.atan(L / (R + W / 2)))
R_ext = math.hypot(R + W / 2, L) # esquina delantera exterior
return R, interior, exterior, 2 * R_ext
def giro_en_sitio(L, W):
return math.hypot(W, L) # diámetro de la circunferencia circunscripta
R, di, do, diam = giro_con_direccion(L, W, DELTA)
print(f"Triciclo/Ackermann: R={R:.1f} cm; rueda interior={di:.1f} grados; exterior={do:.1f} grados; "
f"giro pared a pared={diam:.1f} cm")
print(f"Diferencial, omni u orugas (giro en sitio): {giro_en_sitio(L, W):.1f} cm")
criterios = ["giro en espacio reducido", "terreno irregular", "odometria fiable",
"simplicidad y costo", "estabilidad a velocidad", "movimiento lateral"]
puntajes = { # orientativos, de 0 a 5
"Diferencial": [5, 2, 4, 5, 3, 0],
"Triciclo": [2, 2, 3, 3, 3, 0],
"Ackermann": [1, 4, 3, 2, 5, 0],
"Omni": [5, 1, 2, 1, 2, 5],
"Orugas": [4, 5, 1, 3, 2, 0],
}
pesos = [4, 2, 3, 4, 1, 0]
total = sum(pesos) * 5
ranking = sorted(((sum(p * s for p, s in zip(pesos, v)), n) for n, v in puntajes.items()), reverse=True)
for suma, nombre in ranking:
print(f"{nombre:12s} {suma:3d} puntos ({suma / total * 100:4.0f} % del maximo)")Con 25 × 20 cm y δ = 30°: R = 43,3 cm, rueda interior 36,9°, exterior 25,1° y 117,7 cm de pared a pared; el giro en el lugar ocupa 32,0 cm. El ranking con los pesos iniciales es: diferencial (59 puntos, 84 %), orugas (43, 61 %), triciclo (36, 51 %) y, empatados, omnidireccional y Ackermann (34, 49 %).
Probá cambiar los pesos a [1, 5, 1, 1, 1, 0] (terreno irregular dominante): las orugas pasan al primer lugar con 35 puntos. Con [2, 1, 1, 1, 1, 5], la omnidireccional. Cambiar los puntajes es un buen ejercicio: ¿con qué valores cambiarías de opinión?
13 · Cuidado con las ideas hechas
Errores de elección y diagnóstico
«Un robot holonómico siempre es mejor»
Maniobra más fácil, pero a cambio de más motores, menos agarre y odometría menos fiable. En un suelo irregular o con carga, puede ser la peor opción.
«Un robot no holonómico no puede llegar a cualquier pose»
Puede, con maniobras. Lo que no puede es desplazarse de costado directamente. Un automóvil estaciona en paralelo con una secuencia de movimientos.
«El diferencial siempre va recto si le doy el mismo PWM a los dos motores»
Casi nunca: los motores, los engranajes y las ruedas no son idénticos. Para ir recto hace falta medir (encoders, tema 18) o corregir con otro sensor (IMU, tema 29).
«La rueda loca no afecta»
Al cambiar el sentido de marcha o al arrancar, puede imprimir un empuje lateral y desviar al robot. Elegila liviana, con poca fricción y ubicada con cuidado.
«Con orugas, la odometría de los encoders es suficiente»
Los encoders miden el giro de las orugas, no el desplazamiento real: el deslizamiento al girar introduce errores grandes que cambian con el suelo.
«El radio de giro mínimo del Ackermann es L/tan δ para cualquier punto»
Esa fórmula vale para el centro del eje trasero. Las demás partes (la esquina delantera exterior, por ejemplo) barren un círculo mayor, y es ese el que hay que comparar con el pasillo.
Antes de construir, hacé una maqueta o una simulación de la tarea con la configuración elegida y comprobá que el espacio, el terreno y la maniobra alcanzan.
14 · Práctica guiada
Predecí antes de comprobar
1. Radio de giro
Un triciclo tiene L = 30 cm y su rueda directriz llega a 25°. ¿Cuál es el radio mínimo de giro del centro del eje trasero?
Ver solución
R = L / tan δ = 30 / tan 25° ≈ 64,3 cm.
2. Ángulos de Ackermann
Con L = 25 cm, W = 20 cm y R = 60 cm, ¿qué ángulos tienen las ruedas delanteras?
Ver solución
Interior: atan(25/(60−10)) = atan(0,5) ≈ 26,6°. Exterior: atan(25/70) ≈ 19,7°. La interior gira unos 7° más.
3. ¿Cabe?
Un pasillo mide 40 cm de ancho. ¿Puede dar la vuelta un diferencial de 20 × 25 cm? ¿Y un Ackermann de las mismas medidas con δ = 30°?
Ver solución
Diferencial: diámetro √(20² + 25²) ≈ 32 cm, cabe con 8 cm de margen total. Ackermann: unos 118 cm, no cabe en una sola maniobra; necesitaría marcha atrás y maniobras.
4. Holonómico o no
Clasificá diferencial, Ackermann y omnidireccional de tres ruedas, y explicá la diferencia entre «no holonómico» y «no puede llegar».
Ver solución
Solo la omnidireccional es holonómica (controla x, y y θ de forma independiente). Los otros dos no pueden desplazarse de costado de forma directa, pero sí alcanzar cualquier pose mediante una secuencia de maniobras.
5. Elegir con pesos
Para un robot de exploración al aire libre con los pesos [1, 5, 1, 1, 1, 0], ¿cuál queda primera y por qué?
Ver solución
Orugas (35 puntos), seguida de Ackermann (31) y diferencial (27). Pesa mucho el terreno irregular, donde las orugas puntúan 5. El precio es la odometría poco fiable, que el resultado oculta si no se pondera.
6. Combinación imposible
Un Ackermann tiene L = 25 cm, W = 50 cm y δ = 45°. ¿Por qué no es realizable?
Ver solución
El radio es R = 25/tan 45° = 25 cm = W/2: el centro de giro cae justo debajo de la rueda interior, que tendría que girar 90°. Con δ menor o una trocha menor se resuelve.
7. Odometría
¿Por qué la odometría de un vehículo de orugas es menos fiable que la de un diferencial de ruedas?
Ver solución
Para girar, las orugas deslizan contra el suelo, así que el giro de los encoders no se corresponde con el desplazamiento real, y el error depende de la superficie. Un diferencial de ruedas rueda sin deslizar en condiciones normales.
15 · Síntesis
Ideas para recordar
- La configuración de ruedas determina qué movimientos son posibles, cuánto espacio necesita girar y qué tan fiable es la odometría.
- Una rueda fija no desliza de costado: la restricción no holonómica obliga a maniobrar; solo la omnidireccional controla x, y y θ por separado.
- El centro instantáneo de rotación explica los giros: sobre el eje de las ruedas en el diferencial, y sobre el eje trasero en triciclo y Ackermann.
- Diferencial: simple, gira en el lugar, buena odometría. Ackermann y triciclo: estables a velocidad, pero con radio mínimo y sin giro en el lugar.
- Omnidireccional: maniobra libre a cambio de complejidad, menor agarre y odometría regular.
- Orugas: terreno difícil a cambio de deslizamiento, consumo y odometría pobre.
- El espacio para girar se mide pared a pared, con la esquina más exterior, no con el radio del eje trasero.
- Se elige por la tarea y el entorno; una matriz ponderada ordena las ideas, y un prototipo las confirma.
¿Listo para el tema 26?
Antes de avanzar, escribí en tres líneas la tarea de tu robot, el entorno y la configuración que elegirías, con un criterio que la justifique. Calculá el diámetro de giro y comprobá que cabe en el espacio disponible.
En el próximo tema estudiamos la cinemática del robot diferencial: cómo se relacionan las velocidades de las ruedas con la velocidad lineal y angular del robot.