fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Proyecto: Controlador de posición

75 Respuestas
10 Usuarios
0 Reactions
35.1 K Visitas
ranganok
Respuestas: 3875
Topic starter
(@ranganok)
Ardero
Registrado: hace 19 años

Hola a todos,

Estoy realizando un controlador de posición para un cuadróptero (es mi PFC), quiero que sea Open-Hardware así que iré publicando por aquí y en el blog los avances que vaya haciendo. Se que ya existen alternativas comerciales y abiertas (el openPilot, el KK o el multiWii por ejemplo), pero mi idea es que al final sea totalmente autónomo.

Por otra parte quiero hacer el sistema lo más general posible para que pueda aplicarse a todo tipo de drones (áereos, terrestre, acuaticos, submarinos o espaciales).

He partido el proyecto en varios trozos:
- Piloto --> controlador de posición (mi PFC) evita que el cuadróptero se vaya al traste, controlará los sensores y enviará las señales a los drivers para controlar la estabilidad del conjunto.
- Navegador --> Es el que toma las decisiones para que sea autónomo. Por falta de tiempo no voy a realizarlo dentro del PFC, pero iré avanzando en él cuando tenga la parte del piloto hecha.
- Maquinista --> Mi idea es desarrollar unos drivers para motores brushless (los famosos ESC) que se controlen por bus SPI que den una mayor velocidad de respuesta al sistema (los 20ms del PWM me parecen mucho en una situación crítica).
- Controlador --> Servicio de telemetría en tierra para la recepción de la telemetría y el control (indicaciones) del equipo.

Las sugerencias serán bienvenidas.

S2

Ranganok Schahzaman

Responder
74 respuestas
ranganok
Respuestas: 3875
Topic starter
(@ranganok)
Ardero
Registrado: hace 19 años

Protocolo de comunicaciones:

Voy a realizar uno sencillo de utilizar del tipo:
ID | LEN | DATA

ID (1 byte): identificador
LEN (1 byte): longitud de los datos
DATA (0 a 255 bytes): datos

Esto permite enviar hasta 255 señales distintas, de datos variables. Este protocolo viene encapsulado para radio tal que así:
Preámbulo | SINCRO WORD | DESTINO | ORIGEN | SECUENCIA | ID | LEN | DATA | CRC-16

- El preámbulo (16-64 bits) y el sincro word (2 bytes) sirven para sincronizar el Tx y el Rx, corregir la frecuencia, marcar el inicio del paquete, etc.
- DESTINO (1 byte) y ORIGEN (1 byte) es para identificar a los que se comunican entre ellos (por si hay más de un aparato o central de tierra).
- SECUENCIA (1 byte) Numero de paquete permite saber si nos hemos saltado un paquete.
- CRC-16 son dos bytes de control de errores.

S2

Ranganok Schahzaman

PD: una vez terminado el PFC intentaré integrar el MAVLink

Responder
heli
Respuestas: 748
 Heli
(@heli)
Ardero
Registrado: hace 19 años

Idea:
En lugar de usar un CRC16, para la radio, puedes usar un código con corrección de errores tipo Reed-Solomon BCH4863 ó BCH3121 y garantizas una mejor comunicación en entornos ruidosos o con poca señal, sobre todo si no tienes canal de retorno. Los algoritmos que te he comentado antes no sonsumen mucha memoria ni potencia de cálculo... Además para un PFC mola mas.
Mándame un privado si necesitas fuentes en C del código opimizado...

Responder
ranganok
Respuestas: 3875
Topic starter
(@ranganok)
Ardero
Registrado: hace 19 años

Heli, sí me interesa el código (aunque para otros proyectos), no se si tienes mi correo sino te lo mando.

He cogido el CRC-16 porque es el que implementa automáticamente el chip de radio y así me lo ahorro de tener que hacer yo. Además había pensado hacer la comunicación bidirecional (con ACK o NACK para las pérdidas de paquetes). También es el que se utiliza en el MAVLink.

De todas formas dado que este encapsulamiento lo hace el propio chip, si cambiamos de chip de RF podemos cambiar de encapsulamiento sin cambiar el protocolo principal (ID | LEN | DATA).

S2

Ranganok Schahzaman

EDITO:

Heli, me has dado una idea, voy a separar la RF del chip principal, de esta forma el chip de RF (con la lógica asociada) se encargará de encapsular el protocolo, de los reintentos y de controlar los paquetes, y el micro pincipal sólo de enviar y recibir los datos.

Responder
ranganok
Respuestas: 3875
Topic starter
(@ranganok)
Ardero
Registrado: hace 19 años

Siguiendo con el diseño:

Las entradas del control de posición que quiero poner son:
- IMU 10 Ejes (I2C/SPI):
- Giroscopio 3 ejes
- Acelerómetro 3 ejes
- Magnetómetro 3 ejes
- Barómetro/Altímetro

- GPS (RS232)
- RTC
- Hasta 8 x Sonar (I2C/SPI?)
- Centralita RF 9Ch (9 entradas de PWM)
- Telemetría (RS232 o SPI)

Salidas:
- Hasta 8 motores (PWM / SPI)
- 12 Salidas para LEDs (PWM)
- Salidas Digitales para interruptores, etc.
- Targeta MMC para logging

S2

Ranganok Schahzaman

Responder
Página 1 / 15
Compartir: