MuJoCo означает многосуставную динамику с контактом. Его разрабатывает Эмо Тодоров для Roboti LLC. Первоначально он использовался в Лаборатории управления движением Вашингтонского университета, а теперь принят широким сообществом исследователей и разработчиков.
MuJoCo — это физический движок, призванный облегчить исследования и разработки в области робототехники, биомеханики, графики и анимации, а также в других областях, где требуется быстрое и точное моделирование. Он предлагает уникальное сочетание скорости, точности и мощности моделирования, но это не просто лучший симулятор. Наоборот, это первый полнофункциональный симулятор, разработанный с нуля для оптимизации на основе моделей и, в частности, оптимизации посредством контактов. MuJoCo позволяет масштабировать вычислительно-емкие методы, такие как оптимальное управление, физически непротиворечивая оценка состояния, идентификация системы и автоматизированное проектирование механизмов, и применять их к сложным динамическим системам в контактном поведении. Он также имеет более традиционные приложения, такие как тестирование и проверка схем управления перед развертыванием на физических роботах, интерактивная научная визуализация, виртуальные среды, анимация и игры. Его ключевые особенности:
- моделирование в обобщенных координатах, избегая совместных нарушений
- обратная динамика, которая четко определена даже при наличии контактов
- унифицированная формулировка ограничений в непрерывном времени посредством выпуклой оптимизации
- ограничения включают мягкие контакты , пределы, сухое трение, ограничения равенства
- моделирование систем частиц, ткани, веревки и мягких объектов
- исполнительные механизмы, включая двигатели, цилиндры, мышцы, сухожилия, ползунки
- выбор Ньютона , Conjugate Gradient или Projected Gauss-Seidel Solvers
(Сопряженный градиент: численное решение конкретных систем линейных уравнений, а именно тех, матрица которых симметрична и положительно определена)
(Решатель Гаусса-Зейделя: в численной линейной алгебре метод Гаусса-Зейделя, также известный как метод Либмана или метод последовательного смещения, представляет собой итерационный метод, используемый для решения линейной системы уравнений. Хотя его можно применить к любой матрица с ненулевыми элементами на диагоналях, сходимость гарантируется только в том случае, если матрица либо диагонально доминирующая, либо симметричная и положительно определенная.)
- выбор пирамидальных или эллиптических конусов трения, плотных или разреженных якобианов
- выбор численных интеграторов Эйлера или Рунге-Кутты
(Метод Эйлера — это численный метод решения дифференциального уравнения первой степени с заданным начальным значением. Это самый простой явный метод численного интегрирования обыкновенных дифференциальных уравнений и простейший метод Рунге-Кутты.
Эйлер метод является методом первого порядка, что означает, что локальная ошибка (ошибка на шаг) пропорциональна квадрату размера шага, а глобальная ошибка (ошибка в данный момент времени) пропорциональна размеру шага.Метод Эйлера часто служит основой для построения более сложных методов, например, метода предиктор-корректор.)
(В численном анализе методы Рунге-Кутты представляют собой семейство неявных и явных итерационных методов, которые включают хорошо известную процедуру, называемую методом Эйлера, используемую для временной дискретизации приближенных решений обыкновенных дифференциальных уравнений.)
- многопоточная выборка и конечно-разностная аппроксимация
- интуитивно понятный формат модели XML (называемый MJCF) и встроенный компилятор модели
- кросс-платформенный графический интерфейс с интерактивной 3D-визуализацией в OpenGL
- запуск модуль времени, написанный на ANSI C и настроенный вручную для повышения производительности
Ссылка: mujoco.org