DimOS
Runtime robotico Python con agenti, SLAM e teleoperazione, senza bisogno di ROS
Licenza
Apache-2.0
Panoramica
DimOS è un runtime Python per costruire applicazioni robotiche senza ROS. I sottosistemi sono Module con flussi tipizzati In[] e Out[]; i blueprint li collegano con autoconnect(), che abbina i flussi per nome e tipo di messaggio e può essere composto, rimappato o dotato di un trasporto diverso. Al di sopra si trovano le funzionalità che la maggior parte degli stack assembla a mano: SLAM e navigazione basata su costmap con pianificazione A* ed esplorazione delle frontiere, percezione con rilevatori e modelli Vision-Language (VLM), una memoria spazio-temporale che localizza gli oggetti nel tempo, e agenti che girano come moduli nativi e si iscrivono a qualsiasi flusso. La CLI dimos esegue i blueprint, segue i log, invia comandi a un agente e chiama skill tramite MCP. Le modalità di replay e di simulazione MuJoCo fanno sì che le guide rapide funzionino senza alcun robot sulla scrivania.
Quasi tutte le voci di robotica agentica del catalogo poggiano su ROS 2: RAI, AgenticROS, ROS-MCP e le altre trattano ROS come substrato e vi aggiungono uno strato linguistico. DimOS fa la scommessa opposta: sostituisce anche il middleware. Moduli, flussi tipizzati, blueprint e i suoi trasporti (LCM, WebRTC, un broker ospitato) sono un'alternativa completa a nodi, topic e file di lancio di ROS, scritta in Python con Rust e C++ dove conta la velocità. Se questa scommessa paghi è esattamente la domanda che un lettore dovrebbe valutare, e il repository offre abbastanza elementi per giudicarla: 4.500 stelle, commit quotidiani, una dozzina di contributori nominati e una matrice dell'hardware franca su ciò che è stabile.
Quella matrice è la pagina più utile del README. Il Go2 di Unitree è l'unica piattaforma indicata come stabile; l'umanoide G1, xArm e AgileX Piper sono in beta; MAVLink e DJI sono in alpha; il B1 e il rilevamento di forza e coppia sono sperimentali. Anche l'installazione è graduata allo stesso modo: Ubuntu 22.04 e 24.04 sono il percorso supportato, NixOS e Linux in generale non sono testati in CI, macOS è in alpha. Un progetto che etichetta onestamente i propri livelli di supporto è più facile da valutare di uno che elenca ogni piattaforma come equivalente, e l'intero repository porta un banner di beta pre-release.
dimTELE, la metà dedicata alla teleoperazione, merita una nota a parte. Il robot si collega in uscita a un broker ospitato, quindi non serve aprire porte in ingresso, e un operatore lo guida da un browser o da un visore Quest tramite WebRTC. Funziona bene ed è la dimostrazione più chiara dello stack, ma richiede un account e una chiave API dalla console di Dimensional. Il codice del client e del trasporto si trova nel repository Apache-2.0; il broker dall'altra parte no.
Perché è importante
Ogni altro framework di robotica agentica degno di nota presuppone ROS 2 e vi costruisce sopra uno strato linguistico. DimOS è quello che si chiede se debba essere sostituito il middleware stesso, ed è abbastanza avanti da poter essere giudicato anziché oggetto di speculazioni: flussi Python tipizzati al posto dei topic, uno stack di navigazione e memoria funzionante, agenti come moduli di prima classe e dati di replay per verificare le affermazioni senza hardware. Che lo si adotti o no, è il più forte argomento esistente a favore del fatto che l'impostazione predefinita modellata su ROS sia una scelta e non una legge.
Il problema che risolve
Costruire un'applicazione robotica di solito significa adottare ROS 2 e tutto ciò che ne consegue (il sistema di build, le definizioni dei messaggi, i file di lancio) prima di scrivere qualsiasi comportamento. DimOS fornisce lo stesso strato come normale codice Python: flussi tipizzati tra i moduli, una CLI per eseguirli e ispezionarli, e navigazione, percezione, memoria e integrazione degli agenti già costruite su di esso.
Punti chiave
- Un runtime robotico Python che volutamente non usa ROS: Module con flussi tipizzati In[]/Out[], collegati da autoconnect() in blueprint componibili
- Include navigazione (SLAM, costmap, pianificazione A*, esplorazione delle frontiere), percezione e una memoria spazio-temporale che tiene traccia di dove si trovavano gli oggetti e quando
- Gli agenti sono moduli nativi con strumenti MCP, quindi dimos agent-send "explore the room" e dimos mcp call move_to sono comandi di prima classe della CLI
- Le modalità di replay e di simulazione MuJoCo eseguono le guide rapide in evidenza senza alcun robot collegato
- La matrice dell'hardware gradua onestamente il proprio supporto: Unitree Go2 stabile, G1 e xArm in beta, MAVLink e DJI in alpha, B1 sperimentale
- dimTELE offre la teleoperazione da browser e da Quest tramite WebRTC collegandosi in uscita a un broker, quindi senza porte in ingresso sulla rete del robot
- Apache-2.0 di Dimensional Inc., con circa una dozzina di contributori regolari e commit ogni giorno
A chi si rivolge
- Sviluppatori Python che vogliono scrivere il comportamento dei robot senza dover prima imparare ROS 2
- Team che lavorano con quadrupedi o umanoidi Unitree e cercano uno stack al di sopra dell'SDK del produttore
- Chiunque costruisca agenti LLM o MCP che devono iscriversi a flussi di sensori reali anziché chiamare un endpoint REST
- Operatori che hanno bisogno di teleoperazione remota attraverso un NAT senza aprire porte in ingresso
- Ricercatori che confrontano architetture di middleware e vogliono un serio riferimento non ROS con cui confrontarsi
Limiti
- Il repository si definisce beta pre-release e su PyPI è ancora alla 0.0.x, quindi c'è da aspettarsi che le interfacce cambino
- Circa 700 issue sono aperte: un progetto attivo, ma un arretrato consistente da leggere prima di impegnarsi
- Non usare ROS taglia fuori dall'ecosistema ROS: nessun driver esistente, niente Nav2, niente MoveIt, niente rosbag, e tutto ciò che il progetto non ha costruito va costruito da sé
- Il supporto hardware è ristretto e per lo più instabile: il Go2 di Unitree è l'unica piattaforma indicata come stabile, e tutto il resto è beta, alpha o sperimentale
- Il broker di dimTELE è un servizio ospitato da Dimensional che richiede un account e una chiave API; il repository Apache-2.0 fornisce il client, non l'altra estremità
- Ubuntu 22.04/24.04 è il percorso testato; macOS è in alpha e Linux in generale non è esplicitamente testato in CI
- Si tratta tanto della roadmap di prodotto di un'azienda quanto di un progetto della comunità, e il repository aperto e la console ospitata sono sviluppati insieme