PointNetGPD 代码复现,环境配置,结果展示

  • pointnetgpd 论文
    论文链接
  • 项目官方代码链接:
    原作者pointnetgpd代码链接
     原作者中相关的运行教程较少,环境配置说得也不够清楚。
  • pointnetgpd复现加注释代码链接:
    带中文注释的代码链接
     本人主要参考这个项目代码,其中代码加了很多中文注释,对环境的配置解释得相对清楚一些。
     分别在anaconda下配置python3与python2.7的环境,python3用来训练模型,python2.7主要用来结合ros发布抓取消息。
     其中尤为需要注意python-pcl、vtk、autolab-core包的安装版本,autolab-core在python2和python3下安装版本并不相同,python2下需要安装perception,python3将perception迁移到autolab-core中了。
     python-pcl安装参考Ubuntu安装python-pcl
    最终配置好的环境如下:

python3的环境(grasp)配置如下:

name: grasp
channels:
  - pytorch
  - defaults
dependencies:
  - _libgcc_mutex=0.1=main
  - blas=1.0=mkl
  - bzip2=1.0.8=h7b6447c_0
  - c-ares=1.18.1=h7f8727e_0
  - ca-certificates=2022.4.26=h06a4308_0
  - certifi=2021.10.8=py37h06a4308_2
  - cudatoolkit=10.2.89=hfd86e86_1
  - curl=7.82.0=h7f8727e_0
  - cython=0.29.28=py37h295c915_0
  - dbus=1.13.18=hb2f20db_0
  - double-conversion=3.1.5=he6710b0_1
  - eigen=3.3.7=hd09550d_1
  - expat=2.4.4=h295c915_0
  - ffmpeg=4.2.2=h20bf706_0
  - fontconfig=2.13.1=h6c09931_0
  - freetype=2.11.0=h70c0345_0
  - giflib=5.2.1=h7b6447c_0
  - gl2ps=1.4.2=h70c0345_1
  - glew=2.1.0=h295c915_3
  - glib=2.69.1=h4ff587b_1
  - gmp=6.2.1=h2531618_2
  - gnutls=3.6.15=he1e5248_0
  - gst-plugins-base=1.14.0=h8213a91_2
  - gstreamer=1.14.0=h28cd5cc_2
  - hdf4=4.2.13=h3ca952b_2
  - hdf5=1.10.6=hb1b8bf9_0
  - icu=58.2=he6710b0_3
  - intel-openmp=2021.4.0=h06a4308_3561
  - jpeg=9d=h7f8727e_0
  - jsoncpp=1.9.4=hff7bd54_2
  - krb5=1.19.2=hac12032_0
  - lame=3.100=h7b6447c_0
  - lcms2=2.12=h3be6417_0
  - ld_impl_linux-64=2.35.1=h7274673_9
  - libcurl=7.82.0=h0b77cf5_0
  - libedit=3.1.20210910=h7f8727e_0
  - libev=4.33=h7f8727e_1
  - libffi=3.3=he6710b0_2
  - libgcc-ng=9.1.0=hdf63c60_0
  - libgfortran-ng=7.5.0=ha8ba4b0_17
  - libgfortran4=7.5.0=ha8ba4b0_17
  - libglu=9.0.0=hf484d3e_1
  - libiconv=1.15=h63c8f33_5
  - libidn2=2.3.2=h7f8727e_0
  - libnetcdf=4.8.1=h42ceab0_1
  - libnghttp2=1.46.0=hce63b2e_0
  - libogg=1.3.5=h27cfd23_1
  - libopus=1.3.1=h7b6447c_0
  - libpng=1.6.37=hbc83047_0
  - libssh2=1.10.0=h8f2d780_0
  - libstdcxx-ng=9.1.0=hdf63c60_0
  - libtasn1=4.16.0=h27cfd23_0
  - libtheora=1.1.1=h7f8727e_3
  - libtiff=4.2.0=h85742a9_0
  - libunistring=0.9.10=h27cfd23_0
  - libuuid=1.0.3=h7f8727e_2
  - libuv=1.40.0=h7b6447c_0
  - libvorbis=1.3.7=h7b6447c_0
  - libvpx=1.7.0=h439df22_0
  - libwebp=1.2.2=h55f646e_0
  - libwebp-base=1.2.2=h7f8727e_0
  - libxcb=1.14=h7b6447c_0
  - libxml2=2.9.12=h74e7548_1
  - libzip=1.5.1=h8d318fa_1004
  - loguru=0.5.3=py37h06a4308_3
  - lz4-c=1.9.3=h295c915_1
  - mkl=2019.4=243
  - mkl-service=2.3.0=py37he8ac12f_0
  - mkl_fft=1.2.0=py37h23d657b_0
  - mkl_random=1.1.0=py37hd6b4f25_0
  - ncurses=6.3=h7f8727e_2
  - nettle=3.7.3=hbbd107a_1
  - openh264=2.1.1=h4ff587b_0
  - openssl=1.1.1o=h7f8727e_0
  - pcre=8.45=h295c915_0
  - pillow=9.0.1=py37h22f2fdc_0
  - proj=6.2.1=h05a3930_0
  - python=3.7.13=h12debd9_0
  - pytorch=1.10.0=py3.7_cuda10.2_cudnn7.6.5_0
  - pytorch-mutex=1.0=cuda
  - qt=5.9.7=h5867ecd_1
  - readline=8.1.2=h7f8727e_1
  - six=1.16.0=pyhd3eb1b0_1
  - sqlite=3.38.2=hc218d9a_0
  - tbb=2021.5.0=hd09550d_0
  - tk=8.6.11=h1ccaba5_0
  - torchaudio=0.10.0=py37_cu102
  - torchvision=0.11.0=py37_cu102
  - typing_extensions=4.1.1=pyh06a4308_0
  - utfcpp=3.2.1=h06a4308_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - x264=1!157.20191217=h7b6447c_0
  - xz=5.2.5=h7b6447c_0
  - zlib=1.2.12=h7f8727e_1
  - zstd=1.4.9=haebb681_0
  - pip:
    - absl-py==1.0.0
    - aiohttp==3.8.1
    - aiosignal==1.2.0
    - apptools==5.1.0
    - async-timeout==4.0.2
    - asynctest==0.13.0
    - attrs==21.4.0
    - autolab-core==1.1.1
    - backcall==0.2.0
    - bitarray==2.5.0
    - cached-property==1.5.2
    - cachetools==5.0.0
    - catkin-pkg==0.4.24
    - chardet==4.0.0
    - charset-normalizer==2.0.12
    - colorlog==6.6.0
    - configobj==5.0.6
    - cvxopt==1.3.0
    - cycler==0.11.0
    - decorator==5.1.1
    - defusedxml==0.7.1
    - dill==0.3.4
    - docutils==0.18.1
    - envisage==6.0.1
    - ffmpeg-python==0.2.0
    - filelock==3.6.0
    - fonttools==4.32.0
    - freetype-py==2.3.0
    - frozenlist==1.3.0
    - future==0.18.2
    - google-auth==2.6.6
    - google-auth-oauthlib==0.4.6
    - grpcio==1.46.0
    - h5py==3.6.0
    - idna==3.3
    - imageio==2.19.1
    - importlib-metadata==4.11.3
    - importlib-resources==5.7.1
    - ipython==7.33.0
    - jedi==0.18.1
    - joblib==1.1.0
    - jsonschema==4.5.1
    - kiwisolver==1.4.2
    - llvmlite==0.38.0
    - lxml==4.8.0
    - markdown==3.3.7
    - matplotlib==3.5.1
    - matplotlib-inline==0.1.3
    - mayavi==4.7.4
    - mock==4.0.3
    - mpmath==1.2.1
    - msgpack==1.0.3
    - multidict==6.0.2
    - multiprocess==0.70.12.2
    - nearpy==1.0.0
    - netifaces==0.11.0
    - networkx==2.2
    - nose==1.3.7
    - numba==0.55.1
    - numpy==1.21.6
    - oauthlib==3.2.0
    - omegaconf==1.4.1
    - opencv-python==4.5.5.64
    - packaging==21.3
    - pandas==1.3.5
    - parso==0.8.3
    - pcl==0.0.0.post1
    - pdqhash==0.2.2
    - pexpect==4.8.0
    - pickleshare==0.7.5
    - pip==22.0.4
    - plyfile==0.7.4
    - prompt-toolkit==3.0.29
    - protobuf==3.20.1
    - ptyprocess==0.7.0
    - pyasn1==0.4.8
    - pyasn1-modules==0.2.8
    - pycollada==0.7.2
    - pyface==7.4.1
    - pyglet==1.5.23
    - pygments==2.12.0
    - pyhull==2015.2.1
    - pyopengl==3.1.0
    - pyparsing==3.0.8
    - pyquaternion==0.9.9
    - pyrender==0.1.45
    - pyrsistent==0.18.1
    - pyserial==3.5
    - python-dateutil==2.8.2
    - pytorch-lightning==0.7.1
    - pytz==2022.1
    - pywavelets==1.3.0
    - pyyaml==6.0
    - requests==2.27.1
    - requests-oauthlib==1.3.1
    - rospkg==1.4.0
    - rsa==4.8
    - rtree==1.0.0
    - ruamel-yaml==0.17.21
    - ruamel-yaml-clib==0.2.6
    - scikit-image==0.19.2
    - scikit-learn==1.0.2
    - scipy==1.1.0
    - setproctitle==1.2.3
    - setuptools==59.5.0
    - shapely==1.8.2
    - sklearn==0.0
    - svg-path==6.0
    - sympy==1.10.1
    - tensorboard==2.9.0
    - tensorboard-data-server==0.6.1
    - tensorboard-plugin-wit==1.8.1
    - tensorboardx==1.6
    - threadpoolctl==3.1.0
    - tifffile==2021.11.2
    - torch-tb-profiler==0.4.0
    - tqdm==4.64.0
    - traitlets==5.1.1
    - traits==6.3.2
    - traitsui==7.3.1
    - trimesh==3.12.0
    - urllib3==1.26.9
    - validators==0.19.0
    - visualization==1.0.0
    - vtk==8.1.2
    - wcwidth==0.2.5
    - werkzeug==2.1.2
    - wslink==1.6.4
    - xxhash==3.0.0
    - yarl==1.7.2
    - zipp==3.8.0
