news 2026/6/15 1:33:04

graspnet复现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
graspnet复现

GraspNet复现

本文详细记录了在 Windows 11 环境下复现 GraspNet 机械臂抓取项目的完整过程,包括环境配置、依赖安装、问题解决等关键步骤。

一、参考资料

  • Graspnet(一)——Windos11复现
  • 在WSL2上完美复现GraspNet并可视化
  • mujoco graspnet 仿真项目的复现记录

二、项目结构

manipulator_grasp/ ├── graspnet-baseline/ # GraspNet 抓取检测基线模型 │ ├── dataset/ # 数据集处理 │ ├── models/ # 深度学习模型 │ ├── pointnet2/ # PointNet++ 模块 │ ├── knn/ # KNN 模块 │ └── utils/ # 工具函数 ├── graspnetAPI/ # 抓取检测API │ └── utils/ # 工具函数 ├── manipulator_grasp/ # 机械臂抓取环境(核心) │ ├── arm/ # 机械臂相关 │ │ ├── assets/ # 机械臂模型资源 │ │ ├── controller/ # 控制器 │ │ ├── geometry/ # 几何计算 │ │ └── constants/ # 常量定义 │ └── env/ # 环境定义 ├── logs/ # 权重文件目录 │ ├── log_rs/ # RealSense 模型权重 │ │ └── checkpoint-rs.tar │ └── log_kn/ # Kinect 模型权重 │ └── checkpoint-kn.tar └── main.py # 主入口

三、环境配置(Windows 11)

3.1 CUDA 安装

1. 查看支持的 CUDA 版本

nvcc--version

2. 下载 CUDA Toolkit

访问 CUDA Toolkit 12.8 Downloads 下载对应版本。

本文选用:CUDA 12.8

3. CUDA 安装教程

参考:超详细 CUDA 安装与卸载教程

3.2 版本对应关系

查看 Python、PyTorch、CUDA 版本对应关系:版本对应关系速查表

本文选择:

  • CUDA 12.8
  • PyTorch 2.6
  • Python 3.11

3.3 Visual Studio 安装

下载并安装 Visual Studio 2019:

https://aka.ms/vs/16/release/vs_community.exe

四、源代码克隆

4.1 克隆主项目

gitclone https://gitee.com/chaomingsanhua/manipulator_grasp.gitcdmanipulator_grasp

4.2 克隆 GraspNet Baseline

gitclone https://github.com/graspnet/graspnet-baseline.gitcdgraspnet-baseline

4.3 克隆 GraspNet API

gitclone https://github.com/graspnet/graspnetAPI.git

重要:将graspnetAPI/graspnetAPI文件夹复制到manipulator_grasp目录下。

4.4 下载权重文件

下载预训练权重文件并放置在manipulator_grasp/logs/log_xx目录下:

  • checkpoint-rs.tar
  • checkpoint-kn.tar

五、虚拟环境创建

5.1 创建 Conda 环境

conda create-ngraspnetpython=3.11conda init conda activate graspnet

六、依赖安装

6.1 安装基础依赖

进入graspnet-baseline目录,修改requirements.txt,删除torch相关行(后续手动安装):

cdgraspnet-baseline pipinstall-rrequirements.txt

6.2 安装 PyTorch

pipinstalltorch==2.7.1 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

6.3 安装 Ninja(可选)

pipinstallninja

6.4 安装 PointNet++

cdpointnet2 python setup.pyinstall

安装成功后会看到相应的成功提示信息。

清理命令(如需重新安装):

pip uninstall pointnet2-y

6.5 安装 KNN

cdknn python setup.pyinstall

安装成功后会看到相应的成功提示信息。

6.6 安装 GraspNet API

进入graspnetAPI目录,先修改setup.py中的sklearnscikit-learn

cdgraspnetAPI pipinstall.

6.7 安装其他依赖

pipinstallspatialmath-python pipinstallroboticstoolbox-python pipinstallmodern_robotics pipinstallpandas==1.5.3

七、运行测试

7.1 运行 GraspNet Demo

执行graspnet-baseline下的 demo 文件:

python demo.py--checkpoint_pathlogs/log_rs/checkpoint-rs.tar

7.2 运行机械臂抓取环境

运行manipulator_grasp下的main.py

python main.py

八、常见问题解决

8.1 PointNet++ 编译警告

问题描述

执行python setup.py install时出现以下警告:

UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja. UserWarning: Error checking compiler version for cl: [WinError 2] 系统找不到指定的文件。

问题原因

  • ninja 未安装:PyTorch 默认使用 ninja 作为快速构建工具
  • cl.exe 路径未配置:Visual Studio 编译器路径未添加到环境变量

解决方案

方案一:安装 ninja(推荐)

pipinstallninja

方案二:使用 pip 安装

cdpointnet2 pipinstall.

验证

python-c"import pointnet2; print('pointnet2 imported successfully')"

8.2 KNN 编译链接错误

问题描述

执行python setup.py install时出现链接错误:

