6edb8d39ab
在开始'设备契约层 + 目录重构 + 通止规装配'改造之前,先钉住当前可运行状态, 使后续任何删除/重构都可回退。 本基线包含: - 现有 ROS 2 工作区全部源码(arm_application / arm_control / arm_bringup 等) - 官方 flexiv_ros2 栈(含 flexiv_hardware / flexiv_controllers 等符号链接) - 设备契约层 src/arm_interfaces(新增,46 项单测通过) - devices/ 设备选型与品牌清单(新增) - scripts/gen_site_example.py 与由它生成的 config/site.example.yaml 按 .gitignore 排除:build/ / install/ / log/ / config/site.yaml / 模型权重二进制。
devices/sensors/orisys/models/ —— 传感器型号配置
放什么
每个传感器型号一个子目录,子目录内存放该型号的厂商配置。
格式与命名要求(必须遵守)
| 项 | 要求 | 违反的后果 |
|---|---|---|
| 子目录名 | 就是型号名,会被 config/site.yaml 的 tactile.model 引用 |
选型找不到配置 |
| 配置文件名 | 固定为 config.json |
驱动按固定名加载 |
| 内容格式 | 厂商原始 JSON 结构,不要自己重排字段 | 解析失败 |
| 新增型号 | 从现有型号复制整个目录再改,不要在原型号上改 | 污染在用型号 |
| 生效 | 改 site.yaml 的 tactile.model → 重启 scripts/run_tactile.sh |
— |
目录结构
models/
├── README.md # 本文件
├── dd03/ # 当前在用型号
│ └── config.json # 从 src/arm_application/config/orisys/dd03.json 迁来
└── <新型号>/
└── config.json
型号之间的差异由这里承载
不同型号可能在以下方面不同,全部通过这个目录承载,上层代码不感知:
- 相机分辨率与内参(影响深度图与力矢量图的标定)
- 力的通道数(有的型号只有 1 路切向力)
- 基线与噪声特性(影响阈值标定)
- 左右指的拼接参数
- 是否需要旋转配置(现有
site.yaml里的left_rotation/right_rotation)
新增一个型号的完整步骤
# 1. 复制现有型号作为模板
cp -r devices/sensors/orisys/models/dd03 devices/sensors/orisys/models/<新型号>
# 2. 按厂商资料修改 config.json 里的分辨率/内参/通道数
# 3. 在 site.yaml 里切换型号
# tactile:
# model: "<新型号>"
# 4. 重启并对比读数
bash scripts/run_tactile.sh --cli
关键提醒
换型号之后,必须重新测基线并重新标定所有力阈值。
site.yaml 里的 touch_delta / screw_done_shear_delta / screw_done_normal_delta /
safe_delta 都是「相对静止均值的增量」,不同型号的噪声水平不同,直接沿用旧阈值会导致
接触判定误触发或完全不触发。