prefix: /home/gjw/anaconda3/envs/grasp

python2的环境(py27)配置如下:

name: py27
channels:
  - pytorch
  - defaults
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - apptools=5.1.0=pyhd3eb1b0_0
  - backports=1.1=pyhd3eb1b0_0
  - backports.functools_lru_cache=1.6.4=pyhd3eb1b0_0
  - backports_abc=0.5=py_1
  - blas=1.0=mkl
  - bzip2=1.0.8=h7b6447c_0
  - c-ares=1.18.1=h7f8727e_0
  - ca-certificates=2022.4.26=h06a4308_0
  - certifi=2020.6.20=pyhd3eb1b0_3
  - cffi=1.14.0=py27he30daa8_1
  - cloudpickle=1.2.2=py_0
  - configobj=5.0.6=py27_1
  - cuda100=1.0=0
  - curl=7.82.0=h7f8727e_0
  - cvxopt=1.2.0=py27hfa32c7d_0
  - cycler=0.10.0=py27_0
  - cytoolz=0.10.1=py27h7b6447c_0
  - dask-core=1.2.2=py_0
  - dbus=1.13.18=hb2f20db_0
  - decorator=5.1.0=pyhd3eb1b0_0
  - enum34=1.1.6=py27_1
  - envisage=5.0.0=pyhd3eb1b0_0
  - expat=2.4.4=h295c915_0
  - fontconfig=2.13.1=h6c09931_0
  - freetype=2.11.0=h70c0345_0
  - funcsigs=1.0.2=py27_0
  - functools32=3.2.3.2=py27_1
  - future=0.18.2=py27_0
  - futures=3.3.0=py27_0
  - geos=3.8.0=he6710b0_0
  - glib=2.69.1=h4ff587b_1
  - glpk=4.65=h3ceedfd_2
  - gmp=6.2.1=h2531618_2
  - gsl=2.4=h14c3975_4
  - gst-plugins-base=1.14.0=h8213a91_2
  - gstreamer=1.14.0=h28cd5cc_2
  - h5py=2.9.0=py27h7918eee_0
  - hdf4=4.2.13=h3ca952b_2
  - hdf5=1.10.4=hb1b8bf9_0
  - icu=58.2=he6710b0_3
  - imageio=2.6.1=py27_0
  - intel-openmp=2022.0.1=h06a4308_3633
  - jpeg=9e=h7f8727e_0
  - jsoncpp=1.9.4=hff7bd54_2
  - kiwisolver=1.1.0=py27he6710b0_0
  - krb5=1.19.2=hac12032_0
  - libcurl=7.82.0=h0b77cf5_0
  - libedit=3.1.20210910=h7f8727e_0
  - libev=4.33=h7f8727e_1
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_0
  - libgfortran-ng=7.5.0=ha8ba4b0_17
  - libgfortran4=7.5.0=ha8ba4b0_17
  - libgomp=11.2.0=h1234567_0
  - libnetcdf=4.6.1=h11d0813_2
  - libnghttp2=1.46.0=hce63b2e_0
  - libogg=1.3.5=h27cfd23_1
  - libpng=1.6.37=hbc83047_0
  - libssh2=1.10.0=h8f2d780_0
  - libstdcxx-ng=11.2.0=h1234567_0
  - libtheora=1.1.1=h7f8727e_3
  - libtiff=4.1.0=h2733197_0
  - libuuid=1.0.3=h7f8727e_2
  - libvorbis=1.3.7=h7b6447c_0
  - libxcb=1.15=h7f8727e_0
  - libxml2=2.9.12=h74e7548_2
  - linecache2=1.0.0=py_1
  - lz4-c=1.8.1.2=h14c3975_0
  - mayavi=4.6.2=py27hcf37d21_4
  - metis=5.1.0=hf484d3e_4
  - mkl=2020.2=256
  - mkl-service=2.3.0=py27he904b0f_0
  - mkl_fft=1.0.15=py27ha843d7b_0
  - mkl_random=1.1.0=py27hd6b4f25_0
  - ncurses=6.3=h7f8727e_2
  - networkx=2.2=py27_1
  - ninja=1.10.2=h06a4308_5
  - ninja-base=1.10.2=hd09550d_5
  - olefile=0.46=py27_0
  - openssl=1.1.1o=h7f8727e_0
  - pandas=0.24.2=py27he6710b0_0
  - pcre=8.45=h295c915_0
  - pip=19.3.1=py27_0
  - pycparser=2.20=py_2
  - pyface=6.1.2=py27_0
  - pygments=2.5.2=py_0
  - pyparsing=2.4.7=pyhd3eb1b0_0
  - pyqt=5.9.2=py27h05f1152_2
  - python=2.7.18=ha1903f6_2
  - python-dateutil=2.8.2=pyhd3eb1b0_0
  - pytorch=1.0.0=py2.7_cuda10.0.130_cudnn7.4.1_1
  - pytz=2021.3=pyhd3eb1b0_0
  - pywavelets=1.0.3=py27hdd07704_1
  - qt=5.9.7=h5867ecd_1
  - readline=8.1.2=h7f8727e_1
  - scikit-image=0.14.2=py27he6710b0_0
  - scikit-learn=0.20.3=py27hd81dba3_0
  - scipy=1.2.1=py27h7c811a0_0
  - setuptools=44.0.0=py27_0
  - shapely=1.6.4=py27hc5e8c75_0
  - singledispatch=3.7.0=pyhd3eb1b0_1001
  - sip=4.19.8=py27hf484d3e_0
  - six=1.16.0=pyhd3eb1b0_1
  - sqlite=3.38.3=hc218d9a_0
  - subprocess32=3.5.4=py27h7b6447c_0
  - suitesparse=5.2.0=h9e4a6bb_0
  - tbb=2021.5.0=hd09550d_0
  - tk=8.6.11=h1ccaba5_1
  - toolz=0.10.0=pyhd3eb1b0_0
  - tornado=5.1.1=py27h7b6447c_0
  - traceback2=1.4.0=py27_0
  - traits=5.2.0=py27h7b6447c_0
  - traitsui=7.1.1=pyhd3eb1b0_0
  - unittest2=1.1.0=py27_0
  - vtk=8.2.0=py27haa4764d_200
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.2.5=h7f8727e_1
  - yaml=0.2.5=h7b6447c_0
  - zlib=1.2.12=h7f8727e_2
  - zstd=1.3.7=h0b5b093_0
  - pip:
    - autolab-core==0.0.4
    - autolab-perception==0.0.3
    - backports-shutil-get-terminal-size==1.0.0
    - catkin-pkg==0.5.0
    - colorlog==4.0.2
    - docutils==0.18.1
    - easydict==1.9
    - ipython==5.5.0
    - ipython-genutils==0.2.0
    - keras==2.9.0
    - llvmlite==0.31.0
    - matplotlib==2.2.0
    - nose==1.3.7
    - numba==0.31.0
    - numpy==1.16.1
    - pathlib2==2.3.7.post1
    - pexpect==4.8.0
    - pickleshare==0.7.5
    - pillow==6.2.2
    - progressbar2==3.55.0
    - prompt-toolkit==1.0.18
    - ptyprocess==0.7.0
    - pyassimp==4.1.3
    - pyopengl==3.1.6
    - pyserial==3.5
    - python-pcl==0.3.0rc1
    - python-utils==2.7.1
    - pyyaml==5.4.1
    - rospkg==1.4.0
    - scandir==1.10.0
    - scikit-video==1.1.11
    - simplegeneric==0.8.1
    - sklearn==0.0
    - torch==1.4.0
    - torchvision==0.5.0
    - tqdm==4.19.9
    - traitlets==4.3.3
    - typing==3.10.0.0
    - wcwidth==0.2.5
prefix: /home/gjw/anaconda3/envs/py27

最终运行程序如下:
1、启动realsense相机,发布点云消息。

roslaunch realsense2_camera demo_pointcloud.launch

原始点云

2、运行去除桌面点云程序

roslaunch point_cloud_process get_table_top_points.launch

过滤点云

3、python2虚拟环境中运行抓取生成程序

python kinect2grasp.py --model_type 500

 好的抓取
候选抓取

 得分最高的抓取
最好的抓取

复现过程中有问题可留言,本人尽力回答!!!!!

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 76
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 76
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值