Ravens — это набор смоделированных задач в PyBullet для изучения роботизированных манипуляций на основе зрения с упором на выбор и размещение. Он имеет API-интерфейс, похожий на тренажерный зал, с 10 задачами по перестановке столешниц, каждая из которых имеет (i) скриптовый оракул, который обеспечивает экспертные демонстрации (для имитационного обучения) и (ii) функции вознаграждения, которые обеспечивают частичную оценку (для обучения с подкреплением).
(a) Вставка блока : возьмите красный блок L-образной формы и поместите его в приспособление L-образной формы.
(б) «помести красное в зеленое» : возьмите красные блоки и поместите их в зеленые чаши среди других предметов.
(в) Ханойские башни : последовательно перемещайте диски от одной башни к другой — только меньшие диски могут находиться поверх больших.
(d) align-box-corner : возьмите коробку произвольного размера и совместите один из ее углов с L-образным маркером на столешнице.
(д) стопка-блок-пирамида : последовательно сложите 6 блоков в пирамиду 3-2-1 с радужным порядком.
(f) коробки для укладки на поддоны : собирают однородные коробки фиксированного размера и укладывают их транспонированными слоями на поддоне.
(ж) наборы для сборки : возьмите разные предметы и расположите их на доске, отмеченной соответствующими силуэтами.
(h) упаковочные коробки : возьмите коробки произвольного размера и плотно поместите их в контейнер.
(i) манипулирование веревкой : переставьте деформируемую веревку так, чтобы она соединяла две конечные точки трехстороннего квадрата.
(j) подметание кучи : заталкивайте кучки мелких предметов в целевую зону ворот, отмеченную на столешнице.
Некоторые задачи требуют обобщения на невидимые объекты (d,g,h) или многоэтапного секвенирования с обратной связью (c,e,f,h,i,j).
Команда: этот репозиторий разработан и поддерживается Энди Зенгом, Питом Флоренсом, Дэниелом Сейтой, Джонатаном Томпсоном и Айзааном Вахидом. Это справочный репозиторий для статьи:
Веб-сайт проекта • PDF • Конференция по обучению роботов (CoRL) 2020
Энди Зенг, Пит Флоренс, Джонатан Томпсон, Стефан Уэлкер, Джонатан Чиен, Мария Аттариан, Трэвис Армстронг,
Иван Красин, Дэн Дуонг, Викас Синдхвани, Джонни Ли
Абстрактный. Роботизированную манипуляцию можно сформулировать как создание последовательности пространственных перемещений: перемещаемое пространство может охватывать объект, часть объекта или концевой эффектор. В этой работе мы предлагаем Transporter Network — простую модельную архитектуру, которая перестраивает глубокие функции, чтобы сделать вывод о пространственных смещениях на основе визуальных данных, что может параметризовать действия робота. Он не делает предположений об объектности (например, канонических поз, моделей или ключевых точек), использует пространственную симметрию и на несколько порядков более эффективен, чем наши проверенные альтернативы, при обучении задачам манипулирования, основанным на визуальном зрении: от укладки пирамиды блоков до сборка наборов с невидимыми предметами; от манипулирования деформируемыми веревками до толкания груды мелких предметов с обратной связью с обратной связью. Наш метод может представлять сложные мультимодальные распределения политик и обобщать их для многоэтапных последовательных задач, а также для выбора и размещения 6DoF. Эксперименты с 10 смоделированными задачами показывают, что он обучается быстрее и обобщает лучше, чем различные сквозные базовые сценарии, включая политики, использующие наземные позы объектов. Мы проверяем наши методы на аппаратном обеспечении в реальном мире.
Шаг 1. Рекомендуется: установите Miniconda с Python 3.7.
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -u
echo $' n export PATH=~/miniconda3/bin:"${PATH}" n ' >> ~ /.profile # Add Conda to PATH.
source ~ /.profile
conda init
Шаг 2. Создайте и активируйте среду Conda, затем установите пакеты GCC и Python.
cd ~ /ravens
conda create --name ravens python=3.7 -y
conda activate ravens
sudo apt-get update
sudo apt-get -y install gcc libgl1-mesa-dev
pip install -r requirements.txt
python setup.py install --user
Шаг 3. Рекомендуется: установите ускорение графического процессора с помощью NVIDIA CUDA 10.1 и cuDNN 7.6.5 для Tensorflow.
./oss_scripts/install_cuda.sh # For Ubuntu 16.04 and 18.04.
conda install cudatoolkit==10.1.243 -y
conda install cudnn==7.6.5 -y
pip
В качестве примера для Ubuntu 18.04:
./oss_scipts/install_cuda.sh # For Ubuntu 16.04 and 18.04.
sudo apt install gcc libgl1-mesa-dev python3.8-venv
python3.8 -m venv ./venv
source ./venv/bin/activate
pip install -U pip
pip install scikit-build
pip install -r ./requirements.txt
export PYTHONPATH= ${PWD}
Шаг 1. Создайте данные обучения и тестирования (сохраненные локально). Примечание: удалите --disp
для безгласного режима.
python ravens/demos.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --mode=train --n=10
python ravens/demos.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --mode=test --n=100
Чтобы работать с общей памятью, откройте отдельное окно терминала и запустите python3 -m pybullet_utils.runServer
. Затем добавьте флаг --shared_memory
к приведенной выше команде.
Шаг 2. Обучите модель, например модель транспортных сетей. Контрольные точки модели сохраняются в каталоге checkpoints
. Необязательно: вы можете выйти из обучения преждевременно после 1000 итераций, чтобы перейти к следующему шагу.
python ravens/train.py --task=block-insertion --agent=transporter --n_demos=10
Шаг 3. Оцените агент Transporter Networks, используя модель, обученную на 1000 итерациях. Результаты сохраняются локально в файлы .pkl
.
python ravens/test.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --agent=transporter --n_demos=10 --n_steps=1000
Шаг 4. Постройте график и распечатайте результаты.
python ravens/plot.py --disp=True --task=block-insertion --agent=transporter --n_demos=10
Необязательный. Отслеживайте потери при обучении и проверке с помощью Tensorboard.
python -m tensorboard.main --logdir=logs # Open the browser to where it tells you to.
Загрузите наши сгенерированные наборы данных для обучения и тестирования, а также предварительно обученные модели.
wget https://storage.googleapis.com/ravens-assets/checkpoints.zip
wget https://storage.googleapis.com/ravens-assets/block-insertion.zip
wget https://storage.googleapis.com/ravens-assets/place-red-in-green.zip
wget https://storage.googleapis.com/ravens-assets/towers-of-hanoi.zip
wget https://storage.googleapis.com/ravens-assets/align-box-corner.zip
wget https://storage.googleapis.com/ravens-assets/stack-block-pyramid.zip
wget https://storage.googleapis.com/ravens-assets/palletizing-boxes.zip
wget https://storage.googleapis.com/ravens-assets/assembling-kits.zip
wget https://storage.googleapis.com/ravens-assets/packing-boxes.zip
wget https://storage.googleapis.com/ravens-assets/manipulating-rope.zip
wget https://storage.googleapis.com/ravens-assets/sweeping-piles.zip
В формулировке MDP для каждой задачи используются переходы следующей структуры:
Наблюдения: необработанные изображения RGB-D и параметры камеры (поза и характеристики).
Действия: примитивная функция (которая будет вызываться роботом) и параметры.
Награды: общая сумма наград за успешный эпизод должна быть =1.
Информация: 6D позы, размеры и цвета объектов.