fix: extract_mcap_signals — flatten signals output, unify time keys

- 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 <noreply@anthropic.com>
This commit is contained in:
Flagabat
2026-04-27 23:17:02 +02:00
parent af2bb6581f
commit 4aec9d6295

View File

@@ -73,27 +73,27 @@ def main():
siny = 2*(q.w*q.z + q.x*q.y) siny = 2*(q.w*q.z + q.x*q.y)
cosy = 1 - 2*(q.y*q.y + q.z*q.z) cosy = 1 - 2*(q.y*q.y + q.z*q.z)
yaw = math.degrees(math.atan2(siny, cosy)) yaw = math.degrees(math.atan2(siny, cosy))
signals.setdefault('pitch', []).append({'t_ms': t_ms, 'v': pitch}) signals.setdefault('pitch', []).append({'t': t_ms, 'v': pitch})
signals.setdefault('roll', []).append({'t_ms': t_ms, 'v': roll}) signals.setdefault('roll', []).append({'t': t_ms, 'v': roll})
signals.setdefault('yaw', []).append({'t_ms': t_ms, 'v': yaw}) signals.setdefault('yaw', []).append({'t': t_ms, 'v': yaw})
except Exception: except Exception:
pass pass
elif topic == '/mavros/altitude': elif topic == '/mavros/altitude':
try: try:
signals.setdefault('altitude', []).append( signals.setdefault('altitude', []).append(
{'t_ms': t_ms, 'v': ros_msg.relative}) {'t': t_ms, 'v': ros_msg.relative})
except Exception: except Exception:
pass pass
elif topic == '/mavros/battery': elif topic == '/mavros/battery':
try: try:
signals.setdefault('battery_v', []).append( signals.setdefault('battery_v', []).append(
{'t_ms': t_ms, 'v': ros_msg.voltage}) {'t': t_ms, 'v': ros_msg.voltage})
except Exception: except Exception:
pass pass
elif topic == '/mavros/distance_sensor/hrlv_ez4_pub': elif topic == '/mavros/distance_sensor/hrlv_ez4_pub':
try: try:
signals.setdefault('obstacle_dist', []).append( signals.setdefault('obstacle_dist', []).append(
{'t_ms': t_ms, 'v': ros_msg.range}) {'t': t_ms, 'v': ros_msg.range})
except Exception: except Exception:
pass pass
except Exception as e: except Exception as e:
@@ -113,7 +113,7 @@ def main():
state = state_raw # events, keep all state = state_raw # events, keep all
signals_flat = [pt for pts in signals.values() for pt in pts] 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_min = min(all_t) if all_t else 0
t_max = max(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, 'depth': depth,
'pwm_auv': {'channels': channels, 'samples': pwm_samples}, 'pwm_auv': {'channels': channels, 'samples': pwm_samples},
'state': state, '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') outdir = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'output')