52c108de07ec5eaabaf6335bcbf0c183379b2bfb
修复:run_all.sh 不存在,但被三处依赖 - docs/HOLE_DETECT.md 有 4 处用法示例; - pipeline.launch.py 文件头写着"相机 / 触觉由 scripts/run_all.sh 负责拉起一次"; - run_pipeline.sh 唯一职责就是 exec 它。 也就是说文档在教用户跑一个不存在的脚本,而 run_pipeline.sh 执行必然失败。 按 pipeline.launch.py 的实际参数(skip_stage1/2/3、target_hole、insert_depth_mm、 screw_pitch_mm、preview、resnap)重建:先确认控制器 ACTIVE,再拉起相机与触觉 (都已就绪则跳过),最后 exec pipeline.launch.py。无硬件时会明确报错退出。 修复:判活循环反复撞超时,脚本看起来像卡死 服务/话题不存在时,`ros2 service call` / `ros2 topic echo` 每次都要耗满 timeout 才返回。原写法 30 次循环最坏等 165s(实测无 ROS 时白等 63s)。改成先 `ros2 service list` / `topic list` 探测,再决定要不要 call/echo。 - run_stage2_locate.sh、run_stage3_search.sh 同步修复(165s → ~0s) - run_all.sh 一开始就按正确顺序写 - run_handeye.sh 原本就是对的(这次是向它对齐) 标注:site.yaml 的 sim 段没有任何消费者 它声明 platform: gazebo,但 Gazebo 尚未接线,改它不会有任何效果。 加注释说明真实现状,避免用户以为改了就生效。 澄清:camera 与 cameras 不是重复键,两者都在读 - camera(单数)= 当前激活相机的参数,被各 launch 与节点读 - cameras(复数)= 相机目录(型号/序列号),被 export_site_env.py 读 命名容易混淆,但删任一个都会坏的。 保留:fetch_isaac_flexiv.sh 一度按"0 引用"删除,随后发现 thirdparty/ 里确实存在 isaac_sim_ws 与 flexiv_sim_plugin,说明这条路线被真实使用过;且该脚本还负责 clone flexiv_rdk(核心依赖)。已恢复,并在 scripts/README.md 标为"搁置未用"。 docs/scripts/README.md 补上 run_all.sh、rdk_drag_bridge.py、fetch_isaac_flexiv.sh, 并新增"排查脚本卡住时的常识"一节记录判活顺序。 测试:198 passed
Flexiv Rizon 视觉伺服(~/ros2)
独立工作空间:腕部 D405 眼在手上、手眼标定、YOLO 找工件、法兰悬停跟踪、DH 夹爪、入孔检测。
一份仓库即可跑完整跟踪与检测,不依赖 camera_test 或装配 HMI。
工作目录必须是 ASCII 路径(推荐克隆到 ~/ros2)。
| 项 | 值 |
|---|---|
| 配置 | config/site.yaml(从 example 复制,不进 git) |
| 操作 | scripts/ |
| 目录说明 | docs/WORKSPACE.md(每个文件夹做什么) |
| Conda | ros_flexiv |
| ROS | Humble |
克隆后
cd ~/ros2
cp config/site.example.yaml config/site.yaml
# 编辑 site.yaml:robot.sn / robots[].ip / camera.serial / paths.yolo_weights
# 权重文件放到 models/yolo/(二进制不在 git 里)
conda activate ros_flexiv
source scripts/env.sh
./scripts/build_all.sh
source scripts/env.sh
示教器:AUTO + Remote Ethernet,关掉 Flexiv Studio(RDK 独占)。
# 三个终端必须带同一个 --arm(89=左 91=右)
bash ~/ros2/scripts/run_real.sh --arm 89
bash ~/ros2/scripts/run_camera_d405.sh --arm 89 --preview
bash ~/ros2/scripts/run_visual_servo_rt.sh --arm 89 --control
改 site.yaml:锁高 / YOLO / 伺服 → 重启第三终端;分辨率 / 曝光 → 重启相机。
功能入口
| 功能 | 命令 |
|---|---|
| 实机 | scripts/run_real.sh --arm 89|91 |
| 腕部相机 | scripts/run_camera_d405.sh --arm … --preview |
| 顶视 D435 | scripts/run_camera_d435.sh --preview |
| 列出相机 | scripts/list_realsense.sh |
| 跟踪 | scripts/run_visual_servo_rt.sh --arm … [--control] |
| 回 home | scripts/go_home.sh --arm … |
| 手眼 | scripts/run_handeye.sh --arm … teach → merge → calibrate |
| PGEA / RGI 夹爪 | scripts/run_gripper.sh --arm 89|91 --cli … |
| 双爪 ROS | scripts/run_dual_gripper.sh |
| 入孔检测 | scripts/run_hole_detect.sh --arm … --preview |
| Orisys 触觉 | scripts/run_tactile.sh [--cli] |
| 看配置 | scripts/show_site_config.sh |
89 与 91 各有 手眼、相机序列号、锁高、named poses,禁止混用。
文档
| 文档 | 内容 |
|---|---|
| docs/WORKSPACE.md | 每个目录 / 脚本 / 包 |
| docs/QUICKSTART.md | 环境与第一次跑通 |
| docs/ARCHITECTURE.md | 进程与几何 |
| docs/SITE_CONFIG.md | site.yaml 字段 |
| docs/HANDEYE.md | 手眼标定 |
| docs/TRACKING.md | 视觉伺服 |
| docs/GRIPPER.md | PGEA + RGI |
| docs/HOLE_DETECT.md | 入孔检测 |
| docs/TACTILE.md | Orisys 视触觉 |
| docs/INTERFACES.md | ROS / 脚本接口 |
| docs/TRAJECTORIES.md | 轨迹回放 |
上传 git 时
- 要提交:
src/scripts/docs/config/site.example.yamlmodels/yolo/README.mdmodels/hole_insert/README.md - 不要提交:
config/site.yaml(含本机 IP/序列号)、build/install/log/、YOLO.pt/.onnx/.engine、thirdparty/vendor/ - 规则已写在
.gitignore
别人克隆后必须自己 cp site.example.yaml site.yaml 并重新手眼标定(不要直接用仓库里某台现场的 T_4x4 当真值)。
Description
Languages
Makefile
34.3%
Python
24.2%
C
20%
C++
14.6%
CMake
5.2%
Other
1.7%