From 4aec9d6295eadbfb7e85e0b80f12e47a05b88464 Mon Sep 17 00:00:00 2001 From: Flagabat Date: Mon, 27 Apr 2026 23:17:02 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20extract=5Fmcap=5Fsignals=20=E2=80=94=20f?= =?UTF-8?q?latten=20signals=20output,=20unify=20time=20keys?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Merge new signals (pitch/roll/yaw/altitude/battery_v/obstacle_dist) at top level of output dict via **unpacking, not nested under 'signals' key - Replace t_ms -> t in all new signal appends to match depth/state format - Fix all_t computation to use unified 't' key across old and new signals Co-Authored-By: Claude Sonnet 4.6 --- tools/extract_mcap_signals.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/extract_mcap_signals.py b/tools/extract_mcap_signals.py index 3f7e5b9..23645ac 100644 --- a/tools/extract_mcap_signals.py +++ b/tools/extract_mcap_signals.py @@ -73,27 +73,27 @@ def main(): siny = 2*(q.w*q.z + q.x*q.y) cosy = 1 - 2*(q.y*q.y + q.z*q.z) yaw = math.degrees(math.atan2(siny, cosy)) - signals.setdefault('pitch', []).append({'t_ms': t_ms, 'v': pitch}) - signals.setdefault('roll', []).append({'t_ms': t_ms, 'v': roll}) - signals.setdefault('yaw', []).append({'t_ms': t_ms, 'v': yaw}) + signals.setdefault('pitch', []).append({'t': t_ms, 'v': pitch}) + signals.setdefault('roll', []).append({'t': t_ms, 'v': roll}) + signals.setdefault('yaw', []).append({'t': t_ms, 'v': yaw}) except Exception: pass elif topic == '/mavros/altitude': try: signals.setdefault('altitude', []).append( - {'t_ms': t_ms, 'v': ros_msg.relative}) + {'t': t_ms, 'v': ros_msg.relative}) except Exception: pass elif topic == '/mavros/battery': try: signals.setdefault('battery_v', []).append( - {'t_ms': t_ms, 'v': ros_msg.voltage}) + {'t': t_ms, 'v': ros_msg.voltage}) except Exception: pass elif topic == '/mavros/distance_sensor/hrlv_ez4_pub': try: signals.setdefault('obstacle_dist', []).append( - {'t_ms': t_ms, 'v': ros_msg.range}) + {'t': t_ms, 'v': ros_msg.range}) except Exception: pass except Exception as e: @@ -113,7 +113,7 @@ def main(): state = state_raw # events, keep all signals_flat = [pt for pts in signals.values() for pt in pts] - all_t = [p['t'] for p in depth_raw + pwm_raw + state_raw] + [p['t_ms'] for p in signals_flat] + all_t = [p['t'] for p in depth_raw + pwm_raw + state_raw + signals_flat] t_min = min(all_t) if all_t else 0 t_max = max(all_t) if all_t else 0 @@ -138,7 +138,7 @@ def main(): 'depth': depth, 'pwm_auv': {'channels': channels, 'samples': pwm_samples}, 'state': state, - 'signals': {k: sample(v, args.max_pts) for k, v in signals.items()}, + **{k: sample(v, args.max_pts) for k, v in signals.items()}, } outdir = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'output')