This commit is contained in:
2024-10-09 16:13:22 +00:00
commit 0ea3f048dc
437 changed files with 44406 additions and 0 deletions

View File

@@ -0,0 +1 @@
/build/

View File

@@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = source
BUILDDIR = build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

View File

@@ -0,0 +1,8 @@
rm source/graspnetAPI.*
rm source/modules.rst
sphinx-apidoc -o ./source ../graspnetAPI
make clean
make html
make latex
cd build/latex
make

View File

@@ -0,0 +1,35 @@
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build
if "%1" == "" goto help
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
:end
popd

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

View File

@@ -0,0 +1,28 @@
About graspnetAPI
=================
.. image:: _static/graspnetlogo1-blue.png
GraspNet is an open project for general object grasping that is continuously enriched. Currently we release GraspNet-1Billion, a large-scale benchmark for general object grasping, as well as other related areas (e.g. 6D pose estimation, unseen object segmentation, etc.). graspnetAPI is a Python API that assists in loading, parsing and visualizing the annotations in GraspNet. Please visit graspnet website_ for more information on GraspNet, including for the data, paper, and tutorials. The exact format of the annotations is also described on the GraspNet website. In addition to this API, please download both the GraspNet images and annotations in order to run the demo.
.. _website: https://graspnet.net/
Resources
---------
- Documentations_
- PDF_Documentations_
- Website_
- Code_
.. _Code: https://github.com/graspnet/graspnetapi
.. _Documentations: https://graspnetapi.readthedocs.io/en/latest/
.. _PDF_Documentations: https://graspnetapi.readthedocs.io/_/downloads/en/latest/pdf/
.. _Website: https://graspnet.net/
License
-------
graspnetAPI is licensed under the none commercial CC4.0 license [see https://graspnet.net/about]

View File

@@ -0,0 +1,58 @@
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
import sys
sys.path.insert(0, os.path.abspath('../../graspnetAPI'))
# -- Project information -----------------------------------------------------
project = 'graspnetAPI'
copyright = '2021, MVIG, Shanghai Jiao Tong University'
author = 'graspnet'
# The full version, including alpha/beta/rc tags
release = '1.2.11'
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = ['sphinx.ext.autodoc',
'sphinx.ext.todo',
'sphinx.ext.viewcode'
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = []
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'sphinx_rtd_theme'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
master_doc = 'index'

View File

@@ -0,0 +1,8 @@
.. _example_check_data:
Check Dataset Files
===================
You can check if there is any missing file in the dataset by the following code.
.. literalinclude:: ../../examples/exam_check_data.py

View File

@@ -0,0 +1,62 @@
.. _example_vis:
Convert Labels between rectangle format and 6d format
=====================================================
Get a GraspNet instance.
.. literalinclude:: ../../examples/exam_convert.py
:lines: 4-22
Convert rectangle format to 6d format
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
First, load rectangle labels from dataset.
.. literalinclude:: ../../examples/exam_convert.py
:lines: 24-25
**Convert a single RectGrasp to Grasp.**
.. note:: This conversion may fail due to invalid depth information.
.. literalinclude:: ../../examples/exam_convert.py
:lines: 27-42
Before Conversion:
.. image:: _static/convert_single_before.png
After Conversion:
.. image:: _static/convert_single_after.png
**Convert RectGraspGroup to GraspGroup.**
.. literalinclude:: ../../examples/exam_convert.py
:lines: 44-56
Before Conversion:
.. image:: _static/convert_rect_before.png
After Conversion:
.. image:: _static/convert_rect_after.png
Convert 6d format to rectangle format
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. note:: Grasp to RectGrasp conversion is not applicable as only very few 6d grasp can be converted to rectangle grasp.
.. literalinclude:: ../../examples/exam_convert.py
:lines: 58-
Before Conversion:
.. image:: _static/convert_6d_before.png
After Conversion:
.. image:: _static/convert_6d_after.png

View File

@@ -0,0 +1,73 @@
.. _example_eval:
Evaluation
==========
Data Preparation
^^^^^^^^^^^^^^^^
The first step of evaluation is to prepare your own results.
You need to run your code and generate a `GraspGroup` for each image in each scene.
Then call the `save_npy` function of `GraspGroup` to dump the results.
To generate a `GraspGroup` and save it, you can directly input a 2D numpy array for the `GraspGroup` class:
::
gg=GraspGroup(np.array([[score_1, width_1, height_1, depth_1, rotation_matrix_1(9), translation_1(3), object_id_1],
[score_2, width_2, height_2, depth_2, rotation_matrix_2(9), translation_2(3), object_id_2],
...,
[score_N, width_N, height_N, depth_N, rotation_matrix_N(9), translation_N(3), object_id_N]]
))
gg.save_npy(save_path)
where your algorithm predicts N grasp poses for an image. For the `object_id`, you can simply input `0`. For the meaning of other entries, you should refer to the doc for Grasp Label Format-API Loaded Labels
The file structure of dump folder should be as follows:
::
|-- dump_folder
|-- scene_0100
| |-- kinect
| | |
| | --- 0000.npy to 0255.npy
| |
| --- realsense
| |
| --- 0000.npy to 0255.npy
|
|-- scene_0101
|
...
|
--- scene_0189
You can choose to generate dump files for only one camera, there will be no error for doing that.
Evaluation API
^^^^^^^^^^^^^^
Get GraspNetEval instances.
.. literalinclude:: ../../examples/exam_eval.py
:lines: 4-17
Evaluate A Single Scene
-----------------------
.. literalinclude:: ../../examples/exam_eval.py
:lines: 19-23
Evaluate All Scenes
-------------------
.. literalinclude:: ../../examples/exam_eval.py
:lines: 25-27
Evaluate 'Seen' Split
---------------------
.. literalinclude:: ../../examples/exam_eval.py
:lines: 29-31

View File

@@ -0,0 +1,26 @@
.. _example_generate_rectangle_labels:
Generating Rectangle Grasp Labels
=================================
You can generate the rectangle grasp labels by yourself.
Import necessary libs:
.. literalinclude:: ../../examples/exam_generate_rectangle_grasp.py
:lines: 4-11
Setup how many processes to use in generating the labels.
.. literalinclude:: ../../examples/exam_generate_rectangle_grasp.py
:lines: 13-15
The function to generate labels.
.. literalinclude:: ../../examples/exam_generate_rectangle_grasp.py
:lines: 17-31
Run the function for each scene and camera.
.. literalinclude:: ../../examples/exam_generate_rectangle_grasp.py
:lines: 33-52

View File

@@ -0,0 +1,30 @@
.. _example_loadGrasp:
Loading Grasp Labels
====================
Both `6d` and `rect` format labels can be loaded.
First, import relative libs.
.. literalinclude:: ../../examples/exam_loadGrasp.py
:lines: 4-7
Then, get a GraspNet instance and setup parameters.
.. literalinclude:: ../../examples/exam_loadGrasp.py
:lines: 11-19
Load GraspLabel in `6d` format and visulize the result.
.. literalinclude:: ../../examples/exam_loadGrasp.py
:lines: 21-29
.. image:: _static/6d_example.png
Load GraspLabel in `rect` format and visulize the result.
.. literalinclude:: ../../examples/exam_loadGrasp.py
:lines: 31-40
.. image:: _static/rect_example.png

View File

@@ -0,0 +1,112 @@
.. _example_nms:
Apply NMS on Grasps
===================
Get a GraspNet instance.
.. literalinclude:: ../../examples/exam_nms.py
:lines: 4-19
Loading and visualizing grasp lables before NMS.
.. literalinclude:: ../../examples/exam_nms.py
:lines: 21-29
::
6d grasp:
----------
Grasp Group, Number=90332:
Grasp: score:0.9000000357627869, width:0.11247877031564713, height:0.019999999552965164, depth:0.029999999329447746, translation:[-0.09166837 -0.16910084 0.39480919]
rotation:
[[-0.81045675 -0.57493848 0.11227506]
[ 0.49874267 -0.77775514 -0.38256073]
[ 0.30727136 -0.25405255 0.91708326]]
object id:66
Grasp: score:0.9000000357627869, width:0.10030215978622437, height:0.019999999552965164, depth:0.019999999552965164, translation:[-0.09166837 -0.16910084 0.39480919]
rotation:
[[-0.73440629 -0.67870212 0.0033038 ]
[ 0.64608938 -0.70059127 -0.3028869 ]
[ 0.20788456 -0.22030747 0.95302087]]
object id:66
Grasp: score:0.9000000357627869, width:0.08487851172685623, height:0.019999999552965164, depth:0.019999999552965164, translation:[-0.10412319 -0.13797761 0.38312319]
rotation:
[[ 0.03316294 0.78667939 -0.61647028]
[-0.47164679 0.55612743 0.68430364]
[ 0.88116372 0.26806271 0.38947764]]
object id:66
......
Grasp: score:0.9000000357627869, width:0.11909123510122299, height:0.019999999552965164, depth:0.019999999552965164, translation:[-0.05140382 0.11790846 0.48782501]
rotation:
[[-0.71453273 0.63476181 -0.2941435 ]
[-0.07400083 0.3495101 0.93400562]
[ 0.69567728 0.68914449 -0.20276351]]
object id:14
Grasp: score:0.9000000357627869, width:0.10943549126386642, height:0.019999999552965164, depth:0.019999999552965164, translation:[-0.05140382 0.11790846 0.48782501]
rotation:
[[ 0.08162415 0.4604325 -0.88393396]
[-0.52200603 0.77526748 0.3556262 ]
[ 0.84902728 0.4323912 0.30362913]]
object id:14
Grasp: score:0.9000000357627869, width:0.11654743552207947, height:0.019999999552965164, depth:0.009999999776482582, translation:[-0.05140382 0.11790846 0.48782501]
rotation:
[[-0.18380146 0.39686993 -0.89928377]
[-0.61254776 0.66926688 0.42055583]
[ 0.76876676 0.62815309 0.12008961]]
object id:14
------------
.. image:: _static/before_nms.png
Apply nms to GraspGroup and visualizing the result.
.. literalinclude:: ../../examples/exam_nms.py
:lines: 31-38
::
grasp after nms:
----------
Grasp Group, Number=358:
Grasp: score:1.0, width:0.11948642134666443, height:0.019999999552965164, depth:0.03999999910593033, translation:[-0.00363996 0.03692623 0.3311775 ]
rotation:
[[ 0.32641056 -0.8457799 0.42203382]
[-0.68102902 -0.52005678 -0.51550031]
[ 0.65548128 -0.11915252 -0.74575269]]
object id:0
Grasp: score:1.0, width:0.12185929715633392, height:0.019999999552965164, depth:0.009999999776482582, translation:[-0.03486454 0.08384828 0.35117128]
rotation:
[[-0.00487804 -0.8475557 0.53068405]
[-0.27290785 -0.50941664 -0.81609803]
[ 0.96202785 -0.14880882 -0.22881967]]
object id:0
Grasp: score:1.0, width:0.04842342436313629, height:0.019999999552965164, depth:0.019999999552965164, translation:[0.10816982 0.10254505 0.50272578]
rotation:
[[-0.98109186 -0.01696888 -0.19279723]
[-0.1817532 0.42313483 0.88765001]
[ 0.06651681 0.90590769 -0.41821831]]
object id:20
......
Grasp: score:0.9000000357627869, width:0.006192661356180906, height:0.019999999552965164, depth:0.009999999776482582, translation:[0.0122985 0.29616502 0.53319722]
rotation:
[[-0.26423979 0.39734706 0.87880182]
[-0.95826042 -0.00504095 -0.28585231]
[-0.10915259 -0.91765451 0.38209397]]
object id:46
Grasp: score:0.9000000357627869, width:0.024634981527924538, height:0.019999999552965164, depth:0.009999999776482582, translation:[0.11430283 0.18761221 0.51991153]
rotation:
[[-0.17379239 -0.96953499 0.17262182]
[-0.9434278 0.11365268 -0.31149188]
[ 0.28238329 -0.2169912 -0.93443805]]
object id:70
Grasp: score:0.9000000357627869, width:0.03459500893950462, height:0.019999999552965164, depth:0.009999999776482582, translation:[0.02079188 0.11184558 0.50796509]
rotation:
[[ 0.38108557 -0.27480939 0.88275337]
[-0.92043257 -0.20266907 0.33425891]
[ 0.08704928 -0.93989623 -0.33017775]]
object id:20
----------
.. image:: _static/after_nms.png

View File

@@ -0,0 +1,39 @@
.. _example_vis:
Visualization of Dataset
========================
Get a GraspNet instance.
.. literalinclude:: ../../examples/exam_vis.py
:lines: 7-14
Show grasp labels on a object.
.. literalinclude:: ../../examples/exam_vis.py
:lines: 16-17
.. image:: _static/vis_single.png
Show 6D poses of objects in a scene.
.. literalinclude:: ../../examples/exam_vis.py
:lines: 19-20
.. image:: _static/vis_6d.png
Show Rectangle grasp labels in a scene.
.. literalinclude:: ../../examples/exam_vis.py
:lines: 22-23
.. image:: _static/vis_rect.png
Show 6D grasp labels in a scene.
.. literalinclude:: ../../examples/exam_vis.py
:lines: 25-26
.. image:: _static/vis_grasp.png

View File

@@ -0,0 +1,178 @@
.. grasp_format:
Grasp Label Format
==================
Raw Label Format
----------------
The raw label is composed of two parts, i.e. labels for all grasp candidates on each object and collision masks for each scene.
Labels on Objects
^^^^^^^^^^^^^^^^^
The raw label on each object is a list of numpy arrays.
::
>>> import numpy as np
>>> l = np.load('000_labels.npz') # GRASPNET_ROOT/grasp_label/000_labels.npz
>>> l.files
['points', 'offsets', 'collision', 'scores']
>>> l['points'].shape
(3459, 3)
>>> l['offsets'].shape
(3459, 300, 12, 4, 3)
>>> l['collision'].shape
(3459, 300, 12, 4)
>>> l['collision'].dtype
dtype('bool')
>>> l['scores'].shape
(3459, 300, 12, 4)
>>> l['scores'][0][0][0][0]
-1.0
- 'points' records the grasp center point coordinates in model frame.
- 'offsets' records the in-plane rotation, depth and width of the gripper respectively in the last dimension.
- 'collision' records the bool mask for if the grasp pose collides with the model.
- 'scores' records the minimum coefficient of friction between the gripper and object to achieve a stable grasp.
.. note::
In the raw label, the **lower** score the grasp has, the **better** it is. However, -1.0 score means the grasp pose is totally not acceptable.
300, 12, 4 denote view id, in-plane rotation id and depth id respectively. The views are defined here in graspnetAPI/utils/utils.py.
.. literalinclude:: ../../graspnetAPI/utils/utils.py
:lines: 51-58
:linenos:
Collision Masks on Each Scene
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Collision mask on each scene is a list of numpy arrays.
::
>>> import numpy as np
>>> c = np.load('collision_labels.npz') # GRASPNET_ROOT/collision_label/scene_0000/collision_labels.npz
>>> c.files
['arr_0', 'arr_4', 'arr_5', 'arr_2', 'arr_3', 'arr_7', 'arr_1', 'arr_8', 'arr_6']
>>> c['arr_0'].shape
(487, 300, 12, 4)
>>> c['arr_0'].dtype
dtype('bool')
>>> c['arr_0'][10][20][3]
array([ True, True, True, True])
'arr_i' is the collision mask for the `i` th object in the `object_id_list.txt` for each scene whose shape is (num_points, 300, 12, 4).
num_points, 300, 12, 4 denote the number of points in the object, view id, in-plane rotation id and depth id respectively.
Users can refer to :py:func:`graspnetAPI.GraspNet.loadGrasp` for more details of how to use the labels.
API Loaded Labels
-----------------
Dealing with the raw labels are time-consuming and need high familiarity with graspnet.
So the API also provides an easy access to the labels.
By calling :py:func:`graspnetAPI.GraspNet.loadGrasp`, users can get all the positive grasp labels in a scene with their parameters and scores.
There are totally four kinds of data structures for loaded grasp labels: **Grasp**, **GraspGroup**, **RectGrasp** and **RectGraspGroup**.
The internal data format of each class is a numpy array which is more efficient than the Python list.
Their definitions are given in grasp.py
Example Labels
^^^^^^^^^^^^^^
Before looking into the details, an example is given below.
Loading a GraspGroup instance.
.. literalinclude:: ../../examples/exam_grasp_format.py
:lines: 1-27
Users can access elements by index or slice.
.. literalinclude:: ../../examples/exam_grasp_format.py
:lines: 29-35
Each element of GraspGroup is a Grasp instance.
The properties of Grasp can be accessed via provided methods.
.. literalinclude:: ../../examples/exam_grasp_format.py
:lines: 37-46
RectGrasp is the class for rectangle grasps. The format is different from Grasp.
But the provided APIs are similar.
.. literalinclude:: ../../examples/exam_grasp_format.py
:lines: 49-65
6D Grasp
^^^^^^^^
Actually, 17 float numbers are used to define a general 6d grasp.
The width, height, depth, score and attached object id are also part of the definition.
.. note::
In the loaded label, the **higher** score the grasp has, the **better** it is which is different from raw labels. Actually, score = 1.1 - raw_score (which is the coefficient of friction)
.. literalinclude:: ../../graspnetAPI/graspnet.py
:lines: 635-637
:emphasize-lines: 2
The detailed defition of each parameter is shown in the figure.
.. image:: _static/grasp_definition.png
.. literalinclude:: ../../graspnetAPI/grasp.py
:lines: 14-36
6D Grasp Group
^^^^^^^^^^^^^^
Usually, there are a lot of grasps in a scene, :py:class:`GraspGroup` is a class for these grasps.
Compared with :py:class:`Grasp`, :py:class:`GraspGroup` contains a 2D numpy array, the additional dimension is the index for each grasp.
.. literalinclude:: ../../graspnetAPI/grasp.py
:lines: 201-218
Common operations on a list such as indexing, slicing and sorting are implemented.
Besides, one important function is that users can **dump** a GraspGroup into a numpy file and **load** it in another program by calling :py:func:`GraspGroup.save_npy` and :py:func:`GraspGroup.from_npy`.
Rectangle Grasp
^^^^^^^^^^^^^^^
7 float numbers are used to define a general rectangle grasp, i.e. the center point, the open point, height, score and the attached object id.
The detailed definition of each parameter is shown in the figure above and below and the coordinates for center point and open point are in the pixel frame.
.. image:: _static/rect_grasp_definition.png
.. literalinclude:: ../../graspnetAPI/grasp.py
:lines: 553-572
Rectangle Grasp Group
^^^^^^^^^^^^^^^^^^^^^
The format for :py:class:`RectGraspGroup` is similar to that of :py:class:`RectGrasp` and :py:class:`GraspGroup`.
.. literalinclude:: ../../graspnetAPI/grasp.py
:lines: 752-769
.. note::
We recommend users to access and modify the labels by provided functions although users can also manipulate the data directly but it is **Not Recommended**.
Please refer to the Python API for more details.
Grasp and GraspGroup Transformation
-----------------------------------
Users can transform a Grasp or GraspGroup giving a 4x4 matrix.
.. literalinclude:: ../../examples/exam_grasp_format.py
:lines: 67-95
.. image:: _static/transformation.png

View File

@@ -0,0 +1,46 @@
graspnetAPI package
===================
Subpackages
-----------
.. toctree::
:maxdepth: 4
graspnetAPI.utils
Submodules
----------
graspnetAPI.grasp module
------------------------
.. automodule:: graspnetAPI.grasp
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.graspnet module
---------------------------
.. automodule:: graspnetAPI.graspnet
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.graspnet\_eval module
---------------------------------
.. automodule:: graspnetAPI.graspnet_eval
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: graspnetAPI
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,54 @@
graspnetAPI.utils.dexnet.grasping.meshpy package
================================================
Submodules
----------
graspnetAPI.utils.dexnet.grasping.meshpy.mesh module
----------------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy.mesh
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.dexnet.grasping.meshpy.obj\_file module
---------------------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy.obj_file
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.dexnet.grasping.meshpy.sdf module
---------------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy.sdf
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.dexnet.grasping.meshpy.sdf\_file module
---------------------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy.sdf_file
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.dexnet.grasping.meshpy.stable\_pose module
------------------------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy.stable_pose
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,70 @@
graspnetAPI.utils.dexnet.grasping package
=========================================
Subpackages
-----------
.. toctree::
:maxdepth: 4
graspnetAPI.utils.dexnet.grasping.meshpy
Submodules
----------
graspnetAPI.utils.dexnet.grasping.contacts module
-------------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.contacts
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.dexnet.grasping.grasp module
----------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.grasp
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.dexnet.grasping.grasp\_quality\_config module
---------------------------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.grasp_quality_config
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.dexnet.grasping.grasp\_quality\_function module
-----------------------------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.grasp_quality_function
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.dexnet.grasping.graspable\_object module
----------------------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.graspable_object
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.dexnet.grasping.quality module
------------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.grasping.quality
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: graspnetAPI.utils.dexnet.grasping
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,38 @@
graspnetAPI.utils.dexnet package
================================
Subpackages
-----------
.. toctree::
:maxdepth: 4
graspnetAPI.utils.dexnet.grasping
Submodules
----------
graspnetAPI.utils.dexnet.abstractstatic module
----------------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.abstractstatic
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.dexnet.constants module
-----------------------------------------
.. automodule:: graspnetAPI.utils.dexnet.constants
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: graspnetAPI.utils.dexnet
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,86 @@
graspnetAPI.utils package
=========================
Subpackages
-----------
.. toctree::
:maxdepth: 4
graspnetAPI.utils.dexnet
Submodules
----------
graspnetAPI.utils.config module
-------------------------------
.. automodule:: graspnetAPI.utils.config
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.eval\_utils module
------------------------------------
.. automodule:: graspnetAPI.utils.eval_utils
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.pose module
-----------------------------
.. automodule:: graspnetAPI.utils.pose
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.rotation module
---------------------------------
.. automodule:: graspnetAPI.utils.rotation
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.trans3d module
--------------------------------
.. automodule:: graspnetAPI.utils.trans3d
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.utils module
------------------------------
.. automodule:: graspnetAPI.utils.utils
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.vis module
----------------------------
.. automodule:: graspnetAPI.utils.vis
:members:
:undoc-members:
:show-inheritance:
graspnetAPI.utils.xmlhandler module
-----------------------------------
.. automodule:: graspnetAPI.utils.xmlhandler
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: graspnetAPI.utils
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,48 @@
.. graspnetAPI documentation master file, created by
sphinx-quickstart on Tue Nov 3 13:04:51 2020.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to graspnetAPI's documentation!
=======================================
.. toctree::
:maxdepth: 2
:caption: Contents:
about
install
grasp_format
Examples
=========
.. toctree::
:maxdepth: 1
:caption: Examples
example_check_data
example_generate_rectangle_labels
example_loadGrasp
example_vis
example_nms
example_convert
example_eval
Python API
==========
.. toctree::
:maxdepth: 1
:caption: Modules
graspnetAPI
graspnetAPI.utils
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View File

@@ -0,0 +1,61 @@
Installation
============
.. note::
Only Python 3 on Linux is supported.
Prerequisites
^^^^^^^^^^^^^
Python version under 3.6 is not tested.
Dataset
^^^^^^^
Download
--------
Download the dataset at https://graspnet.net/datasets.html
Unzip
-----
Unzip the files as shown in https://graspnet.net/datasets.html.
Rectangle Grasp Labels
----------------------
Rectangle grasp labels are optional if you need labels in this format.
You can both generate the labels or download the file_.
If you want to generate the labels by yourself, you may refer to :ref:`example_generate_rectangle_labels`.
.. note::
Generating rectangle grasp labels may take a long time.
After generating the labels or unzipping the labels, you need to run copy_rect_labels.py_ to copy rectangle grasp labels to corresponding folders.
.. _copy_rect_labels.py: https://github.com/graspnet/graspnetAPI/blob/master/copy_rect_labels.py
.. _file: https://graspnet.net/datasets.html
Dexnet Model Cache
------------------
Dexnet model cache is optional without which the evaluation will be much slower(about 10x time slower).
You can both download the file or generate it by yourself by running gen_pickle_dexmodel.py_(recommended).
.. _gen_pickle_dexmodel.py: https://github.com/graspnet/graspnetAPI/blob/master/gen_pickle_dexmodel.py
Install API
^^^^^^^^^^^
You may install using pip::
pip install graspnetAPI
You can also install from source::
git clone https://github.com/graspnet/graspnetAPI.git
cd graspnetAPI/
pip install .

View File

@@ -0,0 +1,7 @@
graspnetAPI
===========
.. toctree::
:maxdepth: 4
graspnetAPI