La società DeepMind di proprietà di Google, famosa per i suoi sviluppi nel campo dell'intelligenza artificiale e della costruzione di reti neurali in grado di riprodurre videogiochi a livello umano, ha annunciato la scoperta di un motore per la simulazione dei processi fisici MuJoCo (Multi-Joint Dynamics with Contact ). Il motore è finalizzato alla modellazione di strutture articolate che interagiscono con l'ambiente e viene utilizzato per la simulazione nello sviluppo di robot e sistemi di intelligenza artificiale, nella fase precedente all'implementazione della tecnologia sviluppata sotto forma di dispositivo finito.
Il codice è scritto in C/C++ e sarà pubblicato sotto la licenza Apache 2.0. Sono supportate le piattaforme Linux, Windows e macOS. Si prevede che il lavoro open source su tutti i contenuti del progetto sarà completato nel 2022, dopodiché MuJoCo passerà a un modello di sviluppo aperto che consente ai membri della comunità di partecipare allo sviluppo.
MuJoCo è una libreria che implementa un motore di simulazione di processi fisici generico che può essere utilizzato nella ricerca e nello sviluppo di robot, dispositivi biomeccanici e sistemi di apprendimento automatico, nonché nella creazione di grafica, animazione e giochi per computer. Il motore di simulazione è ottimizzato per le massime prestazioni e consente la manipolazione di oggetti di basso livello fornendo allo stesso tempo elevata precisione e ricche funzionalità di simulazione.
I modelli vengono definiti utilizzando il linguaggio di descrizione della scena MJCF, che è basato su XML e compilato utilizzando uno speciale compilatore di ottimizzazione. Oltre a MJCF, il motore supporta il caricamento di file nell'URDF universale (Unified Robot Description Format). MuJoCo fornisce anche una GUI per la visualizzazione 3D interattiva del processo di simulazione e il rendering dei risultati utilizzando OpenGL.
Caratteristiche principali:
- Simulazione in coordinate generalizzate, escluse le violazioni congiunte.
- Dinamica inversa, rilevabile anche in presenza di contatto.
- Utilizzo della programmazione convessa per formulare vincoli unificati nel tempo continuo.
- Possibilità di impostare varie restrizioni, tra cui tocco morbido e attrito asciutto.
- Simulazione di sistemi particellari, tessuti, corde e oggetti morbidi.
- Attuatori (attuatori), inclusi motori, cilindri, muscoli, tendini e meccanismi a manovella.
- Risolutori basati sui metodi di Newton, del gradiente coniugato e di Gauss-Seidel.
- Possibilità di utilizzare coni di frizione piramidali o ellittici.
- Utilizza il metodo di integrazione numerica di Eulero o Runge-Kutta che preferisci.
- Discretizzazione multi-thread e approssimazione alle differenze finite.
Fonte: opennet.ru