Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,22 @@ concurrency:

jobs:
integration-test-in-studio-container:
uses: PickNikRobotics/moveit_pro_ci/.github/workflows/workspace_integration_test.yaml@13d4cdf34697226ac67e34d93dda8b94fa477336 # v0.2.1
uses: PickNikRobotics/moveit_pro_ci/.github/workflows/workspace_integration_test.yaml@d490a1dfe91758dd1da3277fbd47b5b1efe5e0c3 # v0.3.1
with:
image_tag: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || github.ref_name }}
# Pinned to 9.3.0-rc9 while the main-branch CUDA images are not yet
# published; 9.2.1's moveit_pro_test_utils is too old (missing
# reset_simulation_before_test that lab_sim's integration test imports).
# The dynamic expression below would normally resolve to the PR's base
# branch (main) or the pushed ref. Revert once the main-* CUDA tags exist.
# image_tag: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || github.ref_name }}
image_tag: "9.3.0-rc9"
colcon_test_args: "--executor sequential"
runner: "picknik-16-amd64"
# Coarsen MuJoCo timestep on CI (default 0.002s = 500Hz) so the heavier 3.6.0
# constraint solver stays at-or-under realtime on CI runners. See
runner: "picknik-16-amd64-gpu"
enable_gpu: true
Comment thread
JWhitleyWork marked this conversation as resolved.
# Re-assert MuJoCo timestep on CI as a backstop. Scene files in this repo
# are standardized to 0.003s, but this override catches any future scene
# whose include chain bypasses that standard, keeping the heavier 3.6.0
# constraint solver at-or-under realtime on CI runners. See
# PickNikRobotics/moveit_pro#18534 for the underlying flake history.
mujoco_ci_timestep: "0.003"
use_ccache: true
Expand Down
8 changes: 6 additions & 2 deletions src/april_tag_sim/description/scene.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@

<compiler angle="radian" autolimits="true" />

<option integrator="implicitfast" />
<option integrator="implicitfast" timestep="0.003" />

<visual>
<global offwidth="1280" offheight="720" />
</visual>

<asset>
<mesh name="cube" file="assets/Cube.stl" />
Expand Down Expand Up @@ -39,7 +43,7 @@
pos="-1.0 -2.0 2.966"
fovy="58"
mode="fixed"
resolution="640 480"
resolution="1280 720"
euler="0.849 0.000 0.0"
/>
<!-- lab desk -->
Expand Down
2 changes: 1 addition & 1 deletion src/dual_arm_sim/description/mujoco/franka3.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<mujoco model="fr3">
<compiler angle="radian" meshdir="assets" />

<option integrator="implicitfast" timestep="0.005" />
<option integrator="implicitfast" timestep="0.003" />

<default>
<default class="fr3">
Expand Down
10 changes: 8 additions & 2 deletions src/dual_arm_sim/description/mujoco/scene.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@
<size nuser_jnt="0" />

<visual>
<global azimuth="120" elevation="-21" fovy="58" />
<global
azimuth="120"
elevation="-21"
fovy="58"
offwidth="1280"
offheight="720"
/>
<headlight ambient="0.3 0.3 0.3" diffuse="0.6 0.6 0.6" specular="0 0 0" />
<rgba haze="0.15 0.25 0.35 1" />
</visual>
Expand Down Expand Up @@ -53,7 +59,7 @@
pos="0.7 0.0 0.65"
fovy="58"
mode="fixed"
resolution="640 480"
resolution="1280 720"
xyaxes="0 -1 0 1 0 0"
/>
<geom
Expand Down
8 changes: 4 additions & 4 deletions src/factory_sim/description/scene.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<mujoco model="fanuc scene">
<compiler angle="radian" autolimits="true" />
<option integrator="implicitfast" timestep="0.01">
<option integrator="implicitfast" timestep="0.003">
<flag multiccd="enable" override="enable" />
</option>

Expand Down Expand Up @@ -53,7 +53,7 @@
<visual>
<headlight diffuse="0.6 0.6 0.6" ambient="0.1 0.1 0.1" specular="0 0 0" />
<rgba haze="0.15 0.25 0.35 1" />
<global azimuth="120" elevation="-20" />
<global azimuth="120" elevation="-20" offwidth="1280" offheight="720" />
</visual>

