归档 legacy/:stereo_yolo/stereo_ranger/target_tracker 三包 + 175 条测试 + demo/配置/权重/三份规格;运行链路不再依赖,默认 pytest 446 条,归档测试按需运行。 目标有效性第二判据改为 LOS 运动学一致性(pod_bridge/los_consistency.py),删除 require_vision;pod_locked() 叠加该判据,状态机随之后退重搜。 自定义返航(task_runner/return_home.py):保持转场高度回起飞点 → 恢复初始航向 → 垂直降落,不再爬 RTL_RETURN_ALT;未起飞/无起飞点/超时/异常仍退回 PX4 原生 RTL。 任务链安全兜底:主循环异常→紧急返航、stop 幂等、landing_stop 保留遥测、in_air 流复用+超时、解锁/起飞与吊舱识别仅执行一次、rtl_timeout 上限。 入口共享件拆到 utils/sitl_support.py;pod_sitl_test.py→l1_sitl_test.py;删除旧架构 test.py;相机脚本移入 tools/。 新增 .gitignore 并剔除历史误跟踪的 59 个 .pyc;requirements 按实际依赖重写;文档全面对齐,新增 legacy/README.md 与 tools/README.md。
98 lines
2.7 KiB
JSON
98 lines
2.7 KiB
JSON
{
|
||
"_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,
|
||
"los_consistency_enabled": true,
|
||
"los_window_ms": 3000,
|
||
"los_min_yaw_change_deg": 20.0,
|
||
"los_max_residual_deg": 8.0
|
||
},
|
||
|
||
"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
|
||
}
|
||
}
|