Curiosity MSL
1. La Mars Science Laboratory (abreviada MSL), conocida como Curiosity (Curiosidad en español), es una misión espacial que incluye un astromóvil de exploración marciana dirigida por la NASA. Fuente: Wikipedia
Curiosity BTL (Bricolabs Technology Laboratory) es un proyecto para replicar a escala el rover marciano MSL en un modelo imprimible.
Afortunadamente no tendrá que llegar a tus manos en una maniobra como los 7 minutos de terror, o en el estado de la pobre Schiaparelli. Toda la información necesaria para construirla y programarla estará aquí.
La parte mecánica es un curioso mecanismo con balancines llamado rocker-bogie y una barra estabilizadora que equilibra los trenes de ambos lados. Tiene 6 ruedas motrices y 4 ruedas directrices. Según NASA es capaz de superar obstáculos dos veces el diámetro de la rueda.
Hay dos diseños, a escalas 1:5 y 1:10.
El diseño completo de las piezas imprimibles está en Github y Thingiverse.
Hay dos opciones para las ruedas: una con cubiertas comerciales (Pololu Dagu) y otra con cubiertas impresas en 3D con filamento elástico.
En este enlace puedes verlo en funcionamiento.
Esta parte del proyecto ha evolucionado con mejoras y ahora es Perseverance. En Github y Thingiverse se mantiene el original como código legacy. Si empiezas de cero, te recomendamos que te pases a Perseverance.
Escala 1:15 por @diegogg https://www.thingiverse.com/thing:3432863
Para controlar 6 motores con inversión de giro y 4 servos necesitamos muchas salidas PWM. Una manera de hacerlo que permite ser controlado indistintamente con un Arduino o una Raspberry Pi es basarse en una controladora de 16 servos con bus i2c de Adafruit.
La alternativa sencilla a esto es utilizar un Arduino Mega2560, en su versión original o la versión compacta que se ofrece como alternativa (aunque con chip de comunicaciones CH340). Para la versión 1:10 se han utilizado drivers L9110. Para la versión XL se han utilizado drivers L298.
Para el Arduino Mega original se ha utilizado una shield que replica todas las salidas añadiendo a cada una alimentación y masa, y además tiene un zócalo para un módulo BluetoothBee. Con ella y los drivers L298, puede hacerse un cableado muy limpio con una cinta Dupont hembra-hembra de 20 cm con 19 cables con el siguiente orden:
7-30-31-32-33-6-5-34-35-36-37-4-3-38-39-40-41-2-GND
Hay una pieza para montar los tres drivers en la parte trasera del rover, donde el original tiene el generador eléctrico de radioisótopos (RTG), y opcionalmente puedes ponerle una cubierta que los protegerá un poco y se asemeja al RTG original.
Esa disposición de cableado permite utilizar un código muy sencillo para operar cada motor por separado.
void setmotor(int m, int v){ int pwm = 8-m; int dir1 = 28+2*m; int dir2 = 29+2*m; v = constrain (v,-255,255); digitalWrite(dir1,v>=0); digitalWrite(dir2,v<0); analogWrite(pwm,abs(v)); }
Puedes ver más detalles del uso de ese driver de motores (y otros) e nuestra wiki.
En el mástil irá montada una cámara para poder conducir Curiosity por radiocontrol con gafas FPV (First Person View) o un monitor externo. Puede ser una cámara dedicada como las usadas en drones o una GoPro. En cualquier caso será un sistema independiente del control de movimiento, tanto si este es autónomo como si es teledirigido desde Bluetooth o con un mando infrarrojo.
Avanzar recto es una maniobra sencilla. Para describir una curva habrá que girar los servos de las esquinas, en dirección opuesta los de delante y los de atrás. Y para girar sobre su propio eje será necesario que el eje de todas la ruedas apunte al centro del rover. Programar el giro de los servos requerirá una calibración de ajuste una vez montados.
Los programas para Arduino MEGA están aquí. Hay un programa para probar y calibrar los servos, un programa de movimientos aleatorios y un programa para manejarlo con una emisora de radiocontrol Turnigy.
José Antonio Vacas @javacasm tieen ya un desarrollo basado en Arduino con diferentes niveles de complejidad, con los programas y los esquemas electrónicos.