Это репозиторий для обучения (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
Скачать файлы Dockerfile
и requirements.txt
, расположить их в одной папке.
Через консоль с доступом к Докеру перейти в папку с этими файлами, затем запустить сборку образа hex_cpu из файла Dockerfile:
docker build -t hex_cpu . -f Dockerfile
После успешной сборки создать и запустить контейнер с названием hex-cont:
docker run --name hex-cont -it --rm hex_cpu
Запуск валидации модели, восстановленной из файла весов:
python3 src/run_inference.py
Запуск обучения, по окончании сохраняющий файл весов:
python3 src/run_learning.py
Валидный выход для обеих команд: вывод информации об эпизодах в консоль (возможно, с некритическими предупреждениями).
Запуск сборки имитационной модели, сохраняющей ее в файл hexapod.xml:
python3 src/scene_generation.py
Валидный выход: ничего не выводит.
Для 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.
Клонировать или скачать репозиторий, открыть в 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 устройств и проверка успешной установки gymrun_env.py
- запуск среды gym без обучения, где можно вручную задать параметры для планировщика траекторий (action)example_ml.ipynb
- юпитер-блокнот для поблочного запуска обучения и валидации с живым обновлением графиков в процессе