Feature Proposal: Hydraulic cylinder actuator plugin for construction machinery simulation #3365
LoneWolfDog
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi MuJoCo team,
I'd like to propose contributing a hydraulic cylinder actuator plugin to MuJoCo. Hydraulic actuation is the backbone of construction machinery, heavy robotics, and industrial motion systems, yet MuJoCo currently has no support for fluid-power dynamics. I believe this is a significant gap that a plugin can fill without touching the core engine.
Why this matters
MuJoCo's existing actuator types (motor, position, velocity, general) are kinematic abstractions. Real hydraulic systems are governed by pressure continuity ODEs — the actuator force emerges from cavity pressure dynamics, orifice flow equations, and fluid compressibility, not from a direct torque/force command. This matters for:
What already exists:
hydrasimI've built and open-sourced hydrasim (MIT, v0.3.2), a Python-based electro-hydraulic plant simulator designed as a testbed for control algorithms (ADRC, RLS, self-calibration). It has been extensively validated and is the reference implementation for what the MuJoCo plugin would provide.
Single-joint model (5-DOF state):
Physics:
dP/dt = β_e/V × (Q_in - Q_out - A × v)← this is the key equationMulti-actuator excavator arm (21-DOF state):
Validation (v0.3.2):
Proposed plugin architecture
Following the pattern of the existing
mujoco.pidplugin, the hydraulic cylinder plugin would be a C++ engine plugin:Plugin state (per cylinder):
[P_a, P_b, x_v, hysteresis_state]— 4 floats per actuatorConfigurable XML attributes:
Coupling with MuJoCo's dynamics:
This is the key design question. The hydraulic plant and MuJoCo's rigid body dynamics form a two-way coupling:
My proposed approach: one-step-delay decoupling
compute()uses previous step'sP_a, P_bto outputF→ fed to MuJoCoadvance()uses MuJoCo's computedq̇(this step) to sub-step integrateP_a, P_b→ ready for next stepMJCF usage:
What stays out (and why)
mech/module in hydrasim becomes unnecessary in the MuJoCo integration.mujoco.pid!).Questions for the team
Is there interest in this direction? I'd like to confirm alignment before investing in the C++ porting effort.
Coupling approach: Does the one-step-delay approach raise concerns? The alternative would be exposing hydraulic states to MuJoCo's implicit integrator, which seems like a much larger undertaking. I'd appreciate any suggestions on a cleaner coupling mechanism.
Scope for MVP: Is single-cylinder MVP the right starting point, or would you prefer a different scope? I'm also considering whether a simplified "hydraulic cylinder as force generator with pressure states" (ignoring the pump dynamics initially) is the right first step.
Existing work: Are there any internal efforts or community projects I should be aware of that overlap with this?
About me
I work on intelligent excavator control (autonomous material handling, wire-controlled hydraulics, ADRC/RLS self-calibration). hydrasim was built as the plant model testbed for these control algorithms.
I am ready to contribute. Looking forward to your feedback!
Beta Was this translation helpful? Give feedback.
All reactions