Update workstation UI, ROS task control and device integration

This commit is contained in:
cheng
2026-10-20 15:46:13 +08:00
parent 2b74c50ba8
commit e5b06df6da
141 changed files with 91520 additions and 748 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 KiB

After

Width:  |  Height:  |  Size: 1016 KiB

+4
View File
@@ -0,0 +1,4 @@
# Project-local ROS discovery defaults. Apply by sourcing scripts/env.sh.
# Keep this project off the network-wide default domain 0.
ORISYS_ROS_DOMAIN_ID=42
ORISYS_ROS_LOCALHOST_ONLY=1
+42 -38
View File
@@ -378,9 +378,9 @@ camera:
name: "d405"
serial: "352122274408" # 全局缺省=左腕;真机以 robots[].camera.serial 为准
# USB3 推荐 848x480@30;USB2 自动降到 640x480@15,深度/右目仍开
width: 848
height: 480 # 改宽高/帧率必须重启相机:bash ~/ros2/scripts/run_camera_d405.sh --preview
fps: 30
width: 1280
height: 720
fps: 15
enable_depth: true
enable_infra: true # 同一 SDK 进程开左右红外;失败则自动退回彩图+深度
preview: true
@@ -401,8 +401,9 @@ cameras:
role: left_wrist
arm: left
label: 左腕D405(89 平行夹爪)
width: 848 # 相机分辨率以本段为准(全局 camera: 段为旧路径,P2 收敛)
height: 480
width: 1280
height: 720
fps: 15
emitter_enabled: false # 腕部必须关投射器,红外点阵会污染跟踪图像
d405_right:
model: d405
@@ -411,8 +412,9 @@ cameras:
role: right_wrist
arm: right
label: 右腕D405(91 旋转夹爪)
width: 848
height: 480
width: 1280
height: 720
fps: 15
emitter_enabled: false
# >>> 仿真那两台(arm: sim)<<<
# 为什么仿真也要在这里登记:应用是"按当前臂"去认相机的 —— 腕部相机取
@@ -447,11 +449,10 @@ cameras:
role: overhead_eye_to_hand
label: 双臂中间手外D435
name: d435
# 本机 D435 与 D405 挂在同一个 5Gbps 外接 hub 上:D435 跑 1280x720@30 时
# D405 只剩 4~6fps 并反复断流重连(二阶段 snap_coarse_1 因此超时);
# 停掉 D435 后 D405 立即稳定 30fps。D435 只做一次性顶视,848x480@15 足够。
width: 848
height: 480
# 彩色 1080p/15,原生深度由采集器选择兼容的 720p/15 并对齐。
# 与 D405 共用 5Gbps Hub;两路同时运行时需核对实际帧率与断流日志。
width: 1920
height: 1080
fps: 15
auto_exposure: true
ae_limit_us: 8000
@@ -772,6 +773,7 @@ hole_detect:
once_ff_look_per_m: 0.0
final_gap_mm: 2.0 # 对准后贴面目标:规尖离面 [mm](不接触)。笛卡尔锁 XY
# 时法兰 Z = 工具长 + 工件面 + 本值。CLI --final-gap 覆盖。
hole_entry_mm: 1.0 # 同步上游:对孔收尾规尖进入上表面下 1mm
observe_gap_mm: 15.0 # --no-descent 时的观测下降:只降到离面这么高 [mm],
# 方便看规尖偏没偏。必须 ≥ final_gap_mm。
# 左臂89:悬停间隙约 73.5mm(0.320−0.2245−0.022)⇒ 观测下降约 58mm。
@@ -799,7 +801,7 @@ hole_detect:
max_depth_m: 0.60
linger_sec: 8.0 # 完成后继续发布结果/叠图的时长
# ===== 旋转装配仍读这里的力阈值(stage3_search_node)=====
# ===== 旧 stage3_search_node 的力阈值;首页旋转已使用独立 a7_rotation =====
# 搜孔轻压已取消:不带 --screw 的入口会直接拒绝,整体流程也不再进入这一步。
# bash ~/ros2/scripts/run_stage3_search.sh --arm 89 --screw
stage3:
@@ -919,8 +921,10 @@ gauge_assembly:
# ---- S01 回 home 后按工具系逆时针预绕到极限角 ----
# 预绕是为了给 S08 的棘轮留出回转行程:不预绕,拧两圈就贴关节限位。
extreme_angle_deg: 150.0 # 想转多少度(按工具系逆时针)
extreme_speed_deg_s: 20.0 # 关节角速度 [deg/s],慢一点防冲击
extreme_direction: 1 # +1=逆时针 / -1=顺时针(改符号,别去改代码)
extreme_speed_deg_s: 10.0 # 与上游 A7 首轮顺时针进孔工序一致
extreme_direction: -1 # 上游本机实测:A7 角度减小为逆时针
unwind_open_permille: 400 # 每轮松爪开度,千分比
unwind_lift_mm: 3.0 # 每轮微抬,降回使用本轮实测值
extreme_margin_deg: 3.0 # 距关节限位留的余量 [deg];撞限位不算失败(按 JOINT_LIMIT 继续)
# 但余量太小会让规划器频繁拒收,表现为"偶尔转不到位"
@@ -1085,30 +1089,21 @@ gauge_assembly:
# 不灵敏(压很深才停)→ 调小;同时看启动日志里的基线/实测值再定。
tactile:
backend: "orisys" # orisys | mock
# 传感器型号。必须与 devices/sensors/orisys/models/ 下的子目录名一致。
model: "dd03"
# 型号配置随 SDK 一起放:devices/sensors/orisys/models/<型号>/config.json
config_file: "devices/sensors/orisys/models/dd03/config.json"
# 用 by-path 稳定路径(插哪个 USB 口就认哪个口,不受 video 编号漂移影响)。
# 当前:3.4.1=左指 3.4.2=右指;若左右反了,互换两行即可。
left_video: "/dev/v4l/by-path/pci-0000:00:14.0-usb-0:3.4.1:1.0-video-index0"
right_video: "/dev/v4l/by-path/pci-0000:00:14.0-usb-0:3.4.2:1.0-video-index0"
cuda: false # 两路进程抢 GPU 上下文会互相拖慢;CPU 解算仅 ~9ms/帧,足够
isstitch: true
infer_backend: "cpu" # cupy | opencl | cpu;双路并行用 cpu 最稳
baseline_seconds: 2.0
filter_alpha: 0.25
motion_threshold: 0.0
backend: "station_flow"
arm_id: "89"
# Only low-level optical tactile SDK; no imports from the example gripper app.
sdk_python_path: "/home/cheng/orisys-sdk/src"
config_file: "src/arm_application/config/tactile/ctag2f90d.json"
# auto only selects Sunplus 1bcf tactile UVC cameras; explicit by-path recommended.
# Change these two values to stable device paths to fix the physical left/right order.
left_video: "auto"
right_video: "auto"
target_fps: 30.0
publish_hz: 20.0
# 视触觉图像与力矢量场的发布频率。0 = 关闭(默认)。
# 三力走 30fps 的轻量队列;图像每帧几百 KB,单独走一条 maxsize=1 的队列,
# 打开它不会影响三力的时序。需要看形变图/矢量场时设成 5~10 即可。
image_hz: 0.0
rotation_config: "" # 左右共用;有分指文件则用下面两项
left_rotation: "" # 例:orisys SDK 的 rotation_config_0.json
right_rotation: ""
publish_hz: 30.0
preview_transport: "compressed_flow"
motion_threshold: 0.0
cuda: false
force_units: "raw"
go_home:
pose: "home"
@@ -1144,3 +1139,12 @@ sim:
world: "devices/sim/gazebo/worlds/assembly.world"
physics_enable: true
joint_prefix: "sim_" # 仿真关节前缀,必须与真实臂前缀区分
# 仅 Qt 预览读取远端相机;机械臂/夹爪/传感器继续使用本地控制域。
remote_camera_preview:
enabled: true
host: "192.168.2.10"
interface_address: "192.168.2.50"
domain: 0
cameras: [d405_left, d435]
transport: raw # 远端当前没有 JPEG 预览话题