Ravens ist eine Sammlung simulierter Aufgaben in PyBullet zum Erlernen der visionsbasierten Robotermanipulation mit Schwerpunkt auf Pick-and-Place. Es verfügt über eine Gym-ähnliche API mit 10 Tabletop-Neuordnungsaufgaben, jede mit (i) einem Skript-Orakel, das Expertendemonstrationen bereitstellt (für Nachahmungslernen) und (ii) Belohnungsfunktionen, die eine teilweise Anrechnung ermöglichen (für Verstärkungslernen).
(a) Einsetzen des Blocks : Nehmen Sie den L-förmigen roten Block und platzieren Sie ihn in der L-förmigen Halterung.
(b) Rot-in-Grün platzieren : Nehmen Sie die roten Blöcke auf und legen Sie sie in die grünen Schalen zwischen anderen Gegenständen.
(c) Türme von Hanoi : Verschieben Sie die Scheiben nacheinander von einem Turm zum anderen – nur kleinere Scheiben können auf größeren liegen.
(d) align-box-corn : Nehmen Sie die Box zufälliger Größe und richten Sie eine ihrer Ecken an der L-förmigen Markierung auf der Tischplatte aus.
(e) Stapelblockpyramide : Stapeln Sie nacheinander 6 Blöcke zu einer Pyramide aus 3-2-1 mit regenbogenfarbener Reihenfolge.
(f) Palettierboxen : Nehmen Sie homogene Boxen mit fester Größe auf und stapeln Sie sie in übereinanderliegenden Schichten auf der Palette.
(g) Bausätze : Nehmen Sie verschiedene Gegenstände auf und ordnen Sie sie auf einem mit entsprechenden Silhouetten markierten Brett an.
(h) Verpackungskartons : Nehmen Sie Kartons beliebiger Größe auf und legen Sie sie fest in einen Behälter.
(i) Manipulationsseil : Ordnen Sie ein verformbares Seil so um, dass es die beiden Endpunkte eines dreiseitigen Quadrats verbindet.
(j) Kehrstapel : Stapel kleiner Gegenstände in eine auf der Tischplatte markierte Zielzone schieben.
Einige Aufgaben erfordern eine Verallgemeinerung auf unsichtbare Objekte (d,g,h) oder eine mehrstufige Sequenzierung mit Feedback im geschlossenen Regelkreis (c,e,f,h,i,j).
Team: Dieses Repository wird von Andy Zeng, Pete Florence, Daniel Seita, Jonathan Tompson und Ayzaan Wahid entwickelt und gepflegt. Dies ist das Referenz-Repository für den Artikel:
Projektwebsite • PDF • Konferenz zum Roboterlernen (CoRL) 2020
Andy Zeng, Pete Florence, Jonathan Tompson, Stefan Welker, Jonathan Chien, Maria Attarian, Travis Armstrong,
Ivan Krasin, Dan Duong, Vikas Sindhwani, Johnny Lee
Abstrakt. Robotermanipulation kann so formuliert werden, dass sie eine Folge räumlicher Verschiebungen auslöst: Dabei kann der bewegte Raum ein Objekt, einen Teil eines Objekts oder einen Endeffektor umfassen. In dieser Arbeit schlagen wir das Transporter-Netzwerk vor, eine einfache Modellarchitektur, die Tiefenmerkmale neu anordnet, um räumliche Verschiebungen aus visuellen Eingaben abzuleiten – was Roboteraktionen parametrisieren kann. Es geht nicht von der Objekthaftigkeit aus (z. B. kanonische Posen, Modelle oder Schlüsselpunkte), es nutzt räumliche Symmetrien aus und ist um Größenordnungen stichprobeneffizienter als unsere Benchmark-Alternativen beim Erlernen visionsbasierter Manipulationsaufgaben: vom Stapeln einer Pyramide aus Blöcken bis hin zu Bausätze mit unsichtbaren Objekten zusammenbauen; Von der Manipulation verformbarer Seile bis hin zum Schieben von Stapeln kleiner Objekte mit geschlossener Rückkopplung. Unsere Methode kann komplexe multimodale Richtlinienverteilungen darstellen und auf mehrstufige sequentielle Aufgaben sowie 6DoF Pick-and-Place verallgemeinert werden. Experimente mit 10 simulierten Aufgaben zeigen, dass es schneller lernt und besser verallgemeinert als eine Vielzahl von End-to-End-Baselines, einschließlich Richtlinien, die Ground-Truth-Objektposen verwenden. Wir validieren unsere Methoden mit Hardware in der realen Welt.
Schritt 1. Empfohlen: Miniconda mit Python 3.7 installieren.
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
Schritt 2. Erstellen und aktivieren Sie die Conda-Umgebung und installieren Sie dann die GCC- und Python-Pakete.
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
Schritt 3. Empfohlen: GPU-Beschleunigung mit NVIDIA CUDA 10.1 und cuDNN 7.6.5 für Tensorflow installieren.
./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
Als Beispiel für 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}
Schritt 1. Trainings- und Testdaten generieren (lokal gespeichert). Hinweis: Entfernen Sie --disp
für den Headless-Modus.
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
Um mit gemeinsam genutztem Speicher auszuführen, öffnen Sie ein separates Terminalfenster und führen Sie python3 -m pybullet_utils.runServer
aus. Fügen Sie dann das Flag --shared_memory
zum obigen Befehl hinzu.
Schritt 2. Trainieren Sie ein Modell, z. B. das Transporter Networks-Modell. Modellprüfpunkte werden im checkpoints
gespeichert. Optional: Sie können das Training nach 1000 Iterationen vorzeitig beenden, um mit dem nächsten Schritt fortzufahren.
python ravens/train.py --task=block-insertion --agent=transporter --n_demos=10
Schritt 3: Bewerten Sie einen Transporter Networks-Agenten anhand des für 1000 Iterationen trainierten Modells. Die Ergebnisse werden lokal in .pkl
Dateien gespeichert.
python ravens/test.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --agent=transporter --n_demos=10 --n_steps=1000
Schritt 4. Plotten und drucken Sie die Ergebnisse.
python ravens/plot.py --disp=True --task=block-insertion --agent=transporter --n_demos=10
Optional. Verfolgen Sie Trainings- und Validierungsverluste mit Tensorboard.
python -m tensorboard.main --logdir=logs # Open the browser to where it tells you to.
Laden Sie unsere generierten Trainings- und Testdatensätze sowie vorab trainierten Modelle herunter.
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
Die MDP-Formulierung für jede Aufgabe verwendet Übergänge mit der folgenden Struktur:
Beobachtungen: Roh-RGB-D-Bilder und Kameraparameter (Pose und Eigenheiten).
Aktionen: eine primitive Funktion (die vom Roboter aufgerufen werden soll) und Parameter.
Belohnungen: Die Gesamtsumme der Belohnungen für eine erfolgreiche Episode sollte =1 betragen.
Info: 6D-Posen, Größen und Farben von Objekten.