vision.obj : error LNK2001: 无法解析的外部符号 "void __cdecl knn_device(...)" vision.obj : error LNK2001: 无法解析的外部符号 "public: long * __cdecl at::TensorBase::data_ptr<long>(void)const " build\lib.win-amd64-cpython-311\knn_pytorch\knn_pytorch.cp311-win_amd64.pyd : fatal error LNK1120: 2 个无法解析的外部命令

问题原因

根本原因:Windows 上longint64_t类型不兼容

类型Windows 位数备注
long32位Windows 特有
int64_t64位跨平台标准

在 Linux/macOS 上,long通常是 64 位,所以不会出现此问题。

解决方案

修改文件 1:knn/src/knn.h

问题位置:第 24-26 行

修改前

float*ref_dev=ref.data<float>();float*query_dev=query.data<float>();int64_t*idx_dev=idx.data<int64_t>();

修改后

float*ref_dev=ref.data_ptr<float>();float*query_dev=query.data_ptr<float>();int64_t*idx_dev=reinterpret_cast<int64_t*>(idx.data_ptr());
修改文件 2:knn/src/cpu/knn_cpu.cpp

问题位置:第 5 行和第 19 行

修改前

voidknn_cpu(float*ref_dev,intref_width,float*query_dev,intquery_width,intheight,intk,float*dist_dev,long*ind_dev,long*ind_buf)// ...longtemp_idx;

修改后

voidknn_cpu(float*ref_dev,intref_width,float*query_dev,intquery_width,intheight,intk,float*dist_dev,int64_t*ind_dev,int64_t*ind_buf)// ...int64_ttemp_idx;

重新编译

cdknn python setup.pyinstall

验证

python-c"import knn_pytorch; print('knn_pytorch imported successfully')"

8.3 torch._six 模块导入错误

问题描述

执行python demo.py时出现以下错误:

ModuleNotFoundError: No module named 'torch._six'

问题原因

PyTorch 版本兼容性问题:新版本的 PyTorch(1.8+)移除了内部模块torch._six。这个模块是旧版 PyTorch 用于兼容 Python 2/3 的,现已被官方移除。

解决方案

修改文件:dataset/graspnet_dataset.py

问题位置:第 12 行

修改前

fromtorch._siximportcontainer_abcs

修改后

importcollections.abcascontainer_abcs

8.4 torch.cross API 弃用警告

问题描述

运行 demo 时出现以下警告:

UserWarning: Using torch.cross without specifying the dim arg is deprecated. Please either pass the dim explicitly or simply use torch.linalg.cross.

问题原因

PyTorch API 变更:新版本的 PyTorch 要求在使用torch.cross时显式指定dim参数。

解决方案

修改文件:utils/loss_utils.py

问题位置:第 89 行

修改前

axis_z=torch.cross(axis_x,axis_y)

修改后

axis_z=torch.cross(axis_x,axis_y,dim=-1)

8.5 sklearn 安装失败

解决方案:在graspnetAPI/setup.py中将sklearn改为scikit-learn

8.6 清理编译产物

如果需要重新编译,可以清理之前的编译产物:

# 清理 pointnet2cdpointnet2 pip uninstall pointnet2-yRemove-Item-Recurse-Forcebuild Remove-Item-Recurse-Forcepointnet2.egg-info# 清理 knn_pytorchcdknn pip uninstall knn_pytorch-yRemove-Item-Recurse-Forcebuild Remove-Item-Recurse-Forceknn_pytorch.egg-info

九、总结

本文详细记录了在 Windows 11 环境下复现 GraspNet 项目的完整流程,包括:

  1. ✅ CUDA 和 PyTorch 环境配置
  2. ✅ 源代码克隆和项目结构搭建
  3. ✅ PointNet++ 和 KNN 模块编译安装
  4. ✅ GraspNet API 安装配置
  5. ✅ Demo 运行测试
  6. ✅ 常见问题解决方案

按照本文步骤,可以顺利完成 GraspNet 项目在 Windows 环境下的复现工作。


环境版本总结

组件版本
操作系统Windows 11
CUDA12.8
PyTorch2.7.1
Python3.11
Visual Studio2019

最后更新时间:2026-06-14

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 1:25:46

用 ChatGPT 和 Codex 一段时间后,我发现省心比低价更重要

最近身边问 ChatGPT 充值的人明显多了。尤其是一些做电商、自媒体、写代码的朋友&#xff0c;已经不是拿它当新鲜工具玩一玩&#xff0c;而是真的每天在用。有人用 ChatGPT 写产品文案、改标题、做客服话术&#xff1b; 有人用它写短视频脚本、整理选题&#xff1b; 也有人用 C…

作者头像 李华
网站建设 2026/6/15 1:11:56

Kamailio 深度技术解析:构建电信级 SIP 信令核心

在实时通信的底层世界里&#xff0c;Kamailio 是一个低调却统治级的名字。它不是一个 PBX&#xff0c;不处理任何媒体流&#xff0c;却承载着全球数十亿分钟的语音与视频通话信令。从云联络中心到 IMS 核心网&#xff0c;从 WebRTC 网关到 MS Teams Direct Routing&#xff0c;…

作者头像 李华