Repository navigation
ros2-poc viz: display rotation, deg/s rates, no dropped frames + clearer layouts - #258
Merged
mbreiser merged 2 commits intoOct 16, 2026
Merged
Conversation
…rer layouts From checking both dashboards in Foxglove (web 3.4) on ww18 hardware runs replayed at 1x through viz_node (data branch data/ros2-poc-ww18-2026-10-15): - /arena/frame subscription: RELIABLE_QOS (depth 200) like the other inputs. With depth 10 viz_node dropped 15 of 9,969 frames (step 5.2), 17 of 58,918 (soak), 8 of 12,226 (5c); now 9,969/9,969, 58,918/58,918 and 12,226/12,226. - /viz/arena/display_deg (DisplayAngle): the display's unwrapped rotation from the wrapped index (sum of index steps taken the short way round the modulus x frame_dir x deg_per_frame). The modulus is --frames N, else learned per epoch (largest index + 1). A 20-frame grating kept azimuth_deg inside one 36-degree period while the fly turned thousands of degrees; on the ww18 closed-loop runs display - turn - bias is now constant within +/-0.9 degrees (half a frame) in every epoch. The 3D feature bar sits at wrap180(display_deg): unchanged for a pattern spanning the arena, turning with a grating. - /viz/fictrac/fwd_dps, side_dps: rates of FicTrac's integrated cols 20/21 in deg/s (per frame-counter step, so a dropped frame does not double them), the units of speed_dps. - arena-fictrac: closed loop = fly turn vs display rotation; bias angle in its own plot; kinematics = speed / forward / side in deg/s; short indicator labels + panel titles. - arena-bias: camera frame count and displayed index on separate plots; BIAS / Camera / Video indicators with short labels; ROS log panels titled live-only (bags do not record /rosout). - tests/test_viz_node.py (pixi run test-viz): 11 checks of the math, no ROS graph. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mbreiser
added a commit
that referenced
this pull request
Oct 16, 2026
Replayed all five bags at 1x through PR #258's viz_node: display_deg, fwd_dps and side_dps are new, and no frames are dropped (every frame's index + heading at its exact original time). Layouts are PR #258's fixed arena-fictrac + arena-bias; PR #252's first versions and their viz files stay in history at 659c234. README + tools updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ffline In Foxglove (1316 px window) the BIAS light still clipped "reachable" and the gauge title "Camera fps": the three lights now stack in a 60 % column beside the gauge, and the BIAS light reads online / offline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mbreiser
added a commit
that referenced
this pull request
Oct 16, 2026
…ck of the fixed layouts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mbreiser
marked this pull request as ready for review
October 16, 2026 15:18
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
This fixes the problems found when PR #252's two Foxglove dashboards were checked on real
hardware runs from the ww18 Windows rig. It merges into PR #252's branch, not
main.The test data is on branch
data/ros2-poc-ww18-2026-10-15. For each of five runs, each bag wasplayed back at 1× through
viz_node, and the outputs were recorded and moved back onto the run'sown timeline. The data branch README explains how.
viz_node's/arena/framesubscription now usesRELIABLE_QOS(depth 200) like its other inputs. With depth 10 it dropped 15 of 9,969 frames (run 5.2), 17 of
58,918 (10-min soak) and 8 of 12,226 (5c). Now it drops none.
/viz/arena/display_deg(DisplayAngle)unwraps the bridge's wrapped index: the sum of index steps, each taken the short way round the
modulus, × frame direction × degrees per frame. The modulus comes from
--frames N, or islearned per epoch as the largest index + 1.
azimuth_degstayed inside one 36° period while thefly turned thousands of degrees.
every closed-loop epoch of runs 5.2, 5.7, the soak and 5c.
wrap180(display_deg). That is unchanged for a pattern spanning thearena, and for a grating the bar now turns with the pattern.
/viz/fictrac/fwd_dpsandside_dpsare the rates of FicTrac'sintegrated cols 20/21, in the °/s of
speed_dps. They are computed per frame-counter step, so adropped frame doesn't double them.
arena-fictrac.json:arena-bias.json:/rosout.tests/test_viz_node.py(pixi run test-viz): 11 checks of the new math, with no ROS graph.Testing
tests/test_viz_node.py: 11/11 pass./viz/arena/indexhas every frame in every run, with exact original times (|Δt| = 0) and 0 value mismatches.tools/check_layouts.py(on the data branch) on both layouts × five runs: every data panelresolves with data on the four FicTrac runs. The empty ones are expected: last error (nothing
failed), the ROS log (live only), and FicTrac panels on the camera-only B2 run.
tests/test_ros2_poc.py. It doesn't exerciseviz_node, and on Windows this branch'spixi.tomlstill has the$PIXI_PROJECT_ROOTactivation problem that PR LAB-303: ROS 2 bridge graph + MCAP record, ScanImage/BIAS connectors, Studio v0.97 (candidate 2026-10-20) #254 fixed.96b6dc5) stacks the arena-bias lights full-width and makes the BIAS light read online / offline, because "reachable" and the "Camera fps" title still clipped at a 1,316 px window.Tier
None. This targets the spike branch
claude/ecstatic-noether-art3qx(PR #252), notmain.Release notes
none (nothing ships from this PR)
🤖 Generated with Claude Code