Add IK types, validation, and tests for RM75 kinematics

This commit is contained in:
2026-06-29 20:18:59 +08:00
parent 7255daa69c
commit fdf505eac5
23 changed files with 2583 additions and 1192 deletions

106
AGENTS.md Normal file
View File

@ -0,0 +1,106 @@
# AGENTS.md
本文件为 Codex、Claude Code 及其他编码智能体提供仓库级工作指引。若与更高优先级的系统或开发者指令冲突,以后者为准。
## 项目概览
本仓库是 ROS2 Humble 工作空间的 `src/` 目录,用于通过 PICO/XR 控制器遥操作左右两台 RealMan RM75 机械臂。
控制器映射、运动控制链路和 IK 实现后续可能调整。修改前应阅读当前源码、启动文件、配置和 `README.md`,不要将现有 topic 链路、适配器或 IK 算法视为固定架构。
## 仓库结构
- `xr_rm_interfaces`ROS 消息定义。
- `xr_rm_input`XR 控制器数据输入与测试发送工具。
- `xr_rm_teleop`:控制器映射、机械臂控制及相关算法。
- `xr_rm_bringup`:启动文件、机械臂配置及启动工具。
- `unity/XR_RM_PICO_UDP_Sender`Unity/PICO 数据发送项目。
工作空间根目录:`/home/robot/WS_xr`
源码根目录:`/home/robot/WS_xr/src`
除非任务明确涉及,否则将 PICO SDK、XRoboToolkit、机械臂 SDK 及其他引入的依赖视为第三方代码。
## 构建与运行
在工作空间根目录执行 ROS2 命令:
```bash
cd /home/robot/WS_xr
source /opt/ros/humble/setup.bash
colcon build --symlink-install
source install/setup.bash
```
Mock 模式启动:
```bash
ros2 launch xr_rm_bringup arm_debug.launch.py arm:=both use_mock:=true
```
真实机械臂支持 `arm:=left|right|both``use_mock:=false`。只有在用户明确要求且测试环境安全时,才可执行真实机械臂测试。
## 开发流程
- 修改前阅读相关代码、配置和文档。
- 先执行 `git status --short`,保留用户未提交及与当前任务无关的修改。
- 修改应尽量小,并严格限定在当前任务范围内。
- 不得自动执行 `git add`、提交、推送、合并、强制推送或删除分支。
- 完成后说明修改的文件、已执行的验证及剩余风险。
### 文件修改确认门槛
- 任何创建、编辑、删除、重命名、格式化文件或生成会写入磁盘的产物,都属于文件修改。
- 修改前必须说明目标、涉及文件、实施方案、风险和验证方式,然后等待用户明确授权。
- 只有当前消息中包含明确执行意图,如“直接修改”“执行”“应用这些修改”“写入文件”“创建”或“删除”,才视为授权。
- “可以……吗”“能否……”“是否可以”“怎么修改”“这样行吗”等疑问或讨论,只表示咨询,不构成文件修改授权。此时只能回答问题或提出方案,不得写入文件。
- 用户此前允许过其他修改,不代表自动授权新的修改;每个新增范围都应重新确认。
- 授权仅覆盖用户明确提出的范围。发现需要修改额外文件时,应先说明原因并再次取得授权。
- 执行任何可能写入文件的工具前,应再次核对用户当前消息是否已经明确授权;无法确定时,必须先询问,不得自行推断。
## IK 与控制修改
- 将当前 IK 和控制策略视为可替换实现;先检查实际代码,不要预设使用笛卡尔流式控制、速度控制或某种特定求解器。
- 除非任务明确要求修改,否则保留现有 ROS 接口和启动参数;有意进行的兼容性变更必须写入文档。
- 明确坐标系、四元数顺序、单位、关节顺序和时间戳约定。
- 根据算法需要处理非有限数值、关节与工作空间限制、奇异点、指令频率限制和数据超时。
- 修改映射、滤波、IK、轨迹生成或适配器时不得削弱停止机制。
- 算法修改应先通过静态检查、确定性输入测试或 Mock 测试,再进行真实机械臂测试。
## 安全规则
本项目能够控制真实机械臂,涉及硬件的修改必须保守进行。
不得随意修改机械臂 IP、端口 `8080`、工作空间或圆柱限制、坐标变换、初始位姿、速度/加速度限制及末端执行器配置。
当输入无效或被释放、数据过期、通信失败、适配器抛出异常、节点或应用退出时,机械臂必须安全停止。除非用户明确要求,否则 `move_to_initial_pose_on_connect` 默认保持为 `false`
涉及安全的修改按以下顺序验证:
1. 静态检查和语法检查。
2. 针对性的单元测试或算法测试。
3. Mock 模式。
4. 单台真实机械臂低速测试。
5. 双臂真实测试。
除非相关能力已经实现并经过验证否则不得声称项目具备碰撞规避、IK 安全保证或其他保护能力。
## 文档与生成文件
- `README.md` 是面向用户的主项目文档;`AGENTS.md` 用于记录智能体工作流程和安全规则。
- 与具体实现相关的协议、topic 和配置说明应放入对应 README 或专项文档,不在此处重复维护。
- 不得将尚未实现的功能描述为已完成。
- 将 Unity 的 `Library/``Builds/``Logs/``UserSettings/`、APK、生成日志及构建输出视为生成文件。
- 安全敏感修复期间避免大范围重构,代码应保持便于现场调试。
## 验证
根据修改内容选择合适的检查方式,至少执行:
```bash
cd /home/robot/WS_xr/src
git diff --check
```
修改 ROS 代码时,优先构建目标软件包,再进行完整工作空间构建。自动化测试无法单独证明真实硬件行为安全。