DO NOT MERGE — Diagnose Plan Path Along Surface CI hang (moveit_pro#20427)#774
DO NOT MERGE — Diagnose Plan Path Along Surface CI hang (moveit_pro#20427)#774griswaldbrooks wants to merge 1 commit into
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
|
Consider whether the change should land upstream in Overlapping files
|
|
|
[written by AI] Diagnostics served their purpose — root cause identified and fixed by #776. The instrumentation recipe (goal_time abort + per-test rosbag capture riding the test-results artifact) is documented in moveit_pro#20427 for future use. |
[written by AI]
Diagnostic branch — do not merge. Instrumentation to identify which joint hangs the
Plan Path Along Surfaceexecute goal in hangar_sim CI (PickNikRobotics/moveit_pro#20427).Background
Analysis on the moveit_pro issue established the failure is a silent controller hang, not slowness:
constraints.goal_time: 0.0makes upstream JTC's goal-tolerance abort branch unreachable, so a goal outside tolerance after the last trajectory point neither succeeds nor aborts — and the per-joint tolerance error only prints on the abort path. Incidence over 21 mined runs: ≥1 failure in 70% of runs, strictly bimodal (~55 s pass or exactly the 90 s fixture cap), only this objective ever fails.Instruments
goal_time: 20.0inpicknik_ur.ros2_control.yaml— converts the silent hang into aGOAL_TOLERANCE_VIOLATEDabort at trajectory-end + 20 s (~T+75 s, inside the 90 s fixture cap) whose log line names the offending joint and error magnitude. This is also the candidate permanent regression guard.conftest.py) — records/joint_states,/tf(_static),/clock, JTCcontroller_state, FollowJointTrajectory action status/feedback, and base odometry as a subprocess (same fork/DDS isolation rule ascapture_rosout). Bags for failing tests and for the two surface objectives (pass or fail, for healthy-vs-hung diffing) are kept underbuild/hangar_sim/test_results/bags/, which the reusable workflow already uploads in thetest-results-*artifact; all other bags are deleted on pass. Playback:ros2 bag play <dir> --clock+ RViz withuse_sim_time.Method
Sequential
workflow_dispatchruns (-f image_tag=main) on this branch until several failure samples are captured (~70% per-run incidence → a handful of runs suffices). Each failure yields the JTC abort line in captured stdout plus a scrubbable bag artifact. Findings and the resulting fix PR go to moveit_pro#20427.Release notes
None