forked from YikaiFu-cart/acRealman_xr
Enhance orientation control for RM75 arms in XR teleoperation
This commit is contained in:
@ -270,7 +270,7 @@ sudo ufw status
|
||||
- `UDP Sending ON` 后,ROS2 的 `/xr/left_controller` 与 `/xr/right_controller` 应持续刷新。
|
||||
- HUD 显示包计数、发送端点、左右姿态状态和 KeepAwake 状态。
|
||||
- `pose_valid=false` 时,ROS 接收端会强制该手柄 `grip=false`,即使 PICO 端按下了 Grip。
|
||||
- 按住 `grip` 并移动手柄时,mock 模式下 `/xr_rm/*/target_pose` 应连续变化,`/xr_rm/*/cmd_vel` 会显示目标位姿变化率。
|
||||
- 按住 `grip` 并移动或小角度转动手柄时,mock 模式下 `/xr_rm/*/target_pose` 应连续变化,`/xr_rm/*/cmd_vel` 会显示目标位姿变化率。
|
||||
- 真机模式下,点击对应手柄 `trigger` 会切换并保持对应夹爪开/关状态。
|
||||
- 松开 `grip` 后,机械臂慢停,`cmd_vel` 应回到零。
|
||||
|
||||
@ -352,9 +352,10 @@ ros2 topic echo /xr_rm/right_rm75/target_pose
|
||||
1. 启动 PICO Unity 应用。
|
||||
2. 确认 `/xr/left_controller` 和 `/xr/right_controller` 正常刷新。
|
||||
3. 左手按住 `grip`,只移动左手一小段,观察 `/xr_rm/left_rm75/target_pose` 和 `/xr_rm/left_rm75/cmd_vel`。
|
||||
4. 松开左手 `grip`,确认 `cmd_vel` 回到 0。
|
||||
5. 右手重复同样流程。
|
||||
6. 用 `ros2 topic hz` 确认频率稳定,建议接近 PICO 端配置的发送频率。
|
||||
4. 左手保持小角度转动,确认 `target_pose.pose.orientation` 和 `cmd_vel.twist.angular` 会变化。
|
||||
5. 松开左手 `grip`,确认 `cmd_vel` 回到 0。
|
||||
6. 右手重复同样流程。
|
||||
7. 用 `ros2 topic hz` 确认频率稳定,建议接近 PICO 端配置的发送频率。
|
||||
|
||||
如果要排除 PICO 端问题,可用本机 sample sender 验证 ROS 端:
|
||||
|
||||
@ -364,6 +365,7 @@ ros2 run xr_rm_input sample_udp_sender --hand both --host 127.0.0.1 --port 15000
|
||||
```
|
||||
|
||||
`axis_sweep` 会按 `XR +X/-X/+Y/-Y/+Z/-Z` 打印方向标签。双手 `staggered` 模式先左后右,便于现场逐只确认映射。
|
||||
如需同时验证姿态链路,可增加 `--rotation-pattern rpy_steps --rotation-amplitude-deg 25`。
|
||||
|
||||
## 11. UDP JSON 协议
|
||||
|
||||
@ -431,7 +433,7 @@ Unity APK 每个周期发送一个双手柄 JSON 包:
|
||||
| `grip` | bool | ROS 遥操作启停 |
|
||||
| `trigger` | float | `0.0-1.0`;真机模式下跨过 `0.95` 的上升沿切换夹爪开/关状态 |
|
||||
| `pos` | float[3] | `[x, y, z]` |
|
||||
| `quat` | float[4] | `[qx, qy, qz, qw]` |
|
||||
| `quat` | float[4] | `[qx, qy, qz, qw]`;ROS 遥操作节点会用相对旋转控制 TCP 姿态 |
|
||||
| `pose_valid` | bool | 姿态有效性;`false` 时 ROS receiver 强制 `grip=false` |
|
||||
| `pose_source` | string | `pxr_predict`、`unity_xr` 或 `none` |
|
||||
| `tracking_state` | int | Unity XR tracking state 原始值 |
|
||||
@ -479,8 +481,9 @@ PXR `pxr_predict` 原始坐标按现场实测通常表现为右移 `native.z+`
|
||||
1. 只启动 `use_mock:=true`。
|
||||
2. APK 中选择 `Project (+Z back)`,按住左手 `grip`,每次只沿右/左、上/下、前/后移动一个方向。
|
||||
3. 记录 `/xr/left_controller.pose.position` 的变化方向。
|
||||
4. 记录 `/xr_rm/left_rm75/target_pose` 的方向。
|
||||
5. 右手重复。
|
||||
4. 记录 `/xr_rm/left_rm75/target_pose` 的位置方向。
|
||||
5. 小角度转动左手手柄,记录 `/xr/left_controller.pose.orientation` 与 `/xr_rm/left_rm75/target_pose.pose.orientation` 是否连续变化。
|
||||
6. 右手重复。
|
||||
|
||||
如果两个手柄在 ROS topic 里的某个轴都反了,优先检查 Unity/PICO 发送到 `/xr/*_controller.pose.position` 的实际方向。如果 ROS topic 正确,但某一只机械臂运动方向不符合现场坐标,只改对应 YAML 的 `xr_to_robot_matrix`。
|
||||
|
||||
@ -494,6 +497,7 @@ PXR `pxr_predict` 原始坐标按现场实测通常表现为右移 `native.z+`
|
||||
- 机械臂工作区清空。
|
||||
- PICO topic 在 mock 下已经稳定。
|
||||
- `grip=false` 时机械臂慢停,`/xr_rm/<arm>/cmd_vel` 为 0。
|
||||
- mock 下小角度转动手柄时,`/xr_rm/<arm>/cmd_vel.twist.angular` 有连续小幅变化。
|
||||
- 夹爪验证时点击对应手柄 `trigger`,确认每次点击都会切换并保持开/关状态。
|
||||
- `move_to_initial_pose_on_connect` 保持 `false`。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user