fix upstaris problem

primary track一直都有,只是有时候会错误
This commit is contained in:
hjy
2026-04-19 18:11:22 +08:00
parent 5b177c90f4
commit 560a60068f
6 changed files with 196 additions and 28 deletions
+2
View File
@@ -70,6 +70,8 @@ private:
std::string wiwc_topic_;
std::string camera_image_topic_;
bool camera_image_compressed_ = false;
bool always_send_sync_compressed_ = false;
bool always_send_sync_cloud_slam_ = false;
std::string sync_topic_prefix_;
std::string combined_compressed_topic_;
int combined_jpeg_quality_;
+16
View File
@@ -44,12 +44,26 @@ struct TargetObservationConfig {
int reid_feature_dim = 512;
int reid_max_batch_size = 8;
int max_concurrent_tracks = 16;
// Edge margin (in pixels) that is_good_reid_crop requires between the
// bbox and every image border. Set to 0 to allow crops touching the edge
// (common when the person stands close to the camera and the head gets
// cut off). Legacy value was 3.
int reid_crop_edge_margin_px = 0;
// 3D position gate for ReID rebind. dmax = base_m + per_frame_m *
// frames_since_last_seen. soft mode (hard=false) logs via debug counters
// but still allows the similarity match; hard mode rejects the pair.
float reid_3d_gate_base_m = 1.5f;
float reid_3d_gate_per_frame_m = 0.1f;
bool reid_3d_gate_hard = false;
// 3D-proximity fallback: when a row lacks a ReID feature (e.g. bbox was
// too close to the edge for is_good_reid_crop to pass) but has a fresh
// 3D estimate, rebind it to the follow target's stable_id if it lies
// within a strict (tighter than reid_3d_gate) distance of the target's
// last known world pos. Guards against ID inflation during close-range
// partial views that block ReID extraction.
bool reid_3d_fallback_enabled = true;
float reid_3d_fallback_base_m = 0.75f;
float reid_3d_fallback_per_frame_m = 0.05f;
bool debug = false;
};
@@ -83,6 +97,7 @@ struct TargetObservationDebugInfo {
int lost_frames = 0;
int reid_3d_gate_rejections = 0; // hard-mode rejections this frame
int reid_3d_gate_soft_warnings = 0; // soft-mode over-threshold this frame
int reid_3d_fallback_rebinds = 0; // follow-target rebinds by 3D fallback
bool found_existing_target = false;
bool target_selected = false;
bool selected_from_center_bootstrap = false;
@@ -154,6 +169,7 @@ private:
bool has_last_bbox = false;
int64_t last_seen_frame = -1;
bool just_rebound_by_reid = false;
bool just_rebound_by_3d_fallback = false;
float last_rebind_similarity = -1.0f;
// Per-entry 3D state; refreshed whenever compute_entry_3d succeeds.
float last_depth = -1.0f;