Ravens は、ピック アンド プレイスに重点を置いた、ビジョンベースのロボット操作を学習するための PyBullet のシミュレートされたタスクのコレクションです。これは、10 個のテーブルトップ再配置タスクを備えたジムのような API を特徴とし、それぞれに、(i) 専門家によるデモンストレーション (模倣学習用) を提供するスクリプト化されたオラクル、および (ii) 部分的な評価を提供する報酬関数 (強化学習用) が含まれています。
(a)ブロック挿入: L 字型の赤いブロックを持ち上げて、L 字型の固定具に置きます。
(b) place-red-in-green : 赤いブロックを拾い上げ、他のオブジェクトの中にある緑のボウルに置きます。
(c) towers-of-hanoi : ディスクを 1 つのタワーから別のタワーに順番に移動します。大きいディスクの上には小さいディスクのみを置くことができます。
(d) align-box-corner : ランダムなサイズのボックスを選択し、その角の 1 つをテーブルトップ上の L 字型マーカーに合わせます。
(e) stack-block-pyramid : 6 つのブロックを虹色の順序で 3-2-1 のピラミッドに順番に積み重ねます。
(f)パレタイジングボックス: 均質な固定サイズの箱をピックアップし、パレット上に転置された層で積み重ねます。
(g)組み立てキット: さまざまなオブジェクトを選択し、対応するシルエットがマークされたボード上に配置します。
(h)梱包箱: ランダムなサイズの箱を取り出し、コンテナにしっかりと入れます。
(i)ロープの操作: 3 辺の正方形の 2 つの端点を接続するように変形可能なロープを再配置します。
(j)スイープパイル: テーブルトップにマークされた目標のゴールゾーンに小さなオブジェクトの山を押し込みます。
一部のタスクでは、目に見えないオブジェクト (d、g、h) への一般化、または閉ループ フィードバック (c、e、f、h、i、j) を使用したマルチステップ シーケンスが必要です。
チーム:このリポジトリは、Andy Zeng、Pete Florence、Daniel Seita、Jonathan Tompson、Ayzaan Wahid によって開発および保守されています。これは論文の参照リポジトリです。
プロジェクト Web サイト • PDF • Conference on Robot Learning (CoRL) 2020
アンディ・ゼン、ピート・フローレンス、ジョナサン・トンプソン、ステファン・ウェルカー、ジョナサン・チェン、マリア・アタリアン、トラヴィス・アームストロング、
イワン・クラシン、ダン・ズオン、ヴィカス・シンドワニ、ジョニー・リー
抽象的な。ロボット操作は、一連の空間変位を引き起こすものとして定式化できます。移動される空間には、オブジェクト、オブジェクトの一部、またはエンドエフェクターが含まれる場合があります。この研究では、ロボットの動作をパラメータ化できる、視覚入力から空間変位を推測するために深い特徴を再配置する単純なモデル アーキテクチャであるトランスポーター ネットワークを提案します。オブジェクト性 (標準的なポーズ、モデル、キーポイントなど) を仮定せず、空間対称性を活用し、ブロックのピラミッドの積み重ねから、目に見えない物体を使ってキットを組み立てる。変形可能なロープの操作から、閉ループフィードバックで小さな物体の山を押すことまで。私たちの方法は、複雑なマルチモーダルなポリシー配布を表現でき、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.推奨: Tensorflow 用に NVIDIA CUDA 10.1 および cuDNN 7.6.5 を使用して 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.トランスポーター ネットワーク モデルなどのモデルをトレーニングします。モデル チェックポイントは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 ポーズ、サイズ、色。