DeepMind, una società appartenente a Google, conosciuta per le sue innovazioni nel campo dell'intelligenza artificiale e nello sviluppo di reti neurali capaci di giocare a videogiochi a livello umano, ha annunciato il lancio di un motore per la simulazione dei processi fisici, MuJoCo (Multi-Joint dynamics with Contact). Questo motore è progettato per modellare strutture articolate che interagiscono con l'ambiente circostante ed è utilizzato per la simulazione nello sviluppo di robot e sistemi di intelligenza artificiale, prima che la tecnologia venga realizzata in un dispositivo completo.
Il codice è scritto in C/C++ e sarà pubblicato con licenza Apache 2.0. Sono supportate le piattaforme Linux, Windows e macOS. Si prevede di completare il lavoro di apertura di tutti i codici sorgente correlati al progetto nel 2022, dopodiché MuJoCo adotterà un modello di sviluppo aperto che consentirà la partecipazione della comunità allo sviluppo.
MuJoCo è una libreria che implementa un motore di simulazione fisica generale, utilizzabile nella ricerca e nello sviluppo di robot, dispositivi biomeccanici e sistemi di apprendimento automatico, nonché nella creazione di grafica, animazione e videogiochi. Il motore di simulazione è ottimizzato per raggiungere prestazioni massime e consente di manipolare oggetti a un livello basso, garantendo al contempo alta precisione e ampie capacità di modellazione.
I modelli sono definiti tramite il linguaggio di descrizione delle scene MJCF, basato su XML e compilato tramite un apposito compilatore ottimizzante. Oltre al MJCF, il motore supporta il caricamento di file nel formato universale URDF (Unified Robot Description Format). MuJoCo offre anche un'interfaccia grafica per la visualizzazione interattiva 3D del processo di simulazione e 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