<!-- Add Fanuc support files -->
Expand All @@ -74,7 +74,7 @@
pos="-1.046 1.252 2.019"
fovy="58"
mode="fixed"
resolution="640 480"
resolution="1280 720"
xyaxes="-0.607 -0.795 0.000 0.555 -0.424 0.715"
/>
<site
Expand All @@ -88,7 +88,7 @@
pos="-0.25 0.6 0.85"
fovy="58"
mode="fixed"
resolution="640 480"
resolution="1280 720"
xyaxes="0 -1 0 1 0 0"
/>
<site
Expand Down
6 changes: 4 additions & 2 deletions src/grinding_sim/description/scene.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<mujoco model="ur20 grinding scene">
<compiler angle="radian" autolimits="true" assetdir="grinding_sim_assets" />

<option timestep="0.003" />

<default>
<!-- Actuator & joint defaults -->
<joint axis="0 0 1" range="-6.28319 6.28319" armature="0.5" />
Expand Down Expand Up @@ -95,7 +97,7 @@
<visual>
<headlight diffuse="0.6 0.6 0.6" ambient="0.1 0.1 0.1" specular="0 0 0" />
<rgba haze="0.15 0.25 0.35 1" />
<global azimuth="120" elevation="-20" />
<global azimuth="120" elevation="-20" offwidth="1280" offheight="720" />
</visual>

<worldbody>
Expand Down Expand Up @@ -136,7 +138,7 @@
pos="0.0 -2.56685 1.62333"
fovy="58"
mode="fixed"
resolution="640 480"
resolution="1280 720"
quat="0.916616 0.399763 -0.000804 -0.001843"
/>

Expand Down
2 changes: 1 addition & 1 deletion src/hangar_sim/description/hangar_scene.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<include file="hangar.xml" />
<option
integrator="implicitfast"
timestep="0.025"
timestep="0.003"
noslip_iterations="5"
impratio="20"
cone="elliptic"
Expand Down
2 changes: 1 addition & 1 deletion src/kitchen_sim/description/mujoco/franka3.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<mujoco model="fr3">
<compiler angle="radian" meshdir="assets" />

<option integrator="implicitfast" timestep="0.005" />
<option integrator="implicitfast" timestep="0.003" />

<default>
<default class="fr3">
Expand Down
6 changes: 3 additions & 3 deletions src/kitchen_sim/description/mujoco/scene.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<visual>
<headlight diffuse="0.6 0.6 0.6" ambient="0.3 0.3 0.3" specular="0 0 0" />
<rgba haze="0.15 0.25 0.35 1" />
<global azimuth="120" elevation="-20" />
<global azimuth="120" elevation="-20" offwidth="1280" offheight="720" />
</visual>

<asset>
Expand Down Expand Up @@ -62,7 +62,7 @@
<camera
name="scene_camera"
fovy="48"
resolution="640 480"
resolution="1280 720"
pos="-0.476 -0.378 2.733"
xyaxes="0.510 -0.860 0.000 0.666 0.395 0.633"
/>
Expand All @@ -77,7 +77,7 @@
<camera
name="back_camera"
fovy="48"
resolution="640 480"
resolution="1280 720"
pos="-0.661 0.324 1.325"
xyaxes="0.026 -1.000 0.000 0.062 0.002 0.998"
/>
Expand Down
16 changes: 11 additions & 5 deletions src/lab_sim/description/scene.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@

<compiler angle="radian" autolimits="true" />

<option integrator="implicitfast" impratio="10" noslip_iterations="3" />
<option
integrator="implicitfast"
timestep="0.003"
impratio="10"
noslip_iterations="3"
/>

<!-- nuser_cam=1 enables per-camera user params: 0=RGB+Depth, 1=RGB-only, 2=3D-lidar -->
<!-- memory: arena size for contacts/constraints. MuJoCo 3.3+ stopped growing the arena
Expand Down Expand Up @@ -84,10 +89,11 @@
/>
</asset>

<!-- Set offscreen rendering resolution to match camera sensor resolution (640x480) so that
MuJoCo renders images at the correct size for the simulated wrist and scene cameras. -->
<!-- Set offscreen rendering resolution to fit the largest camera in this scene
(scene_camera at 1280x720, defined below). picknik_mujoco_ros requires
<global offwidth offheight> >= every camera's resolution or load fails. -->
<visual>
<global offwidth="640" offheight="480" />
<global offwidth="1280" offheight="720" />
<headlight ambient="0.3 0.3 0.3" diffuse="0.5 0.5 0.5" />
</visual>

Expand Down Expand Up @@ -124,7 +130,7 @@
pos="1.8 -0.495 1.0"
fovy="58"
mode="fixed"
resolution="640 480"
resolution="1280 720"
xyaxes="0.586 0.810 0.000 -0.186 0.135 0.973"
user="0"
/>
Expand Down
62 changes: 62 additions & 0 deletions src/lab_sim/test/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Copyright 2026 PickNik Inc.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# * Neither the name of the PickNik Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

