Open source · In sviluppo
Costruisci la macchina. Collega il controllo. Premi Run.
Congegno è un IDE desktop open source per simulare macchine e il loro controllo, tutto disegnato a blocchi. Meccanismi e controllori girano già, in modo nativo su Drake; circuiti, fluidi e calore arrivano dopo.
Guarda cosa fa Codice sorgente In arrivo
macOS su Apple Silicon · Linux x86_64 e aarch64 · Licenza MIT
01 // In moto
Guardalo muoversi.
Tre brevi video, presi direttamente dall'app.
Video 01 // Braccio nello spazio cartesiano
In arrivo
Muovi l'utensile. I giunti seguono.
Un braccio robotico guidato nello spazio cartesiano. L'utensile percorre un anello a sella, tracciato in oro mentre avanza, e un controllore scritto in Python traduce il percorso in coppie ai giunti.
Video 02 // Spazio di lavoro
In arrivo
Stesso braccio. Tutto lo spazio di lavoro.
Lo schema che lo muove, gli angoli dei giunti tracciati mentre accade, la vista 3D accanto.
Video 03 // Pendolo inverso
In arrivo
In equilibrio, a blocchi.
Un pendolo inverso tenuto in cima da un PID discreto costruito a blocchi. A cinque secondi si sposta di 15° oltre la verticale e resta lì contro la gravità, con angolo e coppia disegnati sopra la vista 3D.
Video 04 // Azionamento
In arrivo
Controllo vettoriale. In Modelica.
Un motore a magneti permanenti e il suo inverter, modellati in Modelica e compilati da OpenModelica, sotto un controllo a orientamento di campo disegnato a blocchi: l'anello di velocità a 1 kHz, quello di corrente a 20 kHz in Python. Le correnti di fase accelerano con l'albero. Mostrato a velocità doppia.
02 // Schemi a blocchi
Se puoi disegnarlo, puoi simularlo.
Blocchi con le loro porte, linee di segnale, sottosistemi con maschere, riferimenti ad altri modelli. Tasto destro su qualunque cosa. Ridimensioni tutto. Annulli tutto.
Tela
Inport e Outport portano i segnali dentro e fuori dai sottosistemi. Copia, incolla e menu contestuale funzionano su ogni oggetto, e ogni modifica è un passo che puoi annullare.
03 // Meccanica
Frame e giunti. I corpi si trovano da soli.
Colleghi solidi, giunti e trasformazioni rigide come una rete di frame. Congegno capisce quali parti si muovono come un corpo solo, e l'anteprima 3D ti mostra il meccanismo mentre lo costruisci.
Anteprima 3D
04 // Unità di misura
Ogni numero ha la sua unità. Ogni collegamento è verificato.
Scrivi 500 mm, oppure = L / 2, ovunque vada un numero. I segnali portano le loro unità fin dentro il meccanismo: niente blocchi di conversione da piazzare, e un errore viene segnalato proprio sul collegamento che lo causa.
Modello // pendulum.yaml
# pendulum.yaml: una cerniera, un'asta
model: pendulum
parameters:
L: 500 mm
blocks:
world:
type: World
gravity: 9.81 m/s^2
hinge:
type: Revolute
q0: 30 deg
damping: 0.02 N*m*s/rad
rod:
type: Solid
shape: box
size: [20 mm, 20 mm, = L]
center: [0 mm, 0 mm, = L / 2]
density: 2700 kg/m^3
connections:
- world.F -> hinge.B
- hinge.F -> rod.R
probes: [hinge.q, hinge.w, energy]
05 // Osservazione
Un solo modo di osservare. Tanti modi di guardare.
Metti una sonda su qualunque segnale o grandezza fisica: la coppia di un giunto, la velocità di un frame, l'energia dell'intera macchina. La segui in uno scope, nell'ispettore dei segnali, in un overlay 3D o in una dashboard.
E ogni simulazione è un file. Un solo file HDF5 contiene i dati e il modello esatto che li ha prodotti.
Segnali
06 // Il banco di lavoro
Tutto a portata di mano.
-
Libreria
Ogni blocco si apre.
Leggi come è fatto qualunque blocco. Gli originali restano in sola lettura; le tue varianti finiscono in librerie tutte tue.
-
CAD
Porta il tuo CAD.
Dai forma a un solido con una funzione, oppure collega un file STEP, STL o FreeCAD. Congegno lo converte per ogni motore, senza chiederti niente.
-
Comandi
Una sessione. Tante mani.
L'interfaccia, la riga di comando, i tuoi script e il tuo agente AI guidano la stessa sessione, con la stessa cronologia di annullamento.
-
Spazio di lavoro
La tua scrivania, a modo tuo.
Ridimensioni ogni pannello, lo stacchi in una finestra tutta sua, lo riagganci. Tema chiaro o scuro.
07 // Come funziona
Niente di interpretato. Nemmeno un blocco.
Prima di ogni simulazione Congegno compila l'intero modello. I blocchi di controllo diventano sistemi nativi dentro Drake. I blocchi Python Function si scrivono in un sottoinsieme verificato di Python e diventano anch'essi sistemi nativi; i loro errori compaiono sulla riga giusta, mentre scrivi.
-
01 // Modello
Un file di testo.
YAML da leggere, confrontare e revisionare.
-
02 // Compilatore
Verificato.
Unità, collegamenti e Python, prima che qualcosa si muova.
-
03 // Motore
Nativo.
Drake esegue il meccanismo e il suo controllo come un unico sistema.
-
04 // Simulazione
Un file.
HDF5: i dati, e il modello che li ha prodotti.
Ancora una cosa
Non solo meccanismi.
Una macchina è un meccanismo, un circuito, un fluido e del calore, tutto insieme, e il suo controllo parla con ciascuno. Congegno unisce i domini con porte fisiche tipizzate: coppia e velocità, tensione e corrente, pressione e portata, temperatura e flusso di calore.
ELC + CTL + MCH // Oggi
Un azionamento.
Un inverter e il suo motore, modellati in Modelica, con il controllo a orientamento di campo che li governa: l'anello di velocità a 1 kHz, quello di corrente a 20 kHz, e l'albero che fa girare un volano con un peso. Funziona: Video 04.
FLD + PRP + MCH + CTL // In arrivo
Un impianto di alimentazione.
Pressurizzante, regolatore, serbatoio e valvole che alimentano due propulsori. Le valvole rispondono a un modulatore di impulsi, e il propellente che esce si porta via massa e inerzia dal corpo che lo trasporta.
-
01 // MCH
Multibody
Corpi e giunti, solidi dal CAD.
Oggi
-
02 // ELC
Elettrico
Motori, azionamenti e bus di potenza, in Modelica.
Oggi
-
03 // FLD
Fluidi e impianti
Tubi, serbatoi, valvole e pompe.
In arrivo
-
04 // PRP
Propulsione
Propulsori, e il propellente che consumano.
In arrivo
-
05 // THM
Termico
Il calore, da dove nasce a dove va.
In arrivo
-
06 // CTL
Controllo
Schemi a blocchi e Python, ognuno al suo ritmo.
Oggi
Multibody, controllo ed elettrico girano già: l'elettrico come modelli Modelica, compilati in FMU da OpenModelica ed eseguiti dentro la stessa simulazione. Fluidi e termico arrivano allo stesso modo, poi la propulsione.
08 // Stato
Non è ancora uscito. Ecco a che punto è.
-
M0
Fatto
Shell
La finestra desktop con tutti i pannelli, la riga di comando e la sessione che condividono.
-
M1
Fatto
Meccanica
Frame, solidi e giunti, unità ed espressioni, file di modello, l'anteprima 3D dal vivo.
-
M2
Fatto
Simulazioni
Simulazioni su Drake, sonde e grafici, riproduzione in 3D, un file per ogni simulazione.
-
M3
In corso
Editing e controllo
Menu contestuali, sottosistemi, linee di segnale, blocchi di controllo, blocchi Python Function.
-
M4
Prossimo
Secondo motore
Un secondo motore fisico dietro lo stesso modello, profili di risoluzione e test di parità fra i due.
Costruito e provato su macOS con Apple Silicon e su Linux, x86_64 e aarch64.
09 // Open source
Costruito sull'open source. Rilasciato come open source.
Congegno ha licenza MIT, e poggia su:
- DrakeIl toolbox di robotica che calcola la dinamica, usato come libreria.
- PythonIl back-end, i tuoi script e i blocchi Python Function.
- VueLo spazio di lavoro che vedi e clicchi.
- FreeCADIl CAD che gli lavora accanto.
- OpenModelicaCompila in FMU i modelli elettrici, fluidici e termici, da eseguire dentro la stessa simulazione.
- pixiUn solo comando per installare tutto e farlo girare.