kobaiachi ha scritto:Masa l'arduino è una piattaforma semplice e sicura, ma l'ardupilot contiene un sacco di codice e ne sfrutta quasi tutte le capacita in contemporanea .
essendo alla fine un sistema spinto abbastanza al limite vorrei usare una tecnoligia di fault tolerant ed alta affidabilita per poter evitare errori in maniera tale da farne un autopilota affidabile .
ora io non ho comptenze di elettronica per piu o meno di comunicazioni me ne intendo un pochino .
io intendevo usare le l'uscita seriale diponibile,e le uscite PWM per connetterle ad una scheda che abbia un algoritmo di controllo:
se i dati seriali iviati a terra e i comandi in pwm verso i servocomandi (sia tra loro che globalmente ) concordano allora il sistema lascia passare i dati verso gli attuatori . se invece uno dei tre autopiloti fallisce allora entra in gioco un algoritmo di controllo che esclude l'autopilota che sta inviando valori errati e lascia in HA gli altri due . nel caso fallisca anche uno di questi due c'e si lascia attivo l'autopilota che ha la "storia" dei dati inviati a terra piu coerente (calcolata in un lasso degli ultimi 2 min di volo ad esempio.)
questo penso si possa fare solo che io attualmente da solo non posso farlo devo trovare chi mi aiuta se c'e qualcuno interessato mi farebbe molto piacere .
un Saluto Koba
mi pare che tu stia molto addentro al mondo dell elettronica digitale quindi mi farebbe piacere sapere che ne pensi anche solo di quello che ho scritto
conosco ardupilot e ti confermo che è un sistema molto semplice sia per l'hardware che per il software, una volta fatto l'audit del software, un'architettura come quella che hai descritto non aumenterebbe di molto l'affidabilità del sistema (avresti comunque un single point of failure (il microcontrollore che si occupa di verificare che i 3 segnali coincidano) la cui complessità e probabilità di fallire non è molto inferiore a quella delle ardupilot) e introdurrebbe parecchi nuovi problemi:
1) sarebbe inapplicabile su droni di piccole dimensioni per l'ingombro e il peso eccessivo (che non sarebbe solo quello di due ardupilot+scheda che controlla gli autopiloti, ma le batterie in più necessarie ad alimentare tutto l'accrocco)
2) non sarebbe sufficiente semplicemente prendere in input i segnali che gli ardupilot mandano a terra ed ai servi, ma bisognerebbe implementare un qualunque tipo di clock condiviso da tutte le schede, in modo da poter avere delle finestre temporali per l'invio e la ricezione dei dati (A,B,e C sono gli ardupilot e D è la scheda che ne controlla gli output: se A e B mandano un segnale X e C manda un segnale Y, come fai a sapere di quale operazione quei segnali sono la conseguenza? lo scopo è valutare i tre segnali generati da altrettanti ardupilot dopo che questi ultimi hanno eseguito tutti la medesima operazione, ma se uno ne sta eseguendo una, l'altro la successiva e il terzo la precedente? i segnali saranno diversi ma è giusto che lo siano; per evitare questo serve un clock condiviso da tutti e le operazioni ed il conseguente invio di segnali vanno sincronizzate con quel clock). Questo oltre ad aumentare di molto la complessità del sistema, introdurrebbe ulteriori single point of failure e molto altro codice.
Imho conviene ridondare soltano servi, schede di potenza per i servi, sensori critici o con affidabilità non elevatissima e, al limite, aggiungere un altro ardupilot in alta affidabilità (uno lavora e l'altro è in standby in attesa che l'altro smetta di rispondere ad un heartbeat mandato su un paio di seriali, quando questo accade l'ardupilot in standby spegne quello attivo con un relè a stato solido o un transistor e comincia lui a lavorare; in caso si abbia paura di uno splitbrain si può implementare un elementare powerswitch come detto precedentemente)