Corpo hub
Una struttura rigida, 1,6 kg complessivi incluso un payload di 0,43 kg. Inerzia Jxx = Jyy = 0,018, Jzz = 0,032 kg·m².
Un drone da rilievo di classe 450 come un’unica composizione multibody — cellula, propulsione, sensori, e un autopilota a cascata che vola una missione 6-DoF in anello chiuso.

Il Djinborn T4 — un quadricottero da rilievo di classe 450 — modellato come un’unica composizione multibody che vola una missione 6-DoF in anello chiuso in simulazione. Cellula, propulsione, batteria, sensori e anelli di controllo, tutti su un’unica replica digitale viva.
Niente è simulato in modo semplificato o assunto costante — cellula, catena di trasmissione, sorgente di energia, sensoristica e controllo portano tutti la propria fisica.
Una struttura rigida, 1,6 kg complessivi incluso un payload di 0,43 kg. Inerzia Jxx = Jyy = 0,018, Jzz = 0,032 kg·m².
Offset rigidi a ±0,225 m in configurazione X. La geometria della cellula — non un mixer regolato a mano — determina ogni braccio di momento.
Quattro motori BLDC 880 Kv attraverso ESC, ciascuno che fa girare un’elica bipala 10×4,5. Spinta in hover 3,924 N per rotore a ~5300 rpm.
Un pacco Li-ion 4S — 14,8 V nominali, 6,0 Ah, 0,04 Ω di resistenza interna — modellato come una sorgente reale, non un rail costante.
Un’IMU con un filtro complementare che fonde giroscopio e accelerometro in stime di rollio e beccheggio.
PID a cascata: un anello di assetto a tre assi, una cascata altitudine + velocità verticale, e un anello di posizione — gli stessi guadagni con cui ha volato il modello aggregato.
Nel modello multibody le forze e i momenti della cellula emergono dalla sua geometria. Quattro wrench FrameForce iniettano spinta del rotore e coppia di reazione alle estremità dei bracci, e i momenti netti di rollio, beccheggio e imbardata derivano automaticamente dalle quattro posizioni dei bracci. Il mixer si riduce a pura allocazione di controllo — duty cycle verso quattro comandi motore — senza alcuna aggregazione fisica. L’orientamento è portato come una matrice di rotazione su SO(3) (Ṙ = R·skew(ω)), che evita la singolarità di gimbal lock che gli angoli di Eulero incontrano vicino a ±90°.
Connettore Frame acausale a N variabili: 15 across (posizione, rotazione 3×3, velocità angolare) + 6 flow (forza, coppia). — ADR-0066
Un kit multibody puro-DJL — Body, FixedTranslation, FrameForce — senza modifiche a Rust o Julia. — ADR-0067
I momenti di rollio, beccheggio e imbardata emergono dalla geometria dei bracci invece che da un mixer scritto a mano. — ADR-0068

Una missione di 12 secondi: a t = 0 il setpoint di altitudine scatta a 10 m; a t = 2 s arriva uno scalino di rollio di 15°. Un solutore DAE stiff Rodas5P integra insieme le equazioni accoppiate elettriche, meccaniche e di controllo. Il drone sale e si stabilizza — l’altitudine si assesta a 9,562 m, il rollio insegue a 0,262 rad — mentre la corrente di armatura del motore 1 si attesta a circa 6,05 A, comodamente entro il suo limite di 25 A.
Il modello multibody costruito dalla geometria e un riferimento monolitico RigidBody6DoF volano la stessa missione fino all’ultima cifra stampata. Due controlli analitici lo confermano: l’hover ad anello aperto mantiene vz ≈ 2e-15 m/s, e una velocità di rollio imposta produce un’accelerazione giroscopica di beccheggio di −2,667 rad/s², esattamente come previsto dalla teoria.
L’altitudine è +down nel frame corpo, quindi una salita significa ż < 0. Un singolo guadagno di negazione fornisce al controllore un’altitudine in cui su è positivo; sbagliare il segno fa divergere l’anello chiuso.
Il controllore di assetto satura nello spazio duty dell’ESC (±0,3 per rollio/beccheggio, ±10 per imbardata), non in radianti. Il clamping lì preserva la struttura a cascata e impedisce il windup dell’integratore dell’anello interno.
L’orientamento vive sulla matrice di rotazione (SO(3)) — nove stati aggiornati da Ṙ = R·skew(ω). Nessuna singolarità trigonometrica a ±90° di beccheggio, al costo di nove stati invece di tre angoli di Eulero.
I quattro rotori portano un momento angolare netto hz = J·(−w1 + w2 − w3 + w4); la coppia di precessione τ = ω_body × h viene iniettata attraverso un connettore flow il cui doppio negativo si risolve nel segno corretto — e corrisponde al controllo analitico di precessione.
Tutto quanto sopra è puro DJL testuale. Il parser lo abbassa a una rappresentazione intermedia piatta, poi a un sistema simbolico ModelingToolkit che il worker Julia integra con Rodas5P, trasmettendo scope live indietro nel browser. Lo stesso modello si esporta come unità di co-simulazione FMI per Simulink, dSPACE e altri host FMI — un gemello digitale per l’iterazione di progetto che affini molto prima che esista qualsiasi hardware.
Continua a esplorare