Files
code-test-drone/utils/config/pod_bridge.json
T
keita ded17d7995 实现预定流程全链路: 任务状态机 + 编排器 + 地面站 + 真机/SITL入口
- utils/task_runner: 6态状态机(WAIT→ARM_TAKEOFF→GOTO(L2)→TRACK(L1)→APPROACH→RTL)
  + 编排器(快照采集/状态动作) + 双层日志(事件JSONL/遥测CSV) + 吊舱控制指令(0x07/0x0F/0x0E/0x08)
- pod_bridge: ground_link 地面坐标UDP注入(超龄判无效,无激光替代表4);
  set_heading_servo_enabled() 运行时L1/L2切换(切换即reset清积分防输出跳变);
  pod_locked 提为公共门控; config 新增 ground_inject 段
- virtual_pod 模拟吊舱(无电机语义) + verify_px4 增量④仅飞控验证 +
  pod_sitl_test L1 SITL全流程(飞行编排不塞进 run_bridge, 保持纯offboard闭环入口)
- 入口: task_runner_sitl(VirtualPod+虚拟目标, SITL端到端跑通约1m24s) /
  task_runner_real(真串口+UDP注入+吊舱控制)
- 地面站 ground_station: 坐标注入 + 状态可视化(Flask)
- S1标定回填(2026-10-09): beta_sign=+1 / alpha_sign=-1, 加标定回归测试守护
- 新增测试: task_runner x4 + ground_link/virtual_pod*/bridge/px4_gateway 增量; 全量 483 passed
- 文档: 预定流程(需求) + 预定流程-操作指南(操作/待办) + L1方案补S1结论与实现状态
2026-10-13 15:50:32 +08:00

95 lines
2.6 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"_comment": "吊舱↔PX4 桥接配置。heading_servo.enabled=true → 走 L1 航向伺服(TrackingControlLaw);tracking 段为 L1 控制律参数(与 visual_track_control 同结构,各分组须齐全)。S1 台架标定(2026-10-09):目标在左下时 off_target_x/y 均为负 → 吊舱 X 轴右正(与控制律 β 同向)故 beta_sign=+1;Y 轴上正(与控制律 α 下正相反)故 alpha_sign=-1。厂商已确认本版电机无用 → beta_from_frame/alpha_from_frame 恒 false(框架角路径仅留作将来装电机的预留)。heading.gain 等增益仍为占位,须 S2 干跑验证方向与量级后方可实飞。",
"pod_serial": {
"port": "",
"baudrate": 115200
},
"px4": {
"connection_string": "udp://:14540"
},
"link": {
"attitude_downlink_hz": 20.0,
"telemetry_timeout_ms": 500,
"require_laser_valid": false
},
"guidance": {
"frequency_hz": 10.0,
"target_stale_ms": 1000,
"position_stale_ms": 1000,
"stop_radius_m": 5.0,
"max_speed_mps": 5.0,
"speed_kp": 0.5,
"speed_ki": 0.0,
"speed_kd": 0.0,
"speed_integral_limit": 0.0,
"speed_derivative_filter_coef": 0.0,
"speed_slew_mps2": 2.0,
"max_yaw_rate_dps": 30.0,
"yaw_kp": 1.0,
"yaw_slew_dps2": 60.0
},
"heading_servo": {
"enabled": true,
"beta_sign": 1,
"alpha_sign": -1,
"beta_from_frame": false,
"beta_from_off_target": true,
"alpha_from_frame": false,
"alpha_from_off_target": true,
"vertical_enabled": true,
"require_vision": false
},
"tracking": {
"control": {
"frequency_hz": 20.0,
"visual_stale_ms": 200,
"distance_stale_ms": 500,
"attitude_stale_ms": 300
},
"camera": {
"image_width": 1920,
"image_height": 1080,
"fov_h_deg": 60.0,
"fov_v_deg": 35.0
},
"heading": {
"mode": "rate",
"gain": 1.0,
"yaw_rate_limit_dps": 20.0,
"yaw_slew_limit_dps2": 40.0
},
"vertical": {
"vz_gain_mps_per_deg": 0.05,
"vz_limit_mps": 0.5
},
"distance": {
"d_exp_m": 10.0,
"kp": 0.5,
"ki": 0.0,
"kd": 0.0,
"integral_limit": 0.0,
"derivative_filter_coef": 0.0,
"approach_velocity_limit_mps": 0.5,
"retreat_velocity_limit_mps": 0.3,
"no_distance_action": "slow_approach",
"no_distance_approach_limit_mps": 0.2,
"no_distance_exit_grace_ms": 3000
},
"accel_limit": {
"ax_mps2": 1.0,
"ay_mps2": 1.0,
"az_mps2": 0.5
}
},
"ground_inject": {
"enabled": false,
"host": "0.0.0.0",
"port": 14555,
"timeout_ms": 5000
}
}