Files
ros_contorl/docs/TACTILE.md
T
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

2.2 KiB
Raw Blame History

Orisys 视触觉

夹爪左右指上的视触觉相机(不是腕部 D405)。SDK 用厂家 wheel 安装 (pip install --no-deps ~/sensor_ws/0.4.2/orisys-0.4.2-cp311-*.whl 到 ros_flexiv 环境), 本仓库只放适配器、现场参数和 dd03.json。

源码:

文件 作用
arm_application/orisys_tactile.py SDK 适配 + load_orisys_from_site + tactile_worker(多进程工作器)
arm_application/tactile_interface.py 可替换接口 / Mock
arm_application/tactile_node.py 发布 /tactile/left|right/status
config/orisys/dd03.json 传感器几何/跟踪(厂家配置,可进 git)

架构:每侧手指一个独立进程(厂家示例 two_sensor_pipeline.py 的推荐做法, 每进程独立 CUDA 上下文)。实测单进程双开两路会互相拖垮(30→0.8fps), 双进程各 30fps。tactile 节点内部用 multiprocessing(spawn) 起两个 worker, 主进程只做队列→话题转发。worker 进程 comm 名 orisys_tac_w,runner 脚本会 连带清理(孤儿 worker 会占死 /dev/video*,表现为下次启动 "Failed to open video source",手动清:pkill orisys_tac_w)。

现场要点(都在 config/site.yaml → tactile:):

  • left_video/right_video 用 /dev/v4l/by-path/... 稳定路径——Orisys 是 "USB Camera"(不是 RealSense!),video 编号随插拔漂移,by-path 绑定物理 USB 口
  • cuda: false + infer_backend: cpu——双路并行抢 GPU 上下文会互相拖慢, CPU 解算仅 ~9ms/帧足够(单路想快可开 cuda)
  • 读数是形变任意单位(非牛顿)且夹持基线会漂移;三阶段节点启动时自动测 静止基线,所有力阈值都是相对增量(见 docs/HOLE_DETECT.md 三阶段段落)
bash ~/ros2/scripts/run_tactile.sh --cli     # 打印力 若干秒
bash ~/ros2/scripts/run_tactile.sh           # ROS 节点

无硬件时:tactile.backend: mock。

搜孔插入运动(机械臂螺旋 + 力闭环)已由三阶段实现:stage3_search_node.py, 见 docs/HOLE_DETECT.md 三阶段段落,跑 bash ~/ros2/scripts/run_stage3_search.sh --arm 89。