MuJoCo означает многосуставную динамику с контактом. Его разрабатывает Эмо Тодоров для Roboti LLC. Первоначально он использовался в Лаборатории управления движением Вашингтонского университета, а теперь принят широким сообществом исследователей и разработчиков.

MuJoCo — это физический движок, призванный облегчить исследования и разработки в области робототехники, биомеханики, графики и анимации, а также в других областях, где требуется быстрое и точное моделирование. Он предлагает уникальное сочетание скорости, точности и мощности моделирования, но это не просто лучший симулятор. Наоборот, это первый полнофункциональный симулятор, разработанный с нуля для оптимизации на основе моделей и, в частности, оптимизации посредством контактов. MuJoCo позволяет масштабировать вычислительно-емкие методы, такие как оптимальное управление, физически непротиворечивая оценка состояния, идентификация системы и автоматизированное проектирование механизмов, и применять их к сложным динамическим системам в контактном поведении. Он также имеет более традиционные приложения, такие как тестирование и проверка схем управления перед развертыванием на физических роботах, интерактивная научная визуализация, виртуальные среды, анимация и игры. Его ключевые особенности:

  • моделирование в обобщенных координатах, избегая совместных нарушений
    - обратная динамика, которая четко определена даже при наличии контактов
    - унифицированная формулировка ограничений в непрерывном времени посредством выпуклой оптимизации
    - ограничения включают мягкие контакты , пределы, сухое трение, ограничения равенства
    - моделирование систем частиц, ткани, веревки и мягких объектов
    - исполнительные механизмы, включая двигатели, цилиндры, мышцы, сухожилия, ползунки
    - выбор Ньютона , Conjugate Gradient или Projected Gauss-Seidel Solvers

(Сопряженный градиент: численное решение конкретных систем линейных уравнений, а именно тех, матрица которых симметрична и положительно определена)

(Решатель Гаусса-Зейделя: в численной линейной алгебре метод Гаусса-Зейделя, также известный как метод Либмана или метод последовательного смещения, представляет собой итерационный метод, используемый для решения линейной системы уравнений. Хотя его можно применить к любой матрица с ненулевыми элементами на диагоналях, сходимость гарантируется только в том случае, если матрица либо диагонально доминирующая, либо симметричная и положительно определенная.)

  • выбор пирамидальных или эллиптических конусов трения, плотных или разреженных якобианов
    - выбор численных интеграторов Эйлера или Рунге-Кутты

(Метод Эйлера — это численный метод решения дифференциального уравнения первой степени с заданным начальным значением. Это самый простой явный метод численного интегрирования обыкновенных дифференциальных уравнений и простейший метод Рунге-Кутты.
Эйлер метод является методом первого порядка, что означает, что локальная ошибка (ошибка на шаг) пропорциональна квадрату размера шага, а глобальная ошибка (ошибка в данный момент времени) пропорциональна размеру шага.Метод Эйлера часто служит основой для построения более сложных методов, например, метода предиктор-корректор.)

(В численном анализе методы Рунге-Кутты представляют собой семейство неявных и явных итерационных методов, которые включают хорошо известную процедуру, называемую методом Эйлера, используемую для временной дискретизации приближенных решений обыкновенных дифференциальных уравнений.)

- многопоточная выборка и конечно-разностная аппроксимация
- интуитивно понятный формат модели XML (называемый MJCF) и встроенный компилятор модели
- кросс-платформенный графический интерфейс с интерактивной 3D-визуализацией в OpenGL
- запуск модуль времени, написанный на ANSI C и настроенный вручную для повышения производительности

Ссылка: mujoco.org