Construcción de un rover autónomo por waypoints GPS
Un rover autónomo que recorre waypoints GPS en campo abierto con desvío inferior a un metro y parada automática de seguridad mediante geovalla.
Qué va a construir
Un robot al que le das una lista de coordenadas, lo pones en la hierba y te vas.
Todos los demás robots móviles de este sitio reaccionan a lo que tienen justo delante: una línea, una pared, un obstáculo, un borde. Este ejecuta un plan, en un mundo sin puntos de referencia, usando un sensor que le miente unas cuantas veces por minuto. Esa combinación es lo que lo convierte en la construcción móvil más difícil de aquí y en la que más enseña.
Las tres cosas que lo deciden
El seguidor es la parte fácil. Pure pursuit son doce líneas y un potenciómetro. Con una estimación de posición perfecta mantiene 0.09 m de error RMS en el recorrido del laboratorio.
La estimación de posición es todo el proyecto. El mismo controlador, con un fix de GPS a 1 Hz con ruido a escala de metro, mantiene 1.25 m — catorce veces peor — y gasta cuatro veces y media más de dirección en conseguirlo. El controlador aporta menos de una décima parte del error final.
Así que el orden de construcción es: seguidor en interiores, estimación en exteriores. Demuestra la dirección allí donde la posición es casi exacta, y después ve a pelearte con el sensor. Hacer ambas cosas a la vez produce un robot que deambula por razones que no puedes separar.
Lista de materiales
| Componente | Cant. | Coste aprox. | Notas |
|---|---|---|---|
| Arduino Uno o Mega | 1 | $5–12 | Un Mega compensa: cuatro pines de interrupción para decodificación de encoder ×4 completa, más UART de sobra |
| Módulo GPS (NEO-6M) | 1 | $8–12 | Un NEO-M8N es la mejor mejora de esta lista — multiconstelación y mejor geometría |
| MPU-6050 | 1 | $2 | Rumbo entre fixes. Sin él el rover no puede saber hacia dónde mira |
| Motores N20 con encoder | 2 | $16 | Los encoders no son opcionales en esta construcción |
| TB6612FNG | 1 | $3 | |
| Chasis 2WD | 1 | $10–20 | Las ruedas grandes ayudan fuera; la hierba no perdona a una rueda de 65 mm |
| Pack de baterías | 1 | $10 | 2×18650 protegidas, o 3S con regulador |
| Soporte alto para antena | 1 | $2 | La antena de parche necesita cielo, no una línea de visión: metal por encima le cuesta satélites |
Total: unos $55–80.
La pieza que más cambia el proyecto es el receptor. Un NEO-6M funciona y es lo que asumen casi todos los tutoriales; un NEO-M8N ve GPS más GLONASS y Galileo, lo que mejora la geometría de satélites y por tanto el HDOP. Cerca de edificios y árboles — donde un rover realmente se mueve — eso es una mejora real mayor de lo que sugiere la especificación de precisión.
No te saltes los encoders para ahorrar $12. Todo este proyecto es navegación por estima corregida por fixes ocasionales; sin encoders no hay nada con lo que hacer la estima, y el rover simplemente persigue el ruido del GPS.
Orden de construcción
1 — Ajusta el seguidor en el simulador. Una hora en el laboratorio de seguimiento de trayectorias a la velocidad que piensas conducir. Encuentra el lookahead donde la curva de error toca su mínimo; anota que se mueve cuando cambias la velocidad.
2 — Monta la tracción y pon la odometría a funcionar. Encoders dentro de la odometría de tracción diferencial, y luego recorre un cuadrado de 2 m para ver a qué distancia del origen terminas. Ese número es tu presupuesto de interiores.
3 — Fusiona un rumbo. Un giróscopo a la frecuencia del bucle, corregido por algo absoluto. El error de rumbo es el término que más pesa en ambos controladores, y es lo primero que la odometría pierde: el filtro complementario que estabiliza un robot de equilibrio hace aquí el mismo trabajo.
4 — Sigue un recorrido pegado con cinta en interiores. Sin GPS. Pega un camino en el suelo, ejecuta pure pursuit sobre la estimación por encoder y mide el error transversal con una regla en diez puntos. Si en interiores no baja de 10 cm, fuera no bajará de un metro.
5 — Añade el receptor y no lo conectes todavía al controlador. Registra fixes durante diez minutos con el rover quieto y haz una gráfica. Verás el ruido, la desviación ocasional, y cómo el HDOP sigue a las dos cosas. Esa gráfica vale más que cualquier cifra de un datasheet.
6 — Fusiona, no sigas. Haz la estima a la frecuencia del bucle; tira de la estimación suavemente hacia cada fix bueno. La aritmética y el filtrado están aquí. Rechaza cualquier cosa con estado void o HDOP por encima de unos 2.5.
7 — Geovalla y luego sal. Distancia máxima desde el origen, tiempo máximo de misión, corte físico. Después una misión corta, sobre hierba, con tú caminando al lado.
Notas de hardware que importan
Monta la antena arriba, mirando al cielo, lejos de todo. Una antena de parche cerámica bajo la chapa del chasis pierde satélites, y perder satélites es mala geometría en vez de ausencia de fix: una respuesta segura equivocada en lugar de un fallo evidente.
Ruedas más grandes de lo que te pide tu instinto de interiores. La hierba, la grava y el borde del césped son problemas de diámetro de rueda. También cambian tu factor de escala de odometría, así que recalibra sobre la superficie por la que vas a conducir de verdad.
Mantén el magnetómetro lejos de los motores, o déjalo. La corriente de motor produce un campo que aplasta el de la Tierra. Si no consigues 15 cm de separación, usa giróscopo más rumbo sobre el suelo y esquiva el problema.
Registra la misión. Un fallo en exteriores que no grabaste es un fallo que no puedes depurar: el robot estaba a 40 m y tú no mirabas el puerto serie. Una tarjeta SD o un log por Wi-Fi de pose, fix, HDOP y error transversal convierte cada salida en evidencia.
Espera que la primera salida al exterior termine antes de tiempo. Para eso está la geovalla, y es un éxito.
Qué significa hacerlo bien
| Medida | Siguiendo GPS crudo | Fusionado con odometría |
|---|---|---|
| Error transversal, RMS | 3–5 m | 0.3–0.6 m |
| Error transversal, peor caso | 8–12 m | 1.0–1.5 m |
| Actividad de dirección | Constante, correcciones grandes | Suave, ocasional |
| Tolerancia de llegada a waypoint | 5 m, y eso ya es optimista | 0.5–1 m |
| Deriva de posición estática, quieto | Nube de 2–4 m | N/D — la odometría lo mantiene fijo |
Esa primera columna no es un rover mal construido: es lo que le hace a un controlador que confía en él un fix de GPS de 2.5 m CEP a 1 Hz. La mejora de orden de magnitud de la segunda columna viene del estimador, no del controlador — el mismo código de pure pursuit, alimentado con una pose fusionada.
Antes de escribir una sola línea de navegación, haz esto una vez: deja el receptor quieto en exteriores durante diez minutos y registra cada fix. La nube que obtienes tiene varios metros de lado, y no se movía nada. Esa gráfica es lo más útil que vas a mirar en todo el proyecto, porque explica por qué seguir fixes crudos no puede funcionar y por qué el fix está aguas arriba del controlador.
Cuando va mal
| Síntoma | Causa habitual |
|---|---|
| Serpentea en línea recta fuera, bien dentro | Está siguiendo fixes crudos en vez de fusionarlos |
| Serpentea también dentro | Lookahead demasiado corto para el retardo; reajústalo en el laboratorio |
| Redondea todas las esquinas | Lookahead demasiado largo: es el intercambio, no un fallo |
| Posición segura pero desviada decenas de metros | Mala geometría de satélites; no filtraste por HDOP |
| Se mueve en dirección contraria desde parado | Sin rumbo utilizable; el rumbo sobre el suelo es ruido por debajo de ~1 m/s |
| Deriva de forma constante hacia un lado | Factor de escala de odometría o ancho de vía mal para esta superficie |
| No pasa nada los dos primeros minutos | Arranque en frío del GPS. Muéstralo, no des por hecho el origen |
| Se salió del campo | La geovalla no estaba escrita antes de la prueba |
Seis de esas ocho son de percepción y no de control: la misma distribución que en el micromouse y el robot de cobertura, y por la misma razón: el algoritmo es la parte pequeña.
Para ver la secuencia completa en orden, sigue la ruta de seguimiento de trayectorias; para la versión en interiores del mismo problema, al robot de cobertura no le hace falta ni plan ni posición absoluta.
Hoja de ruta del proyecto
La ruta de construcción
Sigue el árbol tecnológico desde las piezas hasta un robot que funciona. Cada nodo se desbloquea cuando completas sus requisitos previos, y tu progreso se guarda en este dispositivo.
0 / 20 completados
Componentes
- ControladorArduino UnoLa tolerante placa de 8 bits con la que la mayoría descubre la robótica.
- SensorGPS / GNSS ModuleReceptor satelital de posicionamiento global para vehículos autónomos en exteriores.
- SensorMPU6050 IMUEl sensor inercial de 6 DOF para medir inclinación, balanceo y orientación angular en robots.
- ActuadorN20 Micro Gearmotor with EncoderMicromotor con reductora metálica y encoder trasero, para que el robot sepa cuánto ha avanzado realmente.
- DriverTB6612FNG Motor DriverPuente en H dual con tecnología MOSFET: alta eficiencia y tamaño ultracompacto para robots móviles.
- Chasis2WD Robot ChassisLa plataforma donde se atornillan dos motores, una rueda loca y toda tu electrónica.
- AlimentaciónBattery Power PackLa fuente de energía determinante: por qué la química y la resistencia interna importan más que los voltios.
Tutoriales de esta ruta
- Intermedio · 30 min de lecturaPure Pursuit: seguimiento de trayectorias con un único parámetroApunta a un punto por delante en el camino y traza el arco circular que lo alcanza. Ese es todo el algoritmo.
- Intermedio · 30 minNavegacion por puntos de paso GPS para un robot de exteriorUna posicion GPS llega tarde, con ruido y sin rumbo. Esto es que hacer con cada uno de esos problemas.
- Intermedio · 25 minError transversal: medir lo bien que sigues una trayectoriaUna distancia con signo te dice todo sobre un seguidor de trayectoria, incluido cual elegir.
- Principiante · 17 min de lecturaLeer codificadores en cuadratura para distancia y velocidadConvierte los pulsos de un codificador en cuadratura en direccion, distancia y velocidad de rueda fiables.
- Intermedio · 20 min de lecturaOdometria diferencial con codificadores de ruedaIntegra el movimiento de las ruedas izquierda y derecha en la pose de un robot movil y despues identifica y calibra la deriva.
Practica antes de cablear
Ajústalo en el simulador en vivo
La ruta de construcción pasa por un laboratorio en el navegador. Consigue aquí el comportamiento correcto y luego traslada tus ajustes al robot real.
Preguntas frecuentes
¿Por qué validar el seguidor en interiores antes de conectar el GPS?
Porque si se ensayan ambos simultáneamente y el vehículo zigzaguea, es imposible discernir si el fallo radica en el lazo cinemático o en el ruido del sensor. En interiores sobre suelo liso con encoders, la estimación posicional tiene precisión centimétrica sobre una pista marcada, de modo que cualquier oscilación proviene exclusivamente de las ganancias del controlador. Una vez calibrada la distancia de mira con regla métrica, se incorpora el receptor GPS sabiendo que la cinemática es correcta.
¿Qué precisión real de seguimiento puede esperarse de un rover GPS educativo?
Aproximadamente un metro de error transversal RMS en condiciones atmosféricas despejadas, límite impuesto por el receptor GPS comercial y no por el código de control. En simulador con postura perfecta el algoritmo Pure Pursuit logra 0.09 m de error RMS, mientras que una muestra de GPS a 1 Hz con ruido típico arroja 1.25 m. Mejorar esta cota exige receptores multifrecuencia multiconstelación y corrección diferencial RTK, no reajustar ganancias.
¿Se necesita un magnetómetro además del giróscopo?
Se requiere una referencia angular absoluta. Un magnetómetro la proporciona en reposo pero exige calibración de hierro duro y blando y sufre interferencias severas junto a los motores. El rumbo por curso sobre el terreno (course-over-ground) del GPS es exacto pero solo tiene validez con el robot en marcha a más de 1 m/s. La estrategia adoptada consiste en emplear el giróscopo para el lazo rápido de control, corrigiendo su deriva lenta con el rumbo del GPS en cuanto el vehículo adquiere velocidad.
¿A qué velocidad lineal conviene desplazar el rover?
A una velocidad moderada, significativamente inferior al máximo de los motores. El error transversal mínimo alcanzable se incrementa con la velocidad lineal independientemente de la sintonización: en laboratorio un error de 0.05 m a 1 m/s pasa a 0.23 m a 3 m/s con estimación perfecta. En exteriores el ruido de satélites predomina; comience fijando una consigna suave de 0.5 m/s.
¿Cómo se evita que el robot escape hacia una vía pública o agua?
Mediante una geovalla (geofence) por software programada antes de salir al campo: un radio máximo estricto respecto al punto de partida verificado en cada iteración del bucle, el cual corta la excitación de los motores inmediatamente si se rebasa. Añada un tiempo máximo de misión y un pulsador físico de parada de emergencia en el chasis.
¿Es aconsejable emplear una placa ESP32 en lugar de un Arduino Uno?
Sí, es sumamente ventajoso. La ESP32 aporta puertos serie UART adicionales por hardware para el receptor GPS (eliminando SoftwareSerial), amplia memoria RAM para almacenar secuencias extensas de waypoints, coprocesador de coma flotante y conectividad Wi-Fi para transmitir telemetría en tiempo real hacia un ordenador portátil.