Enhanced gripper control functionality
This commit is contained in:
@ -262,7 +262,7 @@ sudo ufw status
|
||||
- Trigger / A / X:编辑当前行或触发当前行
|
||||
- B / Y:保存并应用
|
||||
- Menu:在配置面板和运行 HUD 之间切换
|
||||
- Grip:ROS 侧遥操作使能;未按下时机械臂停止
|
||||
- Grip:ROS 侧遥操作使能;未按下时机械臂停止,且 trigger 不驱动夹爪
|
||||
|
||||
验证现象:
|
||||
|
||||
@ -271,6 +271,7 @@ sudo ufw status
|
||||
- HUD 显示包计数、发送端点、左右姿态状态和 KeepAwake 状态。
|
||||
- `pose_valid=false` 时,ROS 接收端会强制该手柄 `grip=false`,即使 PICO 端按下了 Grip。
|
||||
- 按住 `grip` 并移动手柄时,mock 模式下 `/xr_rm/*/target_pose` 应连续变化,`/xr_rm/*/cmd_vel` 会显示目标位姿变化率。
|
||||
- 真机模式下,必须按住对应手柄 `grip` 才能用 `trigger` 控制对应夹爪;`trigger >= 0.95` 闭合,否则打开。
|
||||
- 松开 `grip` 后,机械臂慢停,`cmd_vel` 应回到零。
|
||||
|
||||
## 9. ROS2 端验证
|
||||
@ -309,6 +310,7 @@ ros2 topic hz /xr/right_controller
|
||||
- 按左手 `grip` 时,`/xr/left_controller` 的 `grip` 变成 `true`。
|
||||
- 按右手 `grip` 时,`/xr/right_controller` 的 `grip` 变成 `true`。
|
||||
- 扳机从松开到按下时,`trigger` 从 `0.0` 附近变到 `1.0` 附近。
|
||||
- 单臂或双臂真机 launch 已启动时,只有 `grip=true` 的那只手柄会让对应夹爪响应 trigger。
|
||||
- 平移手柄时,`pose.position` 连续变化。
|
||||
|
||||
如果收不到包,先抓 UDP:
|
||||
@ -426,8 +428,8 @@ Unity APK 每个周期发送一个双手柄 JSON 包:
|
||||
| `frame_id` | string | 默认 `xr_world` |
|
||||
| `controllers.left` | object | 左手柄 |
|
||||
| `controllers.right` | object | 右手柄 |
|
||||
| `grip` | bool | ROS 遥操作启停 |
|
||||
| `trigger` | float | `0.0-1.0` |
|
||||
| `grip` | bool | ROS 遥操作启停;也作为 trigger 夹爪控制使能 |
|
||||
| `trigger` | float | `0.0-1.0`;真机模式下 `grip=true` 且 `trigger >= 0.95` 闭合夹爪,否则打开 |
|
||||
| `pos` | float[3] | `[x, y, z]` |
|
||||
| `quat` | float[4] | `[qx, qy, qz, qw]` |
|
||||
| `pose_valid` | bool | 姿态有效性;`false` 时 ROS receiver 强制 `grip=false` |
|
||||
@ -449,6 +451,7 @@ project.z = -native.x;
|
||||
这条转换只用于 `pose_source=pxr_predict` 且 `Coordinates=Project (+Z back)` 的情况。`Source raw` 模式保留 PXR native 或 Unity XR fallback 的原始坐标,便于现场对照;`unity_xr` fallback 暂不做 PXR native 转换,避免把已经由 Unity XR 提供的坐标二次转换。
|
||||
|
||||
禁用发送、App 暂停或退出时,必须额外发送一次左右手柄 `grip=false`,让 ROS 侧安全停止。
|
||||
ROS 侧收到 `grip=false` 时不会主动打开或闭合夹爪,夹爪保持上一次状态。
|
||||
|
||||
`udp_controller_receiver` 仍兼容调试脚本的旧格式:单个 object 可以直接带 `hand`、`pos`、`quat`;`controllers` 可以是 object 或 list;位置字段也支持 `position`、`p`、`pose.position`,姿态字段支持 `orientation`、`q`。四元数默认按 `xyzw` 解析,也可用 `quat_order:=wxyz` 覆盖。
|
||||
|
||||
@ -491,6 +494,7 @@ PXR `pxr_predict` 原始坐标按现场实测通常表现为右移 `native.z+`
|
||||
- 机械臂工作区清空。
|
||||
- PICO topic 在 mock 下已经稳定。
|
||||
- `grip=false` 时机械臂慢停,`/xr_rm/<arm>/cmd_vel` 为 0。
|
||||
- 夹爪验证时必须保持对应手柄 `grip=true`,再用 `trigger` 从松开到按下确认打开/闭合。
|
||||
- `move_to_initial_pose_on_connect` 保持 `false`。
|
||||
|
||||
单臂真机:
|
||||
@ -519,6 +523,7 @@ ros2 launch xr_rm_bringup arm_debug.launch.py arm:=both use_mock:=false \
|
||||
| ROS2 收不到 UDP | 检查同一 Wi-Fi、Target IP、Target Port、UFW、`UDP Sending ON`、左右手柄是否 `valid pxr/unity` |
|
||||
| tcpdump 有包但 topic 没数据 | JSON 字段不对,确认包含 `controllers.left/right`,且 `pos` 长度 3、`quat` 长度 4 |
|
||||
| 有 topic 但机械臂不动 | 检查 `grip`、`pose_valid` 日志、teleop 节点订阅话题、工作空间限幅、UDP 超时 |
|
||||
| trigger 不控制夹爪 | 确认是真机 launch、`enable_tool_control=true`、已按住对应 `grip`,且 `trigger` 能到 0.95 以上 |
|
||||
| 按左手右臂动 | PICO 端 left/right 获取或填充反了 |
|
||||
| 松开 grip 后仍有速度 | 确认 PICO 持续发送 `grip=false`,并检查 teleop 超时停止 |
|
||||
| 经常超时 | 发送频率太低、网络丢包、PICO 应用后台暂停;提高 `sendHz` 并保持应用前台运行 |
|
||||
|
||||
Reference in New Issue
Block a user