# piper_pico_test **Repository Path**: starimpact_admin/piper_pico_test ## Basic Information - **Project Name**: piper_pico_test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-16 - **Last Updated**: 2026-04-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Piper Pico Test 这个目录提供了使用 Pico 手柄操作 Piper 的最小示例,包含仿真、真机和回零工具。 目录内容: - `test_sim.py`:Pico 控制 Piper 的 MuJoCo 仿真。 - `test_real.py`:Pico 控制 Piper 真机。 - `set_zero.py`:Piper 关节和夹爪设零工具。 - `piper_description/`:本地化的 URDF、MJCF 和 mesh 资源,避免依赖外部资源目录。 ## 依赖 建议使用已有环境: ```bash conda activate xroboteleop ``` 需要确保以下 Python 包已可用: - `xrobotoolkit_teleop` - `piper_sdk` - `mujoco` - `placo` 如果要运行真机控制,还需要: - 系统已正确配置 CAN 口,例如 `can0` - Piper 机械臂已上电并能通过 `piper_sdk` 正常通信 ## 快速开始 ### 1. 仿真 ```bash python test_sim.py ``` 作用:启动 MuJoCo 中的 Piper 仿真,并通过 Pico 手柄控制末端位姿和夹爪。 ### 2. 真机 ```bash python test_real.py ``` 作用:连接 `can0` 上的 Piper 真机,读取手柄位姿做 IK,并将求解结果发送到机械臂。 ### 3. 设零 ```bash python set_zero.py ``` 作用:设置单个关节、顺序设置多个关节,或者设置夹爪零点。 ## Pico 手柄映射 - 右手柄位姿:控制 Piper 末端位姿。 - 右手柄 `right_grip`:按住后激活机械臂运动控制。 - 右手柄 `right_trigger`:控制夹爪开合。 - 右手柄 `B` 键:切换 `return_zero`。 `B` 键行为: - 仿真中:机械臂回到零位控制输入。 - 真机中:机械臂以较低速度回零,同时夹爪张开。 - 再按一次 `B`:退出回零模式,恢复正常遥操作。 ## 脚本说明 ### test_sim.py - 使用 `MujocoTeleopController` 的子类 `PiperMujocoTeleopController`。 - 通过本地 `piper_description/` 加载 MJCF 和 URDF。 - 自动将 URDF 中的 `package://piper_description/` 路径解析为本地绝对路径。 ### test_real.py - 使用 `HardwareTeleopController` 的子类 `PiperTeleopController`。 - 通过 `C_PiperInterface_V2` 与真机通信。 - 在后台循环中读取真机关节反馈、执行 IK、发送关节控制指令。 ### set_zero.py 支持以下模式: - 单个电机设零 - 多个关节顺序设零 - 夹爪设零 注意:设零过程会失能电机,操作前请做好机械臂支撑和防护。 ## 说明 - 本目录已经内置 `piper_description`,不会再访问外部描述资源目录。 - `xrobotoolkit_teleop` 和 `piper_sdk` 仍然来自 Python 环境中的已安装包。 - 默认真机 CAN 口为 `can0`,如需修改,可直接调整 `test_real.py` 和 `set_zero.py` 中的默认参数。