"""Live per-objective progress for objectives_integration_test.

Pytest's default ``--capture=fd`` redirects fds 1 and 2, so when CTest kills
the test on timeout (TIMEOUT 600 in CMakeLists.txt) all per-test output is
lost and the CI log shows nothing past pytest's "collected N items" header.

These hooks write directly to fd 2, bypassing the capture, so the CI log
always shows which objective was running when the timeout fired and how long
each completed objective took — the information needed to triage flakes,
budget overruns, and runner regressions.
"""

import os
import time

_started_at: dict[str, float] = {}


def pytest_runtest_logstart(nodeid, location):
_started_at[nodeid] = time.monotonic()
os.write(2, f" START {nodeid}\n".encode())


def pytest_runtest_logreport(report):
if report.when != "call":
return
nodeid = report.nodeid
elapsed = time.monotonic() - _started_at.get(nodeid, time.monotonic())
outcome = report.outcome.upper() # PASSED / FAILED / SKIPPED
line = f" {outcome:7s} {nodeid} ({elapsed:.1f}s)"
if report.failed and report.longrepr:
reason = str(report.longrepr).splitlines()[-1][:200]
line += f"\n └─ {reason}"
os.write(2, (line + "\n").encode())
2 changes: 2 additions & 0 deletions src/lunar_sim/mjcf/scene.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<mujoco model="lunar sim scene">
<option timestep="0.003" />

<default>
<default class="visual">
<geom
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@
pos="0.0 -0.056 -0.058"
fovy="58"
mode="fixed"
resolution="640 480"
resolution="1280 720"
quat="0.0 0.0 0.0 1.0"
/>
<site
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@
pos="0.0 -0.056 -0.058"
fovy="58"
mode="fixed"
resolution="640 480"
resolution="1280 720"
quat="0.0 0.0 0.0 1.0"
/>
<site
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<mujoco model="kinova scene">
<include file="gen3_7dof.xml" />
<option gravity="0 0 0" />
<option timestep="0.003" gravity="0 0 0" />
<option>
<flag multiccd="enable" />
</option>
Expand All @@ -13,7 +13,7 @@
<visual>
<headlight diffuse="0.6 0.6 0.6" ambient="0.3 0.3 0.3" specular="0 0 0" />
<rgba haze="0.15 0.25 0.35 1" />
<global azimuth="120" elevation="-20" />
<global azimuth="120" elevation="-20" offwidth="1280" offheight="720" />
</visual>

<asset>
Expand Down Expand Up @@ -58,7 +58,7 @@
pos="-0.5 0.75 1.5"
fovy="75"
mode="fixed"
resolution="640 480"
resolution="1280 720"
quat="0.365715 0.232986 -0.484157 -0.759975"
/>
<site
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<mujoco model="kinova scene">
<option timestep="0.003" />
<include file="gen3_7dof_rafti_fingers.xml" />
<statistic center="0.3 0 0.4" extent="1" />
<default>
Expand All @@ -8,7 +9,7 @@
<visual>
<headlight diffuse="0.6 0.6 0.6" ambient="0.3 0.3 0.3" specular="0 0 0" />
<rgba haze="0.15 0.25 0.35 1" />
<global azimuth="120" elevation="-20" />
<global azimuth="120" elevation="-20" offwidth="1280" offheight="720" />
</visual>

<asset>
Expand Down Expand Up @@ -64,7 +65,7 @@
pos="0.0 0.3 0.55"
fovy="58"
mode="fixed"
resolution="640 480"
resolution="1280 720"
quat="0.365715 0.232986 -0.484157 -0.759975"
/>
<site
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<mujoco model="kinova scene">
<include file="gen3_7dof.xml" />
<option timestep="0.003" />
<statistic center="0.3 0 0.4" extent="1" />
<default>
<geom solref=".004 1" />
Expand All @@ -8,7 +9,7 @@
<visual>
<headlight diffuse="0.6 0.6 0.6" ambient="0.3 0.3 0.3" specular="0 0 0" />
<rgba haze="0.15 0.25 0.35 1" />
<global azimuth="120" elevation="-20" />
<global azimuth="120" elevation="-20" offwidth="1280" offheight="720" />
</visual>

<asset>
Expand Down Expand Up @@ -64,7 +65,7 @@
pos="0.0 0.3 0.55"
fovy="58"
mode="fixed"
resolution="640 480"
resolution="1280 720"
quat="0.365715 0.232986 -0.484157 -0.759975"
/>
<site
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
pos="0.0 -0.056 -0.058"
fovy="58"
mode="fixed"
resolution="640 480"
resolution="1280 720"
quat="0.0 0.0 0.0 1.0"
/>
<site
Expand Down
Loading
Loading