1. Dex-Net Package GitHub - BerkeleyAutomation/dex-net
🎈dex-net Python 包用于打开、读取和编写 HDF5 数据库的 3D 对象模型、平行下颚抓取和掌握鲁棒性指标。
🎈HDF5数据库还可用于生成大量数据集,将点云和抓取的元组与二进制抓取鲁棒性标签相关联,以训练抓取质量卷积神经网络(GQ-CNN)来预测点云候选抓取的鲁棒性。
🎈该软件包是Dexterity Network(Dex-Net)项目的一部分。
🐸Dex-Net Object Mesh Dataset v1.1 和 Dex-Net 2.0 HDF5 数据库可以从数据存储库下载。
🐸生成自定义数据集:script tools/generate_gqcnn_dataset.py
2.GQCNN Package GitHub - BerkeleyAutomation/gqcnn
🎈gqcnn Python 包用于训练和分析 Grasp Quality Convolutional Neural Networks (GQ-CNN)。它是正在进行的Dexterity-Network(Dex-Net)项目的一部分
🐸安装和使用手册:Berkeley AUTOLAB’s GQCNN Package
——————————————————————————————————————————
Dexterity Network (Dex-Net) 是一个研究项目,包括代码、数据集和算法,用于生成合成点云数据集、机器人平行颚抓取和基于物理的抓取鲁棒性指标,用于数千个 3D 对象模型,以训练基于机器学习的方法来规划机器人抓取。 Dex-Net项目的更广泛目标是开发高度可靠的机器人抓取各种刚性物体,如工具,家居用品,包装商品和工业零件。
Dex-Net 1.0 专为在云中跨超过 10,000 个 3D 网格模型的数据集进行分布式稳健抓取分析而设计。【此代码已于 2017 年 2 月弃用】
Dex-Net 2.0 旨在生成训练数据集,以学习 Grasp 质量卷积神经网络 (GQ-CNN) 模型,该模型可预测候选平行下颌抓取点云对象的成功概率。 GQ-CNN可用于快速规划抓取,这些抓取可以举起和运输物理机器人的各种物体。
Dex-Net 2.0: Deep Learning to Plan Robust Grasps with Synthetic Point Clouds and Analytic Grasp Metrics Dex-Net 2.0:深度学习,使用合成点云和分析抓取指标规划稳健的抓取
概述:为了减少深度学习稳健机器人抓取计划的数据收集时间,我们探索了从 6 万个点云、抓取和从 Dex-Net 7.3 的数千个 1D 模型生成的稳健分析抓取指标的合成数据集中进行训练。 我们使用生成的数据集 Dex-Net 0.2 来训练 Grasp 质量卷积神经网络 (GQ-CNN) 模型,该模型可快速预测深度图像中抓取成功的概率,其中抓取被指定为夹持器相对于 RGB-D 传感器的平面位置、角度和深度。 在ABB YuMi上进行的0,1多次试验实验比较了单个物体的抓取计划方法,结果表明,仅使用来自Dex-Net 000.2的合成数据训练的GQ-CNN可用于在0.0秒内计划抓取,八个具有对抗几何形状的已知对象的成功率为8%,并且比将点云注册到预先计算的对象数据集和索引抓取快93倍。 GQ-CNN也是十种新型家用物品数据集上性能最高的方法,在3个抓取中,误报率为零,被归类为稳健(29%精度),成功率比基于注册的方法高100.1倍。
GitHub - BerkeleyAutomation/gqcnn: Python module for GQ-CNN training and deployment with ROS integration.
Dex-Net 2.1 增加了 pybullet 的动态模拟,并将鲁棒抓取模型扩展到料箱拣选的顺序任务。
Dex-Net 3.0增加了对基于吸力的末端执行器的支持。
Dex-Net 3.0: Computing Robust Robot Suction Grasp Targets using a New Analytic Model and Deep Learning Dex-Net 3.0:使用新的分析模型和深度学习计算强大的机器人吸力抓取目标
🎈基于抽吸的末端执行器广泛用于工业,并且通常优于平行钳口和多指夹具,因为它们能够通过单点接触提升物体。此功能简化了规划,并且通常使用手动编码的启发式方法(例如瞄准平面)来根据点云数据选择吸力抓取。在本文中,我们提出了一种顺应的吸力接触模型,该模型计算吸盘和目标物体之间的密封质量,并确定吸力抓手是否可以抵抗物体上的外部扳手(例如重力)。
🎈为了评估抓取,我们测量了对末端执行器和物体姿势、材料属性和外部扳手的扰动的鲁棒性。我们使用此模型生成 Dex-Net 3.0,一个包含 2 万个点云、吸力抓取和抓取鲁棒性标签的数据集,该数据集由 8,1 个 500D 对象模型计算,并在此数据集上训练 Grasp 质量卷积神经网络 (GQ-CNN),以对点云中的吸力抓取鲁棒性进行分类。我们在配备气动吸盘的ABB YuMi上进行3次物理试验,评估了最终的系统。当对象形状、姿势和质量属性已知时,模型在具有对抗几何(如急剧曲面)的对象数据集上实现了 375% 的精度。此外,在Dex-Net 99.3上训练的基于GQ-CNN的策略在基本和典型对象数据集上分别实现了0%和99%的精度。
Dex-Net 4.0 统一了多个抓手的奖励指标,以有效地训练“灵巧”抓取策略,从而决定哪种抓手最适合特定对象。
Learning Ambidextrous Robot Grasping Policies学习灵巧机器人抓取策略
通用拣选 (UP) 或可靠的机器人抓取堆中的各种新物体是一项重大挑战 用于电子商务订单履行、制造、检验和上门服务机器人。优化速率、可靠性、 由于传感、控制和接触物理场固有的不确定性,UP的范围很困难。本文探讨了 “灵巧”机器人抓取,其中使用两个或多个异质夹具。我们介绍灵巧网络 (Dex-Net) 4.0,对以前版本的Dex-Net的实质性扩展,可以学习一组给定的抓手的策略 通过使用物理和几何分析模型的域随机化对合成数据集进行训练。我们 在5万张合成深度图像上训练平行钳口和真空吸盘夹具的策略, 抓住,并从成堆的三维物体中产生奖励。在带有两个抓手的物理机器人上, Dex-Net 4.0 策略始终如一地清除多达 25 个新对象的箱子,可靠性大于 95%,速率 每小时超过 300 次平均拣选。
项目链接
数据
- GQ-CNN 训练数据集
- 预先训练的 GQ-CNN 模型
- 对象网格数据集 v1.1
- HDF5 3D 对象数据库、YuMi 的平行钳口抓取和鲁棒性指标
法典
- GQ-CNN Python 训练代码(文档))
- Dex-Net Database Python API (文档))
GQ-CNN模型对生成数据集时使用的以下参数很敏感:
- 机器人抓手
- 深度摄像机
- 相机和工作区之间的距离。
因此,我们不能保证我们的预训练模型在其他物理设置上的性能。关于预训练的模型和示例策略的样本输入的更多信息,请参见Pre-trained Models and Sample Inputs.。
What are GQ-CNNs?
GQ-CNN是一种神经网络架构,它将深度图像和抓取作为输入,并输出在抬起,运输和摇晃物体时抓取成功握住物体的预测概率。
GQ-CNN 权重在合成点云、平行下颌抓取和从基于物理的模型生成的抓取指标数据集上进行训练,这些模型具有域随机化,可实现从模拟到真实的转移。有关更多信息,请参阅正在进行的Dexterity Network(Dex-Net)项目。
💚Prerequisites
Python
The gqcnn package has only been tested with Python 3.5, Python 3.6, and Python 3.7.
Ubuntu
The gqcnn package has only been tested with Ubuntu 12.04, Ubuntu 14.04 and Ubuntu 16.04.
Virtualenv
We highly recommend using a Python environment management system, in particular Virtualenv, with the Pip and ROS installations. Note: Several users have encountered problems with dependencies when using Conda.
🎈Pip Installation
The pip installation is intended for users who are only interested in
1) Training GQ-CNNs or
2) Grasp planning on saved RGBD images, not interfacing with a physical robot.
If you have intentions of using GQ-CNNs for grasp planning on a physical robot, we suggest you install as a ROS package.
1. Clone the repository
$ git clone https://github.com/BerkeleyAutomation/gqcnn.git
2. Run pip installation
Change directories into the gqcnn repository and run the pip installation.
This will install gqcnn in your current virtual environment.
$ pip install .
🎈ROS Installation
Installation as a ROS package is intended for users who wish to use GQ-CNNs to plan grasps on a physical robot.
1. Clone the repository
Clone or download the project from Github.
$ cd <PATH_TO_YOUR_CATKIN_WORKSPACE>/src $ git clone https://github.com/BerkeleyAutomation/gqcnn.git
2. Build the catkin package
Build the catkin package.
$ cd <PATH_TO_YOUR_CATKIN_WORKSPACE> $ catkin_make
Then re-source devel/setup.bash for the package to be available through Python.
💚Overview
There are two main use cases of the gqcnn package:
1.在离线数据集中使用GQCNN模型,然后在RGBD图像上进行抓取规划
2.在RGBD图上使用预先训练的GQCNN模型
Prerequisites 先决条件
先下载示例模型和数据集
$ cd /path/to/your/gqcnn $ ./scripts/downloads/download_example_data.sh $ ./scripts/downloads/models/download_models.sh
🎈Running Python Scripts 运行python脚本
cd /path/to/your/gqcnn python /path/to/script.py
💚Training
The gqcnn package can be used to train a Dex-Net 4.0 GQ-CNN model on a custom offline Dex-Net dataset.【软件包可用于在自定义离线模式上训练GQ-CNN模型数据集。】从头训练耗时,所以训练新网络最有效的方法是微调预训练的GQ-CNN模型的权重。Dex-Net 4.0 GQ-CNN model,已经在百万张图像上进行了训练。
若要微调 GQ-CNN ,则运行:
$ python tools/finetune.py <training_dataset_path> <pretrained_network_name> --config_filename <config_filename> --name <model_name>
The args are:
-
training_dataset_path: Path to the training dataset.
-
pretrained_network_name: Name of pre-trained GQ-CNN.
-
config_filename: Name of the config file to use.
-
model_name: Name for the model
训练GQ-CNN,选择不同的gripper,运行不同的代码
To train a GQ-CNN for a parallel jaw gripper on a sample dataset, run the fine-tuning script:
$ python tools/finetune.py data/training/example_pj/ GQCNN-4.0-PJ --config_filename cfg/finetune_example_pj.yaml --name gqcnn_example_pj
To train a GQ-CNN for a suction gripper run:
$ python tools/finetune.py data/training/example_suction/ GQCNN-4.0-SUCTION --config_filename cfg/finetune_example_suction.yaml --name gqcnn_example_suction
🎈Visualizing Training 训练可视化
gqcnn模型包含对通过Tensorboard可视化训练进度的支持。当训练脚本运行时,Tensorboard会自动启动,可以通过在网络浏览器中导航到localhost:6006来访问。
在那里你会发现类似下面的内容:
其中显示有用的训练统计数据,如验证误差、最小批量损失和学习率。
Tensorflow摘要存储在model/<model_name>/tensorboard_summaries/
💚Analysis
检查训练和验证损失和分类的错误,有助于确保网络训练成功。想分析经过训练的GQ -CNN的性能,请运行:
$ python tools/analyze_gqcnn_performance.py <model_name>
The args are:
-
model_name: Name of a trained model.
To analyze the networks we just trained, run:
$ python tools/analyze_gqcnn_performance.py gqcnn_example_pj $ python tools/analyze_gqcnn_performance.py gqcnn_example_suction
💚Grasp Planning
抓取计划包括在给定的点云中寻找具有最高预测成功概率的抓取方式。在gqcnn软件包中,这被实现为通过最大化GQ-CNN的输出将RGBD图像映射到6-DOF抓取姿势的策略。最大化可以用迭代方法实现,如交叉熵法(CEM),它用于Dex-Net 2.0、Dex-Net 2.1、Dex-Net 3.0、Dex-Net 4.0,或者更快的全卷积网络,这在FC-GQ-CNN中使用。
我们在examples/中提供了策略的例子。特别是,我们提供了一个Python策略示例和一个ROS策略示例。注意,ROS策略需要安装ROS gqcnn,可以在这里找到。我们强烈建议使用Python策略,除非你需要使用ROS对物理机器人进行抓取规划。
Sample Inputs
Sample inputs from our experimental setup are provided with the repo:
-
data/examples/clutter/phoxi/dex-net_4.0: Set of example images from a PhotoNeo PhoXi S containing objects used in Dex-Net 4.0 experiments arranged in heaps.
-
data/examples/clutter/phoxi/fcgqcnn: Set of example images from a PhotoNeo PhoXi S containing objects in FC-GQ-CNN experiments arranged in heaps.
-
data/examples/single_object/primesense/: Set of example images from a Primesense Carmine containing objects used in Dex-Net 2.0 experiments in singulation.
-
data/examples/clutter/primesense/: Set of example images from a Primesense Carmine containing objects used in Dex-Net 2.1 experiments arranged in heaps.
请注意,在尝试这些样本输入时,你必须确保你所使用的GQ-CNN模型是为相应的摄像机和输入类型(单一化/杂乱化)训练的。
Pre-trained Models
Dex-Net 4.0的预训练的平行颚和吸力模型会随着gqcnn包的安装自动下载。如果你确实希望尝试旧的结果的模型(或我们的实验模型FC-GQ-CNN),所有预训练的模型都可以用下载:
$ ./scripts/downloads/models/download_models.sh
The models are:
-
GQCNN-2.0: For Dex-Net 2.0, trained on images of objects in singulation with parameters for a Primesense Carmine.
-
GQCNN-2.1: For Dex-Net 2.1, a Dex-Net 2.0 model fine-tuned on images of objects in clutter with parameters for a Primesense Carmine.
-
GQCNN-3.0: For Dex-Net 3.0, trained on images of objects in clutter with parameters for a Primesense Carmine.
-
GQCNN-4.0-PJ: For Dex-Net 4.0, trained on images of objects in clutter with parameters for a PhotoNeo PhoXi S.
-
GQCNN-4.0-SUCTION: For Dex-Net 4.0, trained on images of objects in clutter with parameters for a PhotoNeo PhoXi S.
-
FC-GQCNN-4.0-PJ: For FC-GQ-CNN, trained on images of objects in clutter with parameters for a PhotoNeo PhoXi S.
-
FC-GQCNN-4.0-SUCTION: For FC-GQ-CNN, trained on images of objects in clutter with parameters for a PhotoNeo PhoXi S.
请注意,GQ-CNN模型对数据集生成过程中使用的参数很敏感,特别是:1)抓手的几何形状,我们所有的预训练模型都使用ABB YuMi平行颚式抓手;2)相机的内在结构,我们所有的预训练模型都使用Primesense Carmine或PhotoNeo Phoxi S(关于哪一个见上文);3)渲染时相机和工作区之间的距离,我们所有的预训练模型都是50-70厘米。因此,我们不能保证我们的预训练模型在其他物理设置上的性能。我们正在积极研究如何生成更强大的数据集,可以跨机器人、相机和视角进行通用化!
Python Policy
The example Python policy can be queried on saved images using:
$ python examples/policy.py <model_name> --depth_image <depth_image_filename> --segmask <segmask_filename> --camera_intr <camera_intr_filename>
The args are:
-
model_name: Name of the GQ-CNN model to use.
-
depth_image_filename: Path to a depth image (float array in .npy format).
-
segmask_filename: Path to an object segmentation mask (binary image in .png format).
-
camera_intr_filename: Path to a camera intrinsics file (.intr file generated with BerkeleyAutomation’s perception package).
To evaluate the pre-trained Dex-Net 4.0 parallel jaw network on sample images of objects in heaps run:
$ python examples/policy.py GQCNN-4.0-PJ --depth_image data/examples/clutter/phoxi/dex-net_4.0/depth_0.npy --segmask data/examples/clutter/phoxi/dex-net_4.0/segmask_0.png --camera_intr data/calib/phoxi/phoxi.intr
To evaluate the pre-trained Dex-Net 4.0 suction network on sample images of objects in heaps run:
$ python examples/policy.py GQCNN-4.0-SUCTION --depth_image data/examples/clutter/phoxi/dex-net_4.0/depth_0.npy --segmask data/examples/clutter/phoxi/dex-net_4.0/segmask_0.png --camera_intr data/calib/phoxi/phoxi.intr
FC-GQ-CNN Policy
FC-GQ CNN题目:基于全卷积深度网络学习机器人抓取策略的策略数据集合成
快速可靠的机器人抓取各种物体的应用范围从仓库自动化到家庭整理。一种有前途的方法是从点云、抓取和奖励的综合训练数据集中学习深度策略,这些数据集使用具有域随机化的随机噪声模型的分析模型进行采样。
探讨了合成训练样本的分布如何影响学习机器人策略的速率和可靠性。提出了一种合成数据抽样分布,它将从政策行动集中抽样的抓取与来自具有完整状态知识的强大抓取主管的指导样本相结合。我们用它来训练基于完全卷积网络架构的机器人策略,该架构以 4-DOF(3D 位置和平面方向)评估数百万个抓取候选者。
- 我们最新的研究成果FC-GQ-CNN,将新颖的全卷积网络结构与我们先前在GQ-CNN方面的工作结合起来,以提高策略率和可靠性。
- FC-GQ-CNN不是依靠交叉熵法(CEM)在策略动作空间中反复搜索最佳抓取方式,而是密集而有效地并行评估整个动作空间。
- 因此,它能够在0.625秒内考虑5000次以上的抓取,从而使MPPH(平均每小时抓取次数)达到296次,而之前Dex-Net 4.0的MPPH是250次。
- 论文链接:on_policy_dataset_synth_fcgqcnn.pdf
You can download the pre-trained FC-GQ-CNN parallel jaw and suction models along with the other pre-trained models:
$ ./scripts/downloads/models/download_models.sh
Then run the Python policy with the --fully_conv flag.
To evaluate the pre-trained FC-GQ-CNN parallel jaw network on sample images of objects in heaps run:
$ python examples/policy.py FC-GQCNN-4.0-PJ --fully_conv --depth_image data/examples/clutter/phoxi/fcgqcnn/depth_0.npy --segmask data/examples/clutter/phoxi/fcgqcnn/segmask_0.png --camera_intr data/calib/phoxi/phoxi.intr
To evaluate the pre-trained FC-GQ-CNN suction network on sample images of objects in heaps run:
$ python examples/policy.py FC-GQCNN-4.0-SUCTION --fully_conv --depth_image data/examples/clutter/phoxi/fcgqcnn/depth_0.npy --segmask data/examples/clutter/phoxi/fcgqcnn/segmask_0.png --camera_intr data/calib/phoxi/phoxi.intr
💚Replicating Results
有两种方法来复制结果:
1.使用预先训练过的模型: 下载一个预先训练好的GQ-CNN模型,并运行一个例子政策。
2.从头开始训练: 下载原始数据集,训练一个GQ-CN模型,并使用你刚刚训练的模型运行一个例子策略。
我们鼓励使用方法1。因为2计算昂贵,原始数据集太大。
方法1:Using a Pre-trained Model
First download the pre-trained models.
$ ./scripts/downloads/models/download_models.sh
Dex-Net 2.0
Evaluate the pre-trained GQ-CNN model.
$ ./scripts/policies/run_all_dex-net_2.0_examples.sh
Dex-Net 2.1
Evaluate the pre-trained GQ-CNN model.
$ ./scripts/policies/run_all_dex-net_2.1_examples.sh
Dex-Net 3.0
Evaluate the pre-trained GQ-CNN model.
$ ./scripts/policies/run_all_dex-net_3.0_examples.sh
Dex-Net 4.0
To evaluate the pre-trained parallel jaw GQ-CNN model.
$ ./scripts/policies/run_all_dex-net_4.0_pj_examples.sh
To evaluate the pre-trained suction GQ-CNN model.
$ ./scripts/policies/run_all_dex-net_4.0_suction_examples.sh
FC-GQ-CNN
To evaluate the pre-trained parallel jaw FC-GQ-CNN model.
$ ./scripts/policies/run_all_dex-net_4.0_fc_pj_examples.sh
To evaluate the pre-trained suction FC-GQ-CNN model.
$ ./scripts/policies/run_all_dex-net_4.0_fc_suction_examples.sh
方法2:Training from Scratch 从0开始训练
Dex-Net 2.0
First download the appropriate dataset.
$ ./scripts/downloads/datasets/download_dex-net_2.0.sh
Then train a GQ-CNN from scratch.
$ ./scripts/training/train_dex-net_2.0.sh
Finally, evaluate the trained GQ-CNN.
$ ./scripts/policies/run_all_dex-net_2.0_examples.sh
Dex-Net 2.1
First download the appropriate dataset.
$ ./scripts/downloads/datasets/download_dex-net_2.1.sh
Then train a GQ-CNN from scratch.
$ ./scripts/training/train_dex-net_2.1.sh
Finally, evaluate the trained GQ-CNN.
$ ./scripts/policies/run_all_dex-net_2.1_examples.sh
Dex-Net 3.0
First download the appropriate dataset.
$ ./scripts/downloads/datasets/download_dex-net_3.0.sh
Then train a GQ-CNN from scratch.
$ ./scripts/training/train_dex-net_3.0.sh
Finally, evaluate the trained GQ-CNN.
$ ./scripts/policies/run_all_dex-net_3.0_examples.sh
Dex-Net 4.0
To replicate the Dex-Net 4.0 parallel jaw results, first download the appropriate dataset.
$ ./scripts/downloads/datasets/download_dex-net_4.0_pj.sh
Then train a GQ-CNN from scratch.
$ ./scripts/training/train_dex-net_4.0_pj.sh
Finally, evaluate the trained GQ-CNN.
$ ./scripts/policies/run_all_dex-net_4.0_pj_examples.sh
To replicate the Dex-Net 4.0 suction results, first download the appropriate dataset.
$ ./scripts/downloads/datasets/download_dex-net_4.0_suction.sh
Then train a GQ-CNN from scratch.
$ ./scripts/training/train_dex-net_4.0_suction.sh
Finally, evaluate the trained GQ-CNN.
$ ./scripts/policies/run_all_dex-net_4.0_suction_examples.sh
FC-GQ-CNN
To replicate the FC-GQ-CNN parallel jaw results, first download the appropriate dataset.
$ ./scripts/downloads/datasets/download_dex-net_4.0_fc_pj.sh
Then train a FC-GQ-CNN from scratch.
$ ./scripts/training/train_dex-net_4.0_fc_pj.sh
Finally, evaluate the trained FC-GQ-CNN.
$ ./scripts/policies/run_all_dex-net_4.0_fc_pj_examples.sh
To replicate the FC-GQ-CNN suction results, first download the appropriate dataset.
$ ./scripts/downloads/datasets/download_dex-net_4.0_fc_suction.sh
Then train a FC-GQ-CNN from scratch.
$ ./scripts/training/train_dex-net_4.0_fc_suction.sh
Finally, evaluate the trained FC-GQ-CNN.
$ ./scripts/policies/run_all_dex-net_4.0_fc_suction_examples.sh
💚Benchmarks
Dex-Net 2.0
Below are the highest classification accuracies achieved on the Dex-Net 2.0 dataset on a randomized 80-20 train-validation split using various splitting rules:
The current leader is a ConvNet submitted by nomagic.ai.
GQ is our best GQ-CNN for Dex-Net 2.0.
API Documentation
GQ-CNN — GQCNN 1.1.0 documentation