Add hangar_sim objectives integration test#692
Conversation
Adds an end-to-end pytest that runs every runnable hangar_sim objective through /execute_objective and asserts success, cancelling the one loop-style objective. Skips ML/GPU-ONNX, UI-input, and core-library UI objectives that cannot run headless in CI, each with a per-line reason. Wires the pytest into CMake and both example_ws CI matrices, and mirrors lab_sim's conftest for per-objective progress + /rosout capture on timeout. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
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
|
needs: moveit_pro/#19591
Motivation
Stream 2 of the integration-testing effort: extend the example_ws end-to-end objectives suite (today only
lab_sim) tohangar_sim, so every runnable hangar_sim objective is exercised through the full stack on each PR.Brief description
src/hangar_sim/test/objectives_integration_test.py: parametrizes over every runnable hangar_sim objective, executes it via/execute_objectiveand asserts success; cancels the one loop-style objective (Plan Path Along Surface - Loop). Uses the fixture'swait_for_action_servershelper to gate on the/vacuum_gripper/gripper_cmdaction.skip_objectivesdrops what cannot run headless in CI, each with a per-line reason: ML/GPU-ONNX segmentation+grasp pipelines, UI-input objectives (clicked-point, pose-from-user, MTC/path approval), and the two core-library UI objectives every config aggregates (Teleoperate,Marker Visualization Example).CMakeLists.txt(mirrors lab_sim, incl.ROS_LOG_DIRredirect) and addshangar_simto both CI matrices inci.yaml.conftest.py+capture_rosout.pyfor per-objective progress and/rosoutNDJSON capture on aTIMEOUT 600kill.Pairs with moveit_pro#19591, which registers
hangar_simfor the MuJoCo reset hook (needs:token above pulls that PR's image so the suite runs the reset between objectives).How it was tested
Built the moveit_pro overlay +
hangar_simin a dev container and ranpython -m pytest test/objectives_integration_test.py: backend boots, reset hook fires between objectives, 17 objectives pass, the cancel path exercises, all skips apply. Two cartesian objectives (Cartesian Plan Simple Square,Cartesian Path with Collision Checking) time out under software MuJoCo rendering on a GPU-less host (a 2 s motion took 28 s); these are deferred to the GPU CI runner, which is where the real signal comes from.Solution - Draw Picknikpassed on a clean isolated run.Known follow-ups
publish-and-commentis still pinned tointegration-test-report-lab_sim-{humble,jazzy}, so hangar_sim reports are produced as artifacts but not yet surfaced in the PR comment. Merge gating is unaffected (the aggregateexample_ws / integrationstatus covers everyconfig_package). Follow-up templatespublish-and-commentoverconfig_package.conftest.py+capture_rosout.pyare now duplicated between lab_sim and hangar_sim; hoist into a shared location before more sims land.Plan Path Along Surface,Plan Path Along Surface - Loop) are a jazzy watch-item (PR #19531). If the first jazzy run hitspcl::fromPCLPointCloud2: No data to copy, move them toskip_objectives.Release notes
None