# reBot-DevArm-Grasp **Repository Path**: Marlboro1998/reBot-DevArm-Grasp ## Basic Information - **Project Name**: reBot-DevArm-Grasp - **Description**: Target Detection Algorithm for reArm developed by Seeed Studio - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-19 - **Last Updated**: 2026-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # reBot Arm B601 视觉夹取 Demo

reBot Arm B601

License: MIT Python Version Platform Camera YOLO

深度感知 · 目标检测 · 手眼标定 · 自主抓取 · 全开源

简体中文  |  English

--- ## 项目介绍 **reBot Arm B601 视觉夹取 Demo** 是基于 [reBot Arm B601](https://github.com/vectorBH6/reBotArm_control_py) 机械臂控制库与 RGB-D 深度相机的视觉抓取算法演示项目。系统支持 B601 的 DM 与 RS 两种机械臂配置,通过 YOLO 模型实时识别桌面物体,利用 OBB 最小外接矩形估计夹取姿态,经手眼标定将相机坐标系下的抓取点变换到机械臂基坐标系,最终驱动机械臂完成自主抓取。 ### 核心功能 - 📷 **深度感知** — 支持 Orbbec Gemini 2 与 RealSense D435i / D405 等 RGB-D 深度相机 - 🔍 **目标检测** — 基于 YOLO 模型识别,支持开放词汇自定义类别 - 📐 **姿态估计** — OBB 最小外接矩形短轴方向估计夹爪朝向,深度分位数估计抓取高度 - 🔄 **坐标变换** — TSAI 手眼标定(Eye-in-Hand),将相机系抓取点变换到机械臂基坐标系 - 🦾 **运动执行** — reBotArm_control_py IK + 轨迹控制器,内置夹爪力控状态机 --- ## 硬件配置 | 组件 | 型号 / 要求 | |------|------------| | 机械臂 | reBot Arm B601(DM / RS 两种配置) | | 深度相机 | Orbbec Gemini 2、Intel RealSense D435i / D405 | | 通信接口 | USB2CAN 串口桥接器(机械臂);USB 3.0(相机) | | 主机 | Ubuntu 22.04+,Python 3.10,x86_64 | **接线说明** 1. 将深度相机通过 USB 3.0 连接到主机 2. 将 USB2CAN 适配器连接到机械臂 CAN 总线并插入主机 USB 口 3. 配置设备权限: ```bash sudo chmod a+rw /dev/bus/usb/*/* # 深度相机 USB 权限 sudo chmod 666 /dev/ttyUSB0 # USB2CAN(端口号按实际调整) ``` --- ## 环境安装 ### Step 1. 克隆仓库 优先使用 Seeed-Projects 官方仓库: ```bash git clone https://github.com/Seeed-Projects/reBot-DevArm-Grasp.git rebot_grasp cd rebot_grasp ``` 也可以使用当前开发仓库: ```bash git clone https://github.com/EclipseaHime017/reBot-DevArm-Grasp.git rebot_grasp cd rebot_grasp ``` ### Step 2. 创建并配置 conda 环境 ```bash conda env create -f environment.yml conda activate rebotarm ``` :::tip 如果你想使用其他环境名,可以将命令中的 `rebotarm` 替换为自定义名称。 ::: ### Step 3. 安装机械臂控制库 ```bash git clone https://github.com/vectorBH6/reBotArm_control_py.git sdk/reBotArm_control_py cd sdk/reBotArm_control_py pip install -e . cd ../.. ``` 如果 `pip install -e .` 报 `Multiple top-level packages discovered in a flat-layout`,请在 `reBotArm_control_py` 的 `pyproject.toml` 中加入显式包发现配置,然后重新执行 `pip install -e .`: ```toml [build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] include = ["reBotArm_control_py*"] ``` 视觉抓取程序会读取该 SDK 配置,并自动选择对应的机械臂控制模式与夹爪参数。 ### Step 4. 安装深度相机 SDK 本项目支持 Orbbec Gemini 2 与 RealSense D435i / D405 等 RGB-D 深度相机。请根据实际使用的相机安装对应 SDK;如果当前环境已经能正常导入相机驱动,可跳过本步骤。 **Orbbec Gemini 2** Orbbec Gemini 2 依赖 **pyorbbecsdk**(Orbbec SDK v2 的 Python 版本)。优先推荐直接安装预编译 Python 包: **方式一:通过 pip 安装(推荐)** ```bash pip install pyorbbecsdk2 ``` **方式二:从 GitHub 获取** ```bash # 安装编译依赖 sudo apt-get install -y cmake build-essential libusb-1.0-0-dev cd sdk git clone https://github.com/orbbec/pyorbbecsdk.git cd pyorbbecsdk pip install -e . ``` 对于中国大陆用户可以使用 ```bash git clone https://gitee.com/orbbecdeveloper/pyorbbecsdk.git ``` 源码安装时,请先通过 CMake 编译生成原生扩展,确保 `install/lib` 中已有 `pyorbbecsdk*.so` 和 Orbbec 动态库,再执行 `pip install -e .`。 注意,如果上述安装过程中均发生错误导致安装失败,请参考下方Orbbec官方文档进行安装操作。 :::tip 首次使用建议安装 udev 规则: ```bash sudo bash scripts/install_udev_rules.sh sudo udevadm control --reload-rules sudo udevadm trigger ``` **验证安装** ```bash python -c "import pyorbbecsdk; print('pyorbbecsdk OK')" ``` ::: **OrbbecViewer(可选,用于验证相机)** 下载预编译包后运行 `OrbbecViewer`,可在运行 Demo 前确认相机连接和深度流正常。 - GitHub:https://github.com/orbbec/OrbbecSDK_v2/releases - Gitee:https://gitee.com/orbbecdeveloper/OrbbecSDK_v2/releases **RealSense D435i / D405** RealSense 相机依赖 `pyrealsense2`。通常可以直接通过 pip 安装: ```bash pip install pyrealsense2 python -c "import pyrealsense2; print('pyrealsense2 OK')" ``` 如果系统需要完整的 RealSense 工具链或 udev 规则,请参考 RealSense SDK 官方文档安装 `librealsense2`。 **SDK 资料汇总** | 资料 | 链接 | |------|------| | Gemini 2 产品页 | https://www.orbbec.com.cn/index/Product/info.html?cate=38&id=51 | | 开发资料总链接 | https://www.orbbec.com.cn/index/Download2025/info.html?cate=121&id=1 | | Orbbec SDK v2 | https://github.com/orbbec/OrbbecSDK_v2 | | SDK v2 API 文档 | https://orbbec.github.io/docs/OrbbecSDKv2_API_User_Guide/ | | pyorbbecsdk | https://github.com/orbbec/pyorbbecsdk | | pyorbbecsdk 文档 | https://orbbec.github.io/pyorbbecsdk/index.html | | ROS2 Wrapper | https://github.com/orbbec/OrbbecSDK_ROS2/tree/v2-main | | Intel RealSense SDK | https://github.com/realsenseai/librealsense | ### Step 5. 配置 GraspNet(可选) 为了实现对物体夹取姿态更准确的估计,本项目对[graspnet-baseline](https://github.com/graspnet/graspnet-baseline)进行了适配,从而提升机械臂夹取的性能。 GraspNet 的 `pointnet2` / `knn` 扩展需要 CUDA 编译器。开始前先确认当前环境可以找到 `nvcc`,并检查 `nvcc` 的 CUDA 版本是否和 PyTorch 编译时使用的 CUDA 版本一致: ```bash nvcc --version python -c "import torch; print(torch.__version__, torch.version.cuda)" ``` 如果没有 `nvcc`,或 `nvcc` 显示的 CUDA 版本与 `torch.version.cuda` 不一致,请安装与当前 PyTorch CUDA 版本匹配的 CUDA 编译器。例如 PyTorch 显示 `13.0` 时: ```bash conda install -c nvidia cuda-nvcc=13.0 ``` 也可以反过来安装与当前 `nvcc` 版本匹配的 PyTorch。两者必须一致,否则编译 `pointnet2` / `knn` 时会出现 `The detected CUDA version (...) mismatches the version that was used to compile PyTorch (...)`。 ```bash cd sdk git clone https://github.com/graspnet/graspnet-baseline.git cd graspnet-baseline # 按你的 CUDA 版本安装 PyTorch 后,再安装 GraspNet 运行依赖 pip install open3d tensorboard Pillow tqdm # 编译本地算子前配置 CUDA 编译路径。 export CUDA_HOME=$CONDA_PREFIX export TORCH_CUDA_ARCH_LIST="12.0" export CPATH=$CONDA_PREFIX/lib/python3.10/site-packages/nvidia/cu13/include:$CPATH export CPLUS_INCLUDE_PATH=$CONDA_PREFIX/lib/python3.10/site-packages/nvidia/cu13/include:$CPLUS_INCLUDE_PATH export LD_LIBRARY_PATH=$CONDA_PREFIX/lib/python3.10/site-packages/nvidia/cu13/lib:$CONDA_PREFIX/lib:$LD_LIBRARY_PATH # 编译 CUDA 算子 cd pointnet2 pip install . --no-build-isolation cd ../knn pip install . --no-build-isolation cd .. # 安装 GraspNet API git clone https://github.com/graspnet/graspnetAPI.git cd graspnetAPI sed -i "s/'sklearn'/'scikit-learn'/" setup.py pip install . cd ../../.. ``` :::tip 注:如果直接参考graspnet-baseline官方仓库文档使用 `python setup.py install` 可能报 CUDA / PyTorch 相关错误,建议使用 `pip install . --no-build-isolation`,让扩展在当前 conda 环境中复用已安装的 PyTorch 与 CUDA 配置进行编译。 ::: :::tip 如果编译时报 `fatal error: cusparse.h: No such file or directory`,先运行 `find $CONDA_PREFIX -name cusparse.h`,并把包含 `cusparse.h` 的目录加入 `CPATH` / `CPLUS_INCLUDE_PATH`。如果 CUDA 头文件来自 conda `cuda-toolkit`,路径通常是 `$CONDA_PREFIX/targets/x86_64-linux/include`,而不是上面示例里的 pip `nvidia/cu13/include` 路径。 ::: :::tip 此外,GraspNet API 的依赖中可能仍使用 `sklearn` 包名。上面的 `sed` 命令会将 `sklearn` 替换为 `scikit-learn`,避免安装时出现包名提示。除非同步调整 GraspNet API 的依赖栈,否则建议保留其 `numpy==1.23.4` 约束,因为 `transforms3d==0.3.1` 仍使用 `np.float` 等 NumPy 别名。 ::: **配置预训练模型** 在graspnet-baseline 官方仓库下载 GraspNet 官方预训练权重[Google](https://drive.google.com/file/d/1hd0G8LN6tRpi4742XOTEisbTXNZ-1jmk/view)、[Baidu](https://pan.baidu.com/s/1Eme60l39tTZrilF0I86R5A),将 下载好的`checkpoint-rs.tar` 放到: ```bash sdk/graspnet-baseline/checkpoints/checkpoint-rs.tar ``` 然后在 `config/default.yaml` 中确认: ```yaml graspnet: checkpoint: "checkpoint-rs.tar" ``` `checkpoint` 支持三种写法:仅文件名会自动从 `sdk/graspnet-baseline/checkpoints/` 查找;相对路径会按项目根目录解析;绝对路径会直接使用。 --- ## 目录结构 ``` rebot_grasp/ ├── config/ │ ├── default.yaml # 主配置文件 │ └── calibration/ │ └── / │ ├── intrinsics.npz # 相机内参 │ └── hand_eye.npz # 手眼标定结果 ├── drivers/ │ ├── camera/ │ │ ├── base.py # 相机抽象基类 │ │ ├── orbbec_gemini2.py # Gemini 2 驱动 │ │ └── realsense.py # RealSense 驱动(备用) │ └── robot/ │ └── grasp_driver.py # 基于机械臂 SDK 的轻量抓取辅助 ├── calibration/ │ ├── aruco_pose.py # ArUco 位姿估计 │ └── hand_eye.py # 手眼标定求解 ├── utils/ │ ├── ordinary_grasp.py # OBB 抓取姿态估计与可视化 │ └── transforms.py # 坐标变换工具 ├── scripts/ │ ├── main.py # 主抓取程序 │ ├── set.py # 抓取与放置程序 │ ├── ordinary_grasp_pipeline.py │ ├── object_detection.py │ └── collect_handeye_eih.py ├── sdk/ │ ├── pyorbbecsdk/ # Orbbec SDK Python 封装 │ └── reBotArm_control_py/ # reBot Arm SDK └── environment.yml # 推荐的 conda 环境文件 ``` ## 运行与调试 ### 0. 确认机械臂版本与 SDK 配置 运行会连接机械臂的脚本前,请先确认机械臂版本、电源和 SDK 配置一致: - 请先完成对应机械臂的基础准备:[B601-DM 快速入门](https://wiki.seeedstudio.com/cn/rebot_b601_dm_getting_started/) 或 [B601-RS 快速入门](https://wiki.seeedstudio.com/cn/rebot_b601_rs_getting_started/)。 - 在 `sdk/reBotArm_control_py/config/rebotarm.yaml` 中选择对应的硬件配置: ```yaml hardware_yaml: rebotarm_dm.yaml ``` 或: ```yaml hardware_yaml: rebotarm_rs.yaml ``` - B601-DM 使用 24V DC 电源,B601-RS 使用 48V DC 电源,请确认电源适配器和接线与机械臂版本一致。 - 使用 B601-DM 时,请确认 SDK 配置中的串口桥接器设备路径与实际设备一致。 - 使用 B601-RS 时,运行标定或抓取脚本前请先启动 CAN 接口: ```bash sudo ip link set can0 down 2>/dev/null sudo ip link set can0 type can bitrate 1000000 restart-ms 100 sudo ip link set can0 up ip -details link show can0 ``` ### 1. 手眼标定(抓取前必做) ```bash python scripts/collect_handeye_eih.py ``` 自动模式下,机械臂会自动遍历 50 个预设位姿,检测到 ArUco 稳定后自动采样。正常结束或中途打断时,脚本都会尝试计算并保存标定结果;至少需要 5 个样本,建议 ≥15 个样本以获得更稳的结果。 如需手动推动机械臂采集,可使用: ```bash python scripts/collect_handeye_eih.py --manual ``` 手动模式下,机械臂会进入重力补偿状态。将末端推到合适视角后按 `Enter` 采集,按 `c` 或 `q` 结束并计算。 :::tip 如果您在校准之后发现机械臂的抓取精度无法满足需求,可以设置`config/default.yaml`参数 `calibration.hand_eye_compensation_m`中的 `X(前后)、Y(左右)、Z(高低)` 参数给予位置补偿。 ::: ### 2. `scripts/main.py` — 主抓取程序 完整的视觉抓取流水线: 1. 初始化 RGB-D 相机,确认图像流可用 2. 机械臂与夹爪使能,移动到预备高位 3. 实时相机预览 + YOLO 目标检测与实例分割 4. OBB 短轴估计夹爪朝向,深度分位数估计抓取高度 5. 按 `G` 冻结帧,经手眼变换计算机械臂目标位姿 6. 机械臂移动到预抓取点 → 下降 → 夹爪闭合 → 提升 → 回预备位 ### 3. `scripts/set.py` — 抓取与放置程序 功能效果:将香蕉抓取并放置到盒子里面 完成流程: 1. 相机与机械臂初始化,移动到预备点位 2. 实时相机预览 + YOLO 目标检测与实例分割 3. 按 `G` 冻结帧,经手眼变换计算机械臂目标位姿 4. 机械臂移动抓取香蕉并抬高 5. 机械臂将香蕉放置在盒子内,并回归初始姿态 6. 按 `Q` 退出系统,机械臂回归零点 ### 4. `scripts/ordinary_grasp_pipeline.py` — 简化抓取测试 不依赖机械臂,仅验证 OBB 抓取姿态估计和可视化效果,适合调试感知模块。 ### 5. `scripts/graspnet_camera_demo.py` — GraspNet 相机估计 Demo 不连接机械臂,仅使用 RGB-D 相机运行 GraspNet 6D 夹取姿态估计。脚本会保留实时相机预览,并使用 YOLO 检测框选择目标区域,再从 GraspNet 全场景候选中筛选目标 bbox 内的可行夹取。按 `G` 或 `Space` 对当前帧推理,按 `R` 恢复实时预览,按 `Q` 或 `Esc` 退出;推理后可通过 Open3D 查看点云与夹取候选。 ```bash python scripts/graspnet_camera_demo.py ``` ### 6. `scripts/grasp.py` — GraspNet 机械臂抓取程序 基于 `graspnet_camera_demo.py` 的估计结果接入机械臂执行流程:YOLO 选择目标,GraspNet 输出 6D 夹取姿态,经手眼标定转换到机械臂基坐标系,再检查 IK 可达性并执行预夹取、夹取、退回动作。调试时建议先使用 `--dry-run` 只打印目标位姿和候选筛选结果。 ```bash python scripts/grasp.py --dry-run python scripts/grasp.py --target-class "light blue coffee cup" ``` ### 7. `scripts/object_detection.py` — 基础检测 Demo 纯 YOLO 检测演示,实时显示检测框和置信度,无抓取逻辑。 --- ## default.yaml 参数说明 #### 1. 相机与标定配置 (`camera` & `calibration`) | 参数项 | 类型 / 可选值 | 含义与详细说明 | | :--- | :--- | :--- | | `camera.type` | `realsense_d435i`
`realsense_d405`
`orbbec_gemini2` | **相机类型**:指定当前系统连接的相机硬件。 | | `camera.serial` | `string` / `null` | **设备序列号**:指定具体的设备 SN 号。填写 `null` 表示默认使用系统检测到的第一台可用设备。 | | `calibration.aruco.marker_length_m` | `float` | **ArUco 边长**:手眼标定所使用的 ArUco 标定码实际物理边长,单位为**米 (m)**。 | | `calibration.hand_eye_compensation_m` | `array` | **手眼标定平移补偿**:手眼标定完成后,在**机器人基坐标系**下执行的 XYZ 手动平移补偿(格式为 `[X, Y, Z]`),单位为**米 (m)**。若三项全为 `0.0`,则补偿矩阵为单位矩阵。 | --- #### 2. 目标检测配置 (`detection`) | 参数项 | 类型 | 含义与详细说明 | | :--- | :--- | :--- | | `detection.conf_threshold` | `float` | **YOLO 检测置信度阈值**:得分低于该值的检测框将被过滤。 | | `detection.iou_threshold` | `float` | **YOLO NMS IoU 阈值**:非极大值抑制(NMS)中用于过滤重叠框的交并比(IoU)阈值。 | --- #### 3. 机器人与夹爪配置 (`robot`) | 参数项 | 类型 / 可选值 | 含义与详细说明 | | :--- | :--- | :--- | | `robot.repo_root` | `string` / `null` | **仓库根目录**:`reBotArm_control_py` 仓库的路径。为 `null` 时默认使用内部相对路径 `sdk/reBotArm_control_py`。 | | `robot.ready_pose` | `array` | **预备位**:系统机械臂启动后优先到达的预备位置。每次抓取任务结束后,机械臂也会自动返回至该位置。 | | `robot.gripper.dm`
`robot.gripper.rs` | 结构体对象 | **夹爪硬件参数**:系统会根据 SDK 当前的实际硬件配置,自动选择并应用对应的这两组参数之一。 | #### 夹爪内部核心参数说明 对于 `robot.gripper.dm` 或 `robot.gripper.rs` 内部的子参数,定义规则如下: * **`angle_open`**、**`close_torque`**、**`default_force`**:分别对应张开角度、闭合力矩和默认控制力,均需填写**正数数值**。 * **`counterclockwise`**:布尔值。指示闭合时采用的电机转动方向(是否为逆时针)。代码会据此逻辑自动推导出张开角度和闭合力矩的符号。 * **`tau_max`**:力矩上限。 :::tip 注:其余更高级的夹爪控制行为参数,可在 `drivers/robot/grasp_driver.py` 文件中进行查阅与定义。 ::: --- #### 4. 抓取管线与 GraspNet 配置 (`grasp_pipeline` & `graspnet`) | 参数项 | 类型 | 含义与详细说明 | | :--- | :--- | :--- | | `grasp_pipeline.infer_every_live` | `int` | **推理帧间隔**:在实时视频预览时,每 N 帧运行一次目标检测,用以有效减轻 CPU/GPU 的实时计算压力。 | | `grasp_pipeline.grasp.depth_quantile` | `float` | **深度分位数**:短轴抓取管线所使用的深度计算分位数。该数值越大,计算出的抓取点通常会越深。 | | `grasp_pipeline.grasp.pregrasp_offset_m` | `float` | **预抓取位偏移量**:相对于最终的目标抓取位置,沿末端进给方向往回退的距离,单位为**米 (m)**。 | | `grasp_pipeline.grasp.insertion_depth_m` | `float` | **插入深度**:GraspNet 执行抓取时,沿进给方向额外向前推入或插入的深度,单位为**米 (m)**。 | | `grasp_pipeline.grasp.min_base_z_m` | `float` | **最低抓取高度限制**:在**机械臂基坐标系**下允许的最低抓取 Z 轴高度,单位为**米 (m)**(作为底层防碰撞的安全边界)。 | | `graspnet` | 结构体配置 | **GraspNet 运行参数**:该配置项下的所有子参数供 `scripts/graspnet_camera_demo.py` 和 `scripts/grasp.py` 脚本运行时加载使用。 | ### 模型选择库 YOLO 模型会从 `rebot_grasp/models/` 目录加载;如果模型文件不存在,Ultralytics 通常会尝试自动下载。 常用模型: | 模型 | 说明 | | --- | --- | | `yoloe-26l-seg.pt` | 开放词汇 + 分割,当前默认 | | `yoloe-26s-seg.pt` | 更轻量,速度更快 | | `yolov8n-seg.pt` | 封闭类别分割,小模型 | | `yolov8s-seg.pt` | 封闭类别分割,精度更高 | 当模型名包含 `world` / `yoloe`,并且 `yolo.use_world=true` 时,程序会调用 `model.set_classes(custom_classes)`,将 `yolo.custom_classes` 注入为开放词汇类别。普通 `yolov8*-seg.pt` 模型会忽略这组开放词汇类别。 --- ## ❓ FAQ ### 1. `ModuleNotFoundError: No module named 'motorbridge'` 这通常表示当前 Python 环境还没有安装机械臂 SDK 依赖。请确认已激活项目环境,并重新同步环境与安装机械臂 SDK: ```bash conda activate rebotarm conda env update -n rebotarm -f environment.yml cd sdk/reBotArm_control_py && pip install -e . ``` ### 2. 按 `G` 后不执行抓取 常见原因包括: - `hand_eye.npz` 不存在 - 手眼标定模式不是 `eye_in_hand` - 当前目标位姿 IK 不可达 建议先使用 dry-run 模式验证感知结果和目标位姿: ```bash python scripts/main.py --dry-run ``` ### 3. 抓取点深度不稳定 可以优先检查和调整: - `grasp_pipeline.grasp.depth_quantile` - 相机与目标工作区域的安装高度 - 目标表面的反光情况 ### 4. GraspNet 报 `pointnet2_utils` 无法从 `pointnet2` 导入 这通常是 `sdk/graspnet-baseline/pointnet2` 本地 CUDA 扩展没有在当前 conda 环境中正确编译安装,或 Python 路径解析到了错误的 `pointnet2` 包。建议确认已激活项目环境,并在同一个环境中重新编译安装 `pointnet2` 与 `knn`: ```bash conda activate rebotarm cd sdk/graspnet-baseline/pointnet2 pip install . --no-build-isolation cd ../knn pip install . --no-build-isolation ``` 验证: ```bash python -c "from pointnet2 import pointnet2_utils; print('Submodule import works')" ``` ### 5. 当前显卡运行 GraspNet 时出现 CUDA 架构不兼容 如果出现 `no kernel image is available for execution on the device` 或 PyTorch 提示当前 GPU 的 CUDA capability 不受支持,通常说明当前 PyTorch wheel 不包含该显卡架构对应的 CUDA kernel。建议安装支持当前 CUDA/显卡架构的 PyTorch 版本,然后重新编译 GraspNet 的本地 CUDA 扩展。 ```bash python -c "import torch; print(torch.__version__, torch.version.cuda, torch.cuda.get_device_name(0))" cd sdk/graspnet-baseline/pointnet2 pip install . --no-build-isolation cd ../knn pip install . --no-build-isolation ``` 如需手动指定编译架构,可在重新编译前设置 `TORCH_CUDA_ARCH_LIST`,具体取值请按当前显卡架构和 PyTorch/CUDA 版本确认。 ### 6. GraspNet 推理时报 `RuntimeError: CPU not supported` `pointnet2` 中的采样算子只支持 CUDA tensor。请确认 CUDA 可用、GraspNet 网络和输入点云都在 GPU 上,并且 `pointnet2` / `knn` 是在当前环境和当前 PyTorch 版本下编译的。 ```bash python -c "import torch; print(torch.cuda.is_available())" ``` 如果输出为 `False`,需要先修复 CUDA / PyTorch 安装;如果输出为 `True` 但仍报错,建议重新编译 `pointnet2` 和 `knn`。 --- ## 📄 参考资料 - [reBotArm_control_py](https://github.com/vectorBH6/reBotArm_control_py) — 机械臂控制库 - [reBot-DevArm](https://github.com/Seeed-Projects/reBot-DevArm) — reBot 机械臂开源项目 - [Orbbec Gemini 2 产品页](https://www.orbbec.com.cn/index/Product/info.html?cate=38&id=51) - [Orbbec SDK v2](https://github.com/orbbec/OrbbecSDK_v2) - [pyorbbecsdk](https://github.com/orbbec/pyorbbecsdk) - [RealSense SDK](https://github.com/realsenseai/librealsense) - [graspnet/graspnet-baseline](https://github.com/graspnet/graspnet-baseline) - [Ultralytics YOLOv11](https://github.com/ultralytics/ultralytics) --- ## ☎ 联系我们 - **技术支持**:[提交 Issue](https://github.com/Seeed-Projects/reBot-DevArm-Grasp/issues) ---

🌟 如果本项目对你有帮助,欢迎点个 Star!