Files
acRealman_xr/AGENTS.md

107 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 代码时,优先构建目标软件包,再进行完整工作空间构建。自动化测试无法单独证明真实硬件行为安全。