feat(observability): Phase-0 baseline-observability package + real-run validation - #60
Open
yueqin22 wants to merge 3 commits into
Open
feat(observability): Phase-0 baseline-observability package + real-run validation#60yueqin22 wants to merge 3 commits into
yueqin22 wants to merge 3 commits into
Conversation
…OMWOO Add a ROS 2 (ament_python) package that captures reproducible-run metadata and Phase-0 KPIs (LiDAR rate, TF latency, odometry drift, cmd_vel staleness, bumper events, map free ratio, recovery latency) from the MVP baseline topic surface, plus a markdown report generator and a synthetic-topic demo publisher for local verification without a Gazebo robot. Verified in WSL + ROS 2 Humble: colcon build OK, colcon test 12/12 pass (10 logic + 2 node smoke tests), launch file parses, and metrics_collector runs as a real node fed by synthetic /scan /odom /tf /cmd_vel /map messages. Includes graceful degradation when ros_gz_interfaces is absent (bumper KPIs disabled until ros-humble-ros-gz-interfaces is installed). See scripts/colcon_validate.sh for the one-shot build/test/run validation. Co-Authored-By: WorkBuddy <workbuddy@tencent.com>
…lling demo_run.sh previously killed the run_metadata node after a fixed 2s sleep, which could interrupt rclpy.init() during DDS cold-start and drop the run-metadata JSON (broken 'cp' at the end). Wait for the one-shot node to self-exit so the metadata file is always written.
…ive sim Scaffold for running oomwoo_baseline collector against the official OOMWOO Gazebo simulation (makerspet/oomwoo:jazzy-dev container + VcXsrv). Builds the package and launches baseline_record.launch.py with use_sim_time:=true to record /scan /odom /tf /cmd_vel /bumper_* /map from the running world.
Collaborator
|
Hi @yueqin22 , thank you for the PR! Would it be possible for you to self-host it - and change the PR to a link to your repo (and a description)? FYI, my Claude a few things
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a Phase-0 ROS 2 (ament_python) observability package for the OOMWOO MVP baseline, so that reproducible-run metadata and the §5.2 KPIs can be captured and reported without hand-rolled scripts.
metrics.py— framework-agnostic KPI aggregation (LiDAR rate, TF latency quantiles, odometry drift, cmd_vel staleness, bumper events, map free ratio, recovery latency).metrics_collector.py— realrclpynode subscribing to the baseline topic surface (/scan /odom /tf /cmd_vel /map /bumper_* /oomwoo_status); degrades gracefully whenros_gz_interfacesis not installed (bumper KPIs disabled untilros-humble-ros-gz-interfacesis present).run_metadata.py— captures ROS_DISTRO/RMW/Git SHA/seed/scenario intorun_metadata.json.scenario_registry.py+config/scenario_registry.yaml— the §5.1 eight baseline scenarios.launch/baseline_record.launch.py,scripts/baseline_report.py(dict + CLI),scripts/system_sampler.py(Linux /proc),scripts/run_experiment.sh,scripts/demo_publisher.py+scripts/demo_run.shfor verification without a Gazebo robot.test/test_metrics.py(10 logic) +test/test_node_smoke.py(2 node) = 12 tests.Verification (WSL + ROS 2 Humble)
colcon buildOK;colcon test12/12 pass.metrics_collectorruns as a real node fed by synthetic /scan /odom /tf /cmd_vel /map @5Hz; producesDEMO_BASELINE_REPORT.md(scan 5.00 Hz meets target, odom drift ≈1.0, TF p95 ≈15 ms).qos_profile_sensor_data),record_cmd_velnot counting samples, andros_gz_interfacesimport crash → graceful degradation.Notes / follow-ups
sudo apt-get install ros-humble-ros-gz-interfaces(auto-enabled once present).See
jihua20260826.md§7/§9 for the plan and execution log.