Skip to content

Danielf003/hexapod-RL

Repository files navigation

hexapod-RL

Это репозиторий для обучения (RL) шестиногого шагающего робота ходьбе по неровной поверхности в связке PyTorch-Gymnasium-MuJoCo.

Что сделано:

  • Процедурная генерация имитационной модели гексапода для MuJoCo (scene_generation.py);
  • Пользовательская среда gymnasium, использующая данную модель и определяющая наблюдения, действия и награду (gym_env.py);
  • Контроллер траектории, по входным параметрам строящий целевую траекторию для каждой ноги (traj_calculation.py);
  • Регуляторы по методу вычисленного момента, обеспечивающие движение каждой ноги по целевой траектории;
  • Релизация алгоритма PPO для обучения агента в пользовательской среде с сохранением весов после обучения (run_learning.py);
  • Скрипт для запуска инференса обученной модели из сохраненных весов (run_inference.py)

Видео с процессом обучения робота в одной из версий среды: https://drive.google.com/file/d/1HmrFopj6eiJR3HXoNIeMYRlPINBgZl8L/view?usp=sharing

Видео с валидацией успешно обученной модели (ускоренное, поскольку один эпизод длится 20 секунд): https://drive.google.com/file/d/1j2EwH3bXLAH-rRYjlx-ivsMwGfOz6L5X/view?usp=sharing

Использование с Docker

1) Подготовка среды

Скачать файлы Dockerfile и requirements.txt, расположить их в одной папке.

Через консоль с доступом к Докеру перейти в папку с этими файлами, затем запустить сборку образа hex_cpu из файла Dockerfile:

docker build -t hex_cpu . -f Dockerfile

После успешной сборки создать и запустить контейнер с названием hex-cont:

docker run --name hex-cont -it --rm hex_cpu

2) Запуск

Запуск валидации модели, восстановленной из файла весов:

python3 src/run_inference.py

Запуск обучения, по окончании сохраняющий файл весов:

python3 src/run_learning.py

Валидный выход для обеих команд: вывод информации об эпизодах в консоль (возможно, с некритическими предупреждениями).

Запуск сборки имитационной модели, сохраняющей ее в файл hexapod.xml:

python3 src/scene_generation.py

Валидный выход: ничего не выводит.

Использование без Docker

1) Подготовка среды

Для Windows рекомендуется скачать менеджер виртуальных сред по ссылке https://docs.conda.io/projects/conda/en/latest/user-guide/install/windows.html

Anaconda - полная версия с большим набором предустановленных пакетов, miniconda - минимум пакетов, miniforge - минимум пакетов с более производительным менеджером зависимостей mamba.

  • В Anaconda/miniconda/miniforge:

conda env create -f env.yml , затем активировать ее в IDE.

  • В miniforge с продвинутым менеджером:

mamba env create -f env.yml , затем активировать ее в IDE.

2) Запуск

Клонировать или скачать репозиторий, открыть в IDE.

Для проверки имитационной модели в симуляторе MuJoCo запускаем example_no_ml.py. Валидный выход: появилось интерактивное окно симуляции.

Для старта обучения запускаем run_learning.py. Если не находит файл hexapod.xml - запустите scene_generation.py. Валидный выход: появилось окно симуляции, в конце обучения окно с графиком суммарных вознаграждений по эпизодам.

Для старта инференса обученной модели запускаем run_inference.py. Если не находит файл hex.weights - запустите run_learning.py. Валидный выход: появилось окно симуляции, в конце валидации окно с графиком суммарных вознаграждений за движение вперед по эпизодам.

Помимо этого, могут быть полезны следующие файлы:

  • check_torch_gym.py - проверка доступных для torch устройств и проверка успешной установки gym
  • run_env.py - запуск среды gym без обучения, где можно вручную задать параметры для планировщика траекторий (action)
  • example_ml.ipynb - юпитер-блокнот для поблочного запуска обучения и валидации с живым обновлением графиков в процессе

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published