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 姿势、大小和颜色。