PointNetGPD使用手册

news2025/1/13 17:47:07

1.创建环境+配置环境变量

mkdir -p $HOME/code/
cd $HOME/code/
 

- Set environment variable `PointNetGPD_FOLDER` in your `$HOME/.bashrc` file.
export PointNetGPD_FOLDER=$HOME/code/PointNetGPD
 

2.安装

1. Install `pcl-tools` via `sudo apt install pcl-tools`.
2. An example for create a virtual environment: `conda create -n pointnetgpd python=3.10 numpy ipython matplotlib opencv mayavi -c conda-forge`
3. Make sure in your Python environment do not have same package named ```meshpy``` or ```dexnet```.
4. Install PyTorch: https://pytorch.org/get-started/locally/

3.项目

1. Clone this repository:
cd $HOME/code
git clone https://github.com/lianghongzhuo/PointNetGPD.git
 

2. Install our requirements in `requirements.txt`
    cd $PointNetGPD_FOLDER
    pip install -r requirements.txt

3. Install our modified meshpy (Modify from [Berkeley Automation Lab: meshpy](https://github.com/BerkeleyAutomation/meshpy))
    cd $PointNetGPD_FOLDER/meshpy
    python setup.py develop
 

4. Install our modified dex-net (Modify from [Berkeley Automation Lab: dex-net](https://github.com/BerkeleyAutomation/dex-net))
    cd $PointNetGPD_FOLDER/dex-net
    python setup.py develop

5. Modify the gripper configurations to your own gripper
    vim $PointNetGPD_FOLDER/dex-net/data/grippers/robotiq_85/params.json

4.数据集

1.下载作者生成好的数据集: https://tams.informatik.uni-hamburg.de/research/datasets/PointNetGPD_grasps_dataset.zip
2.修改文件夹名字为`ycb_grasp`并移动到`$PointNetGPD_FOLDER/PointNetGPD/data/`

4.1 自己生成数据集

1. 下载YCB数据集:(http://ycb-benchmarks.s3-website-us-east-1.amazonaws.com/).
1.1 用命令下载数据集(https://github.com/lianghongzhuo/ycb-tools).
    cd $PointNetGPD_FOLDER/data
    git clone https://github.com/lianghongzhuo/ycb-tools
    cd ycb-tools
    python download_ycb_dataset.py rgbd_512

2. 数据集里内容格式:Manage your dataset at: `$PointNetGPD_FOLDER/PointNetGPD/data`
    Every object should have a folder, structure like this:
    ```
    ├002_master_chef_can
    |└── google_512k
    |    ├── nontextured.obj (generated by pcl-tools)
    |    ├── nontextured.ply
    |    ├── nontextured.sdf (generated by SDFGen)
    |└── rgbd
    |    ├── *.jpg
    |    ├── *.h5
    |    ├── ...
    ├003_cracker_box
    └004_sugar_box
    ...
    ```
3. Install SDFGen from [GitHub](https://github.com/jeffmahler/SDFGen.git):
    cd $PointNetGPD_FOLDER
    git clone https://github.com/jeffmahler/SDFGen.git
    cd SDFGen && mkdir build && cd build && cmake .. && make

4. Install [Open3D](http://www.open3d.org/docs/latest/getting_started.html)
    pip install open3d

5. Generate `nontextured.sdf` file and `nontextured.obj` file using `pcl-tools` and `SDFGen` by running:
    cd $PointNetGPD_FOLDER/dex-net/apps
    python read_file_sdf.py

6. Generate dataset by running the code:
    cd $PointNetGPD_FOLDER/dex-net/apps
    python generate-dataset-canny.py [prefix]
    where `[prefix]` is optional, it will add a prefix on the generated files.

5. 可视化结果

- Visualization grasps可视化抓取
    cd $PointNetGPD_FOLDER/dex-net/apps
    python read_grasps_from_file.py
    Note:
    - This file will visualize the grasps in `$PointNetGPD_FOLDER/PointNetGPD/data/ycb_grasp/` folder

- Visualization object normal可视化法线
    cd $PointNetGPD_FOLDER/dex-net/apps
    python Cal_norm.py
This code will check the norm calculated by `meshpy` and `pcl` library.

6.训练网络Training the network

1. YCB数据准备:
    cd $PointNetGPD_FOLDER/PointNetGPD/data

    Make sure you have the following files, The links to the dataset directory should add by yourself:
    ```
    ├── google2cloud.csv  (Transform from google_ycb model to ycb_rgbd model)
    ├── google2cloud.pkl  (Transform from google_ycb model to ycb_rgbd model)
    └── ycb_grasp  (generated grasps)
    ```

2.从RGBD图像中生成点云 you may change the number of process running in parallel if you use a shared host with others
    cd $PointNetGPD_FOLDER/PointNetGPD
    python ycb_cloud_generate.py
Note: Estimated running time at our `Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz` dual CPU with 56 Threads is 36 hours. Please also remove objects beyond the capacity of the gripper.

7. Run the experiments:

    cd $PointNetGPD_FOLDER/PointNetGPD
 

    Launch a tensorboard for monitoring
    tensorboard --log-dir ./assets/log --port 8080
 

    and run an experiment for 200 epoch
    python main_1v.py --epoch 200 --mode train --batch-size x (x>1)
 

    File name and corresponding experiment:
    ```
    main_1v.py        --- 1-viewed point cloud, 2 class——单视角点云+2类
    main_1v_mc.py     --- 1-viewed point cloud, 3 class——单视角点云+3类
    main_1v_gpd.py    --- 1-viewed point cloud, GPD——单视角点云+GPD
    main_fullv.py     --- Full point cloud, 2 class——整个点云+2类
    main_fullv_mc.py  --- Full point cloud, 3 class——整个点云+3类
    main_fullv_gpd.py --- Full point cloud, GPD——整个点云+GPD
    ```

For GPD experiments, you may change the input channel number by modifying `input_chann` in the experiment scripts(only 3 and 12 channels are available)

8. 使用训练的网络Using the trained network

1. Get UR5 robot state:

    Goal of this step is to publish a ROS parameter tell the environment whether the UR5 robot is at home position or not.


    cd $PointNetGPD_FOLDER/dex-net/apps
    python get_ur5_robot_state.py

2. Run perception code:
    This code will take depth camera ROS info as input, and gives a set of good grasp candidates as output.
    All the input, output messages are using ROS messages.

    cd $PointNetGPD_FOLDER/dex-net/apps
    python kinect2grasp.py

    arguments:
    -h, --help                 show this help message and exit
    --cuda                     using cuda for get the network result
    --gpu GPU                  set GPU number
    --load-model LOAD_MODEL    set witch model you want to use (rewrite by model_type, do not use this arg)
    --show_final_grasp         show final grasp using mayavi, only for debug, not working on multi processing
    --tray_grasp               not finished grasp type
    --using_mp                 using multi processing to sample grasps
    --model_type MODEL_TYPE    selet a model type from 3 existing models
    ```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在家当了几年废物,庆幸自己当初进了软件测试这行~

为什么会学习软件测试? 28岁了,仔细算一下6年了,工作了一年,没去工作就一直待在家,家里固定每个月给几千元,偶尔会都给一些,但依旧没钱,家里给我买了一套房子,出门300米…

【刷题之路Ⅱ】LeetCode 739. 每日温度

【刷题之路Ⅱ】LeetCode 739. 每日温度 一、题目描述二、解题1、方法1——暴力法1.1、思路分析1.2、代码实现 2、方法2——单调栈2.1、思路分析2.2、先将栈实现一下2.3、代码实现 一、题目描述 原题连接: 739. 每日温度 题目描述: 给定一个整数数组 tem…

ChatGPT 使用 拓展资料:吴恩达大咖 基于LangChain的LLM应用程序开发-1

ChatGPT 使用 拓展资料:吴恩达大咖 基于LangChain的LLM应用程序开发 基于LangChain的LLM应用程序开发 LangChain for LLM Application Development [https://www.deeplearning.ai/short-courses/langchain-for-llm-application-development/] 基于LangChain的LLM应用程序开发…

干货|SpringCloud之注册中心如何选用

SpringCloud的框架并不陌生了,在业内微服务领域的扛把子。今天来看一看如何根据业务需要,来选择合适的注册中心? 注册中心是微服务管理节点通信、核心配置的关键组件,从分布式多节点的前提下最主要要解决是就是分布式下的一致性问…

教你领取免费的亚马逊云服务服务器并搭建服务器环境的方法教程

本篇文章主要讲解,亚马逊新用户注册领取亚马逊免费服务器的详细操作流程方法,以及如何规避免费服务器到期后自动续费的问题解决办法。 作者:任聪聪 日期:2023年6月2日 前提材料准备 1.需要先准备好你的亚马逊账号注册所需的手机号、邮箱、vi…

18-Vue3中一些新的组件

目录 1、Fragment2、Teleport3、Suspense 1、Fragment 在Vue2中: 组件必须有一个根标签在Vue3中: 组件可以没有根标签, 内部会将多个标签包含在一个Fragment虚拟元素中好处: 减少标签层级, 减小内存占用 2、Teleport 什么是Teleport?—— Teleport 是一种能够将我…

一个开源的基于golang开发的企业级物联网平台

SagooIOT是一个基于golang开发的开源的企业级物联网基础开发平台。负责设备管理和协议数据管理,支持跨平台的物联网接入及管理方案,平台实现了物联网开发相关的基础功能,基于该功能可以快速的搭建起一整套的IOT相关的业务系统。旨在通过可复用…

测试4年,费时8个月,入职阿里,涨薪14K,可算是熬出头了····

前言 你的努力,终将成就无可替代的自己 本科毕业后就一直从事测试的工作,和多数人一样,最开始从事功能测试(所谓的点点点)的工作,看着自己的同学一步一步往上走,自己还是在原地踏步,…

java打jar包并包装成exe解压即用

1首先找到要加载的main方法类 public static void main(String[] args) { //创建该对象则调用构造方法,对象实现ActionListener则自动调用actionPerformed()方法new PicdealMain();}2.点击 idea:File->Project Struce…(快捷键…

MyBatis深入学习总结(1.0)

MyBatis总结 MyBatis入门操作 简介 原始jdbc操作(查询数据) 原始jdbc操作(插入数据) 原始jdbc操作的分析 原始jdbbc开发存在的问题如下: 数据库连接创建、释放频繁造成系统资源的浪费从而影响系统性能sql语句在代…

3年经验,面试测试开发岗25K都拿不到了吗?这么坑?

最近后台读者说自己最近在疯狂投简历,有的石沉大海,但还好不是全军覆没。前两天好不容易熬到了阿里的四面,跟我聊了一下,面试官拿哪些题为难了他? 前面几题还好,问的是有关JVM的一些问题,比如说…

一道Java经典面试题 99%都有可能做错

前言 最近在面试中遇到一个关于位运算的题目 如下图 请问这个aString打印值是多少 学过位运算我们都知道 9<<4位 用2进制表示就是0000 1001 如果按照我之前的算法就是 0000 10001 向左位运算4 得到 1001 0000 这个时候我们得到的值就是 12816 144 拿到144这个值我们再…

session.upload_progress文件包含漏洞

session.upload_progress文件包含漏洞 前言 之前学习了该漏洞&#xff0c;但是没有做笔记&#xff0c;导致容易遗忘。在此用一个题目来理解session.upload_progress漏洞 基础知识 session存储 我们在phpinfo可以看到session的存储路径&#xff1a; 以下是一些session在lin…

【Python文本处理】基于运动路线记录GPX的文件解析,GPX转SRT字幕文件(不需要安装三方库)

【Python文本处理】基于运动路线记录GPX的文件解析&#xff0c;GPX转SRT字幕文件&#xff08;不需要安装三方库&#xff09; 解析和转换 GPX文件格式 GPX文件本身其实就是坐标、海拔、时间、心率等综合性的xml文件 如图&#xff1a; 海拔&#xff1a;ele 时间&#xff1a;t…

【GTest】使用CMakeLitsts.txt构建Windows和Linux的跨平台GoogleTest项目(非常详细+亲测有效)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、…

00): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)

好久没有使用数据库&#xff0c; 连接数据库报上面的错误&#xff0c;尝试了网上的方法还是没有成功&#xff0c;思索之后想起之前手动关闭了mysql的服务&#xff0c;Windows启动时mysql服务不会自动启动&#xff0c;成功启动mysql服务后再次连接数据库&#xff0c;正常连接。 …

keil 使用问题总结

1. 编译报错 1.1 …\USER\stm32f10x.h(428): error: #67: expected a “}” ADC1_2_IRQn 18, /*!< ADC1 and ADC2 global Interrupt */*** Using Compiler V5.06 update 4 (build 422), folder: D:\keil_v537\install\ARM\ARM…

滴滴和华为5年,分享一下真实的划水经验....

先简单交代一下背景吧&#xff0c;某不知名 985 的本硕&#xff0c;17 年毕业加入华为&#xff0c;之后跳槽到了滴滴&#xff0c;一直从事软件测试的工作。之前没有实习经历&#xff0c;算是5年的工作经验吧。 这5年之间完成了一次晋升&#xff0c;换了一家公司&#xff0c;有…

朋友圈九宫格照片怎么做?一键图片分割

相信朋友们都看过这样发朋友圈的方式&#xff0c;一张图片发出九宫格的效果&#xff1a; 或者是在各大社交平台、引流平台&#xff0c;这种发图的方法已经屡见不鲜了&#xff0c;可当自己上网搜【图片分割】、【宫格切图】等等&#xff0c;要么就是要注册账号登录才能操作&…

大数据---聚类分析概述及聚类评估

聚类概述: 什么是聚类&#xff1f; 是把数据对象集合按照相似性划分成多个子集的过程。每个子集是一个簇&#xff08;cluster&#xff09;&#xff0c;分类的最终效果&#xff1a;使得簇中的对象彼此相似&#xff0c;但与其他簇中的对象相异。聚类是无监督学习&#xff0c;因…