Decouple implicit-actuator effort limit from solver clamp - #7078
Conversation
Treat effort_limit as the actuator-facing rated force or torque and effort_limit_sim as the physics-solver clamp. Preserve existing one-field fallbacks while allowing both fields to carry distinct values, mirroring the velocity-limit semantics introduced in isaac-sim#6481.
Greptile SummaryThe PR separates an implicit actuator's model-facing rated effort limit from its solver-level clamp while preserving existing fallback behavior for single-field configurations.
Confidence Score: 5/5The PR appears safe to merge, with the intended independent effort-limit semantics consistently documented and covered across the affected simulation backends. The constructor preserves prior behavior for zero-, one-, and equal-field configurations, while differing values are resolved separately and backend tests verify that only the solver-facing value is written to physics. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
Config["ImplicitActuatorCfg"]
Rated["effort_limit<br/>rated/model-facing limit"]
Solver["effort_limit_sim<br/>solver clamp"]
Model["Implicit actuator<br/>effort estimate"]
Physics["Physics backend<br/>joint drive"]
Config --> Rated
Config --> Solver
Rated --> Model
Solver --> Physics
Reviews (1): Last reviewed commit: "Decouple implicit-actuator effort limit ..." | Re-trigger Greptile |
There was a problem hiding this comment.
Isaac Lab Review Bot
The implicit-actuator effort-limit split is consistently implemented and tested, but the updated public configuration docstrings need the required SI unit notation before merge.
- Design and architecture: The separation of model-facing
effort_limitfrom solver-facingeffort_limit_simis coherent with the fallback behavior and backend write paths covered by the updated tests. - API: The rewritten public docstrings for
ActuatorBaseCfg.effort_limitandeffort_limit_simomit inline[N or N·m]units, contrary to the repository documentation requirements and the corresponding runtime attribute documentation. Add the unit notation to both fields. - Implementation: The fallback branches preserve single-field behavior, while differing configured values remain independent and only
effort_limit_simreaches the solver. No implementation issue is evidenced beyond the public documentation omission.
Minor fixes needed. Posted 1 actionable finding inline.
Automated review; human maintainers own approval decisions.
|
|
||
| This limit is used to clip the computed torque sent to the simulation. If None, the | ||
| limit is set to the value specified in the USD joint prim. | ||
| This is the actuator's rated force/torque reflected at the joint. It clips the output of explicit |
There was a problem hiding this comment.
🔵 Suggestion · Api — Config effort-limit docstrings omit SI units
The rewritten docstrings for effort_limit and effort_limit_sim describe force/torque quantities without the required inline unit notation, while the matching ActuatorBase attributes were updated in this diff to [N or N·m]. Add the same [N or N·m] annotation to both config fields so the public configuration surface states units consistently with the runtime attributes.
# Description > [!IMPORTANT] > **Depends on #7078 — that PR must be merged first.** This branch is stacked on the effort-limit mirror of #6481, so the diff includes its single actuator commit. Review the Factory commits on top; after #7078 lands, rebasing will remove the parent commit from this diff. Adds **`IsaacContrib-Factory-Franka`**, a preset-driven contact-rich assembly task under `isaaclab_tasks.contrib.nist`. The task covers 12 NIST taskboard variants: - M16 nut threading - round peg insertion at 4, 8, 12, and 16 mm - rectangular rod insertion at 4, 8, 12, and 16 mm - small, medium, and large gear meshing Assembly geometry, reset strategy, curriculum, robot, and physics are composed through presets rather than separate environment classes. The task supports explicit `isaacsim_physx` and `newton_mjwarp` presets, with `physx` retaining automatic backend selection. ## Dependency #7078 separates the two implicit-actuator effort fields: - `effort_limit` retains the actuator-facing rated force or torque. - `effort_limit_sim` controls the physics-solver clamp. The Factory Franka configuration intentionally authors distinct rated and solver limits, so it cannot construct on unmodified `develop`. ## Changes - Added the Factory task, assembly profiles, reset-state generation, sampling, rewards, observations, terminations, and curriculum. - Added the 12 task presets and RSL-RL configuration. - Added explicit Isaac Sim PhysX and Newton physics configuration. - Kept task assets on uploaded asset paths; no Factory-specific Nucleus root constant is introduced. - Bounded precollected reset states in the existing environment smoke harness so one- and two-environment CI cases remain smoke tests rather than building the full training bank. ## Type of change - New feature (non-breaking) ## Validation - [x] `uv run isaaclab -f` - [x] Preset decision suite: 19 passed - [x] Exact Factory two-environment CI smoke case: 1 passed in 35.8 seconds - [x] Five-iteration `isaacsim_physx` training run completed - [x] Changelog fragment validation - [x] No new test files were added while addressing the CI failures
Description
This is the effort-limit mirror of #6481 and extracts the actuator dependency from #6891.
Actuator configs expose two effort-limit fields with different responsibilities, but implicit actuators currently require them to be equal and raise
ValueErrorwhen both carry different values.This PR gives each field one clear job and lets them coexist:
effort_limit— the actuator-facing rated force or torque. Explicit actuator models use it for output clipping; implicit actuators retain it as their model-facing limit.effort_limit_sim— the solver-level clamp. Physics backends write this value to the simulated joint drive.Keeping them independent lets a configuration retain a rated limit while deliberately selecting a different solver clamp. This is needed by the Factory Franka configuration, which carries datasheet limits separately from its contact-stability solver guards.
Backwards compatibility: configurations that set only one field, set equal values, or set neither behave as before. The narrow behavior change is that setting both to different values is now valid instead of raising, and an
effort_limit-only implicit actuator no longer emits a deprecation warning.Type of change
Validation
developat the differing-limit caseuv run isaaclab -f