Компания DeepMind открыла исходные тексты движка для симуляции физических процессов MuJoCo (Multi-Joint dynamics with Contact) и перевела проект на открытую модель разработки, подразумевающую возможность участия в разработке представителей сообщества. Проект рассматривается как платформа для проведения исследований и совместной работы над новыми технологиями, связанными с симуляцией роботов и сложных механизмов. Код опубликован под лицензией Apache 2.0. Поддерживаются платформы Linux, Windows и macOS.
MuJoCo представляет собой библиотеку с реализацией движка симуляции физических процессов и моделирование сочленённых структур, взаимодействующих с окружающей средой, который может применяться в процессе разработки роботов, биомеханических устройств и систем искусственного интеллекта, а также при создании графики, анимации и компьютерных игр. Движок написан на Си, не использует динамическое выделение памяти и оптимизирован для достижения максимальной производительности.
MuJoCo позволяет манипулировать объектами на низком уровне, обеспечивая при этом высокую точность и широкие возможности моделирования. Модели определяются при помощи языка описания сцен MJCF, основанного на XML и компилируемого при помощи специального оптимизирующего компилятора. Помимо MJCF движок поддерживает загрузку файлов в универсальном формате URDF (Unified Robot Description Format). MuJoCo также предоставляет графический интерфейс для интерактивной 3D-визуализации процесса симуляции и рендеринга результатов с использованием OpenGL.
Основные возможности:
- Симуляция в обобщённых координатах, исключающая нарушение сочленений.
- Обратная динамика, определяемая даже при наличии соприкосновений.
- Использование выпуклого программирования для унифицированного формулирования ограничений в непрерывном времени.
- Возможность задания различных ограничений, включая мягкие касания и сухое трение.
- Симуляция систем частиц, тканей, верёвок и мягких объектов.
- Исполнительные элементы (актуаторы), включая моторы, цилиндры, мышцы, сухожилия и кривошипно-шатунные механизмы.
- Решающие программы на основе методов Ньютона, сопряжённых градиентов и Гаусса-Зейделя.
- Возможность использования пирамидальных или эллиптических конусов трения.
- Использование на выбор методов численного интегрирования Эйлера или Рунге-Кутты.
- Многопоточная дискретизация и аппроксимация методом конечных разностей.