feat(social): trigger-based ROS2 bag recorder (Issue #332) #335
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "sl-jetson/issue-332-rosbag-recorder"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Closes #332
New ROS2 node
rosbag_recorder_node— subscribes to a Bool trigger and records configurable ROS topics to timestamped bag files via aros2 bag recordsubprocess./saltybot/record_trigger(Bool):True= start,False= stop/saltybot/recording_status(String):idle|recording|stopping|erroridle→recording→stopping→idle;errorstate on unexpected subprocess exit (retries on nextTruetrigger)auto_stop_s(default 60 s); set to 0 to disablestop_timeout_s(5 s) if process won't stoptopicsparam; empty = record all (--all){bag_dir}/{bag_prefix}_{YYYYMMDD_HHMMSS}— new file per recordingBagRecorderProcessinjected vianode._recorder— fully mockable for offline testingcompute_recording_transition()function for all state-machine logicTest plan
test_rosbag_recorder.py)make_bag_path: prefix, directory, string typeparse_topics: empty, single, multi, whitespace, empty segmentscompute_recording_transition: all IDLE/RECORDING/STOPPING/ERROR transitions, auto-stop timing, force-kill timeout, disabled auto-stop/timeout_on_trigger: stores value, consumed after poll_StubbornRecordersubclass to test SIGKILL path🤖 Generated with Claude Code
e1813f734fto813d6f2529