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/sdk/ —— 放置 Orisys 厂商 SDK
放什么
Orisys 视触觉传感器的厂商 SDK(Python 包、原生库、或 ROS 包)。
格式与命名要求(必须遵守)
| 项 | 要求 | 违反的后果 |
|---|---|---|
| 格式 | 厂商原始发布格式。若是 .whl/.tar.gz,展开后放进来,不要留压缩包 |
无法 import |
| 目录名 | 保持厂商原包名(如 orisys_sdk/),一律不要改名 |
Python 内部按包名做相对导入与资源查找,改名直接 ImportError |
| 文件名 | 一律不改名 | 原生库按 .so 原名加载 |
| 版本 | 记录进 ../manifest.yaml 的 version |
日后无法排查版本问题 |
| 原生库 | 若含 .so,确认架构是 x86_64 |
加载报错 |
| 编译产物 | 不要把 build/ 提交进 git |
仓库膨胀 |
放好之后怎么让它生效
# 方式 A:可编辑安装(推荐,方便日后迭代 SDK)
conda activate ros_flexiv
pip install -e devices/sensors/orisys/sdk
# 方式 B:加入 PYTHONPATH(不改环境,只在当前 shell 生效)
export PYTHONPATH="$PWD/devices/sensors/orisys/sdk:$PYTHONPATH"
# 冒烟验证
python3 -c "import orisys_sdk; print(orisys_sdk.__file__)"
然后:
# 1. 确认选型
cat devices/registry.yaml # sensors: orisys
# 2. 在 site.yaml 里选中型号
# tactile:
# model: "dd03" # 必须与 models/ 下的子目录名一致
# left_video: "..." # 必须用 /dev/v4l/by-path/ 稳定路径
# right_video: "..."
# 3. 确认型号配置存在
ls devices/sensors/orisys/models/dd03/config.json
# 4. 启动
bash scripts/run_tactile.sh # 图传 + 状态话题
bash scripts/run_tactile.sh --cli # 只读数值,用来调阈值
迭代 SDK 时的注意事项
这个 SDK 会持续迭代更新,升级时按下面顺序做:
- 把新版本放在原目录名旁边(如
sdk_new/),不要直接覆盖旧版本; - 用
--cli对比新旧版本的读数(量纲、基线漂移、噪声水平是否变化); - 读数一致后再切换;
- 更新
../manifest.yaml的version字段; - 如果量纲变了,
site.yaml里所有力阈值(touch_delta/screw_done_shear_delta/screw_done_normal_delta/safe_delta)都需要重新标定 —— 这些阈值是相对基线的增量, 单位一变全部失效。
已踩过的坑(不要重犯)
- 左右指必须各一个独立进程,不要合并成单进程双路 —— 会抢 CUDA 上下文互相拖慢。
cuda保持false,infer_backend用cpu。- 退出时残留的孤儿 worker 会占死
/dev/video,导致下次启动失败。run_tactile.sh里那段pkill清理逻辑必须保留。 - 不要用
/dev/video0,用/dev/v4l/by-path/pci-...-video-index0。