La società DeepMind ha rilasciato il codice sorgente del motore di simulazione dei processi fisici MuJoCo (Dynamics Multi-Joint with Contact) e ha trasferito il progetto a un modello di sviluppo aperto, consentendo la partecipazione dello comunità. Il progetto è visto come una piattaforma per la ricerca e la collaborazione su nuove tecnologie legate alla simulazione di robot e meccanismi complessi. Il codice è pubblicato sotto la licenza Apache 2.0. Sono supportate le piattaforme Linux, Windows e macOS.
MuJoCo è una libreria che implementa un motore di simulazione dei processi fisici e la modellazione di strutture articolate interagenti con l'ambiente, che può essere applicata nello sviluppo di robot, dispositivi biomeccanici e sistemi di intelligenza artificiale, oltre che nella creazione di grafica, animazione e videogiochi. Il motore è scritto in C, non utilizza allocazione dinamica della memoria ed è ottimizzato per raggiungere le massime prestazioni.
MuJoCo consente di manipolare oggetti a basso livello, garantendo alta precisione e ampie capacità di modellazione. I modelli sono definiti tramite il linguaggio di descrizione delle scene MJCF, basato su XML e compilato utilizzando un compilatore ottimizzante specifico. Oltre a MJCF, il motore supporta il caricamento di file nel formato universale URDF (Unified Robot Description Format). MuJoCo fornisce anche un'interfaccia grafica per la visualizzazione interattiva in 3D del processo di simulazione e per il rendering dei risultati utilizzando OpenGL.
Funzionalità principali:
- Simulazione in coordinate generali, escludendo la rottura delle giunture.
- Dinamica inversa, definita anche in presenza di contatti.
- Utilizzo della programmazione convessa per la formulazione unificata dei vincoli nel tempo continuo.
- Possibilità di definire vari vincoli, inclusi contatti morbidi e frizione secca.
- Simulazione di sistemi di particelle, tessuti, corde e oggetti morbidi.
- Elementi attuatori, inclusi motori, cilindri, muscoli, tendini e meccanismi manovellatori.
- Programmi decisivi basati sui metodi di Newton, dei gradienti coniugati e di Gauss-Seidel.
- Possibilità di utilizzo di coni di attrito piramidali o ellittici.
- Utilizzo a scelta dei metodi di integrazione numerica di Eulero o Runge-Kutta.
- Discretizzazione multithreading e approssimazione tramite il metodo delle differenze finite.


Fonte: opennet.ru
