Files
ros_contorl/devices/sensors/orisys/sdk
arm_dev 6edb8d39ab chore: 框架科学优化前的完整基线
在开始'设备契约层 + 目录重构 + 通止规装配'改造之前,先钉住当前可运行状态,
使后续任何删除/重构都可回退。

本基线包含:
- 现有 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 / 模型权重二进制。
2026-09-23 10:53:06 +08:00
..

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 会持续迭代更新,升级时按下面顺序做:

  1. 把新版本放在原目录名旁边(如 sdk_new/),不要直接覆盖旧版本;
  2. 用 --cli 对比新旧版本的读数(量纲、基线漂移、噪声水平是否变化);
  3. 读数一致后再切换;
  4. 更新 ../manifest.yaml 的 version 字段;
  5. 如果量纲变了,site.yaml 里所有力阈值(touch_delta / screw_done_shear_delta / screw_done_normal_delta / safe_delta)都需要重新标定 —— 这些阈值是相对基线的增量, 单位一变全部失效。

已踩过的坑(不要重犯)

  1. 左右指必须各一个独立进程,不要合并成单进程双路 —— 会抢 CUDA 上下文互相拖慢。
  2. cuda 保持 false,infer_backend 用 cpu。
  3. 退出时残留的孤儿 worker 会占死 /dev/video,导致下次启动失败。 run_tactile.sh 里那段 pkill 清理逻辑必须保留。
  4. 不要用 /dev/video0,用 /dev/v4l/by-path/pci-...-video-index0。