Ravens 是 PyBullet 中的模擬任務集合,用於學習基於視覺的機器人操作,重點是拾取和放置。它具有類似Gym 的API,具有10 個桌面重新排列任務,每個任務都有(i) 提供專家演示(用於模仿學習)的腳本化預言機,以及(ii) 提供部分學分的獎勵功能(用於強化學習)。
(a)插塊:拿起L形紅色塊並將其放入L形夾具中。
(b)將紅色放入綠色:拿起紅色塊並將它們放入綠色碗中,與其他物體一起放置。
(c) towers-of-hanoi :順序地將圓盤從一座塔移動到另一座塔-只有較小的圓盤才能位於較大的圓盤之上。
(d) align-box-corner :拿起隨機大小的盒子,並將其一個角落與桌面上的 L 形標記對齊。
(e) stack-block-pyramid :依彩虹色順序將 6 個區塊依序堆疊成 3-2-1 的金字塔。
(f)碼垛箱:拾取均質的固定尺寸的箱子並將其以換位的方式堆放在托盤上。
(g)組裝套件:拿起不同的物體並將它們排列在標示相應輪廓的板上。
(h)包裝盒:拿起隨機大小的盒子並將它們緊緊地放入容器中。
(i)操縱繩索:重新排列可變形繩索,使其連接三邊形正方形的兩個端點。
(j)掃堆:將成堆的小物體推入桌面上標示的目標區域。
有些任務需要泛化到看不見的物件(d,g,h),或多步驟排序與閉環回饋(c,e,f,h,i,j)。
團隊:此儲存庫由 Andy Zeng、Pete Florence、Daniel Seita、Jonathan Tompson 和 Ayzaan Wahid 開發和維護。這是論文的參考存儲庫:
專案網站 • PDF • 2020 年機器人學習會議 (CoRL)
安迪·曾(Andy Zeng)、皮特·弗洛倫斯(Pete Florence)、喬納森·湯普森(Jonathan Tompson)、斯特凡·韋爾克(Stefan Welker)、喬納森·錢(Jonathan Chien)、瑪麗亞·阿塔里安(Maria Attarian)、崔維斯‧阿姆斯壯(Travis Armstrong)、
伊凡卡拉辛、丹陽、維卡斯辛德瓦尼、強尼李
抽象的。機器人操縱可以表述為引發一系列空間位移:其中被移動的空間可以包含物體、物體的一部分或末端執行器。在這項工作中,我們提出了 Transporter Network,這是一個簡單的模型架構,可以重新排列深層特徵以從視覺輸入推斷空間位移,從而可以參數化機器人動作。它不做任何客觀性假設(例如規範姿勢、模型或關鍵點),它利用空間對稱性,並且在學習基於視覺的操作任務中比我們的基準替代方案的樣本效率高幾個數量級:從堆疊塊金字塔,到用看不見的物體組裝套件;從操縱可變形的繩索,到透過閉環回饋推動成堆的小物體。我們的方法可以表示複雜的多模式策略分佈,並推廣到多步驟順序任務以及 6DoF 擷取和放置。對 10 個模擬任務的實驗表明,它比各種端到端基線(包括使用地面真實對象姿勢的策略)學習得更快並且概括得更好。我們在現實世界中使用硬體驗證我們的方法。
步驟1.建議:使用Python 3.7安裝Miniconda。
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 for Tensorflow 安裝 GPU 加速。
./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.訓練模型,例如 Transporter Networks 模型。模型檢查點儲存到checkpoints
目錄中。可選:您可以在 1000 次迭代後提前退出訓練以跳至下一步。
python ravens/train.py --task=block-insertion --agent=transporter --n_demos=10
步驟 3.使用經過 1000 次迭代訓練的模型評估 Transporter Networks 代理程式。結果在本地保存到.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 姿勢、大小和顏色。