Giter VIP home page Giter VIP logo

birdbot_mujoco's Introduction

BirdBot MuJoCo

Общая информация

Все скрипты написаны с использованием интерпретатора Python 3.8.10 с использованием виртуального окружения из папки venv. Для активации виртуального окружения воспользуйтесь командой:

source venv/bin/activate

После окончания работы окружение можно отключить с помощью команды deactivate

В папке xml_examples собраны примеры различных динамических моделей MuJoCo, часть .xml-кода было позаимствовано из данных примеров.

Скрипт BirdBot_xml_generator.py

В скрипте автоматически создается .xml файл для модели BirdBot. В качестве референса была взята иллюстрация из статьи BirdBot achieves energy-efficient gait with minimal control using avian-inspired leg clutching.

cad_model

Модель была отрисована во Fusion360, размеры модели были откалиброваны относительно мотора Dynamixel MX-64AT, который использовали авторы статьи. Модель доступна в облаке Fusion360

Скрипт BirdBot_xml_generator.py реализован через шаблон f-строки. В целом, реализация может варьироваться от сложности, например для автоматизации можно использовать древовидные структуры в python и собирать xml-строки через рекурсивные алгоритмы. Но подобной задачи не стояло, поэтому сам скрипт представляет собой параметризованную сборку стандартных моделей в модель робота. В переменных LINK_i, где i - номер сочленения по CAD-модели, зашита информация об имени тела, имени вращательного сустава, начальных координатах y0 и z0, длине сочленения length и его начальном повороте вокруг оси X в системе отсчета, связанной с землей. В переменной LINK_SIZE находится значение ширины сочленений. Переменная FLOOR_POSITION отвечает за положение пола относительно нуля модели. В переменной K содержится значение жесткости троссов, соединяющих элементы конструкции. В переменной ELECTRONICS_BOX содержатся линейные размеры блока электроники модели.

Сама модель построена по принципу "сверху-вниз". Базовым элементом является блок электроники, его начальное положение берется за нулевую точку системы координат, связанной с землей. Блок электроники соеденен с внешним миром через линейный сустав, поскольку модель не является симметричной и возможно вектор силы тяжести блока выходит за площадь косания ноги с землей. Далее от блока электроники отходят сочленения, составляющие ногу робота. Для поддержания структуры замкнутой цепочки между элементами link_1, link_2, link_3 и link_4 введено ограничение на кинематику модели - конец элемента link_2 должен прилегать к элементу link_4 в join_4. Упругие троссы проложены в соответствии с иллюстрацией выше.

В оригинальной статье мотор, отвечающий за коленный сустав, передает свое движение за счет наматывания троса на вал мотора, однако Mujoco не поддерживает данный режим работы мотора совместно с тросом. Поэтому в данной реализации передача реализована через линейный сустав. Однако при дальнейшем использовании модели стоит учесть данный факт на уровне управления и в реальной модели делать поправку на диаметр накрутки троса на вал. Также была задана максимально возможная жесткость троса, чтобы передача перестала быть податливой и могла понять сочленение за коленным суставом.

mujoco_model

В процессе исполнения генерируется .xml-файл, сохраняется в файл BirdBot.xml и отрисовывается нулевое положение робота без учета динамики.

Запустить модель во встроенном симуляторе Mujoco можно с помощью команды:

python -m mujoco.viewer --mjcf=BirdBot.xml 

Скрипты BirdBot_jump_step.py и BirdBot_run_sin.py

В скриптах используется встроенный симулятор mujoco-viewer, в частности его пассивная версия, для управления моделью через python-скрипты. Время симуляции приведено к физическому времени на исполняющем компьютере, соответственно временные промежутки соответствуют общепринятым секундам. В скриптах используется управление по позиции, поскольку в модели задан позиционный актуатор.

В скрипте BirdBot_jump_step.py используется шаговая функция, за которой следует линейный возврат бедренного сустава к нулю. Графики и видео можно увидеть ниже.

jump_plot

jump_video

В скрипте BirdBot_run_sin.py используется простая гармоническая функция для генерации бега. К сожалению в реальном мире данная модель управления бы не сработала, однако за счет погрешностей солвера Mujoco создается ощущение что модель бегает. Графики и видео представлены ниже.

run_plot

run_video

Дальнейшее развитие модели

На данном этапе необходимо проработать модель с точки зрения коллизий, развести элементы моделей в пространстве чтобы минимизировать их точки контакта и уменьшить погрешности встроенных компиляторов для симуляций.

В будущем стоит доделать модель до двуногой версии и проработать алгоритм CPG для генерации паттерна походки. При этом паттерн для каждой ноги должен отличаться на одну фазу движения. В дальнейшем стоит переводить связь между "миром" и блоком электроники из линейного сустава в свободный сустав для проверки устойчивости модели. Также в модели дополнительно можно задавать массы, тензоры инерции, коэффициенты трения и тд, для наиболее точной симуляции.

birdbot_mujoco's People

Contributors

valeriaskvo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.