双目测距方案重构与其他小修改
This commit is contained in:
@@ -15,7 +15,7 @@ from pathlib import Path
|
||||
import pytest
|
||||
|
||||
from visual_track_control.config import (HeadingMode, NoDistanceAction,
|
||||
load_from_json)
|
||||
TrackingConfig, load_from_json)
|
||||
|
||||
_REPO_ROOT = Path(__file__).resolve().parents[3]
|
||||
REAL_CONFIG = _REPO_ROOT / "reference-c++" / "visual_track_control" / "config" / "track_control.json"
|
||||
@@ -27,7 +27,7 @@ def full_config() -> dict:
|
||||
"control": {
|
||||
"frequency_hz": 20.0,
|
||||
"visual_stale_ms": 200,
|
||||
"radar_stale_ms": 500,
|
||||
"distance_stale_ms": 500,
|
||||
"attitude_stale_ms": 300,
|
||||
},
|
||||
"camera": {
|
||||
@@ -57,6 +57,7 @@ def full_config() -> dict:
|
||||
"retreat_velocity_limit_mps": 1.0,
|
||||
"no_distance_action": "hold",
|
||||
"no_distance_approach_limit_mps": 0.5,
|
||||
"no_distance_exit_grace_ms": 3000,
|
||||
},
|
||||
"accel_limit": {
|
||||
"ax_mps2": 2.0,
|
||||
@@ -84,7 +85,9 @@ def test_load_real_config_succeeds():
|
||||
assert cfg.vertical.vz_gain_mps_per_deg == 0.1
|
||||
assert cfg.vertical.vz_limit_mps == 2.0
|
||||
assert cfg.distance.d_exp_m == 10.0
|
||||
assert cfg.distance.no_distance_action is NoDistanceAction.HOLD
|
||||
assert cfg.distance.no_distance_action is NoDistanceAction.SLOW_APPROACH
|
||||
assert cfg.distance.no_distance_exit_grace_ms == 3000
|
||||
assert cfg.control.distance_stale_ms == 500
|
||||
assert cfg.accel_limit.ax_mps2 == 2.0
|
||||
|
||||
|
||||
@@ -169,3 +172,18 @@ def test_fov_out_of_range_throws(tmp_path):
|
||||
with pytest.raises(ValueError) as exc_info:
|
||||
load_from_json(path)
|
||||
assert "camera.fov_h_deg" in str(exc_info.value)
|
||||
|
||||
|
||||
def test_default_no_distance_action_is_slow_approach():
|
||||
# S1 拍板:双目有效域外无距离是常态,默认定速接近(纪要 D4/S1)
|
||||
assert (TrackingConfig().distance.no_distance_action
|
||||
is NoDistanceAction.SLOW_APPROACH)
|
||||
|
||||
|
||||
def test_negative_exit_grace_throws(tmp_path):
|
||||
config = full_config()
|
||||
config["distance"]["no_distance_exit_grace_ms"] = -1
|
||||
path = write_temp_json(tmp_path, config, "vtc_cfg_badgrace.json")
|
||||
with pytest.raises(ValueError) as exc_info:
|
||||
load_from_json(path)
|
||||
assert "no_distance_exit_grace_ms" in str(exc_info.value)
|
||||
|
||||
Reference in New Issue
Block a user