From 81720071b816d57598bbb438383e3ff259faabb9 Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Thu, 9 Apr 2026 06:51:57 -0700 Subject: [PATCH] Changes to `dcmotor`: - Remove `lugre:viscous`, should now be added directly to actuator `damping`. Trying to do this for the user was incompatible with default inheritance (compounding instead of overriding). - Move voltage limiting from the `saturation` to the `controller` attribute. - Fix indexing issues in default inheritance. PiperOrigin-RevId: 897087642 Change-Id: I5388c2633e15c7e223992e7eb5d6a28db75a6438 --- doc/XMLreference.rst | 33 +++--- doc/_static/dcmotor.pdf | Bin 599037 -> 599178 bytes doc/dcmotor/dcmotor.tex | 26 +++-- doc/includes/references.h | 6 +- include/mujoco/mujoco.h | 6 +- python/mujoco/introspect/functions.py | 6 +- python/mujoco/specs.cc | 12 +-- src/user/user_api.cc | 32 +++--- src/user/user_api.h | 6 +- src/xml/xml_native_reader.cc | 23 ++-- test/engine/engine_forward_test.cc | 110 +++++++++++++++++++- test/engine/testdata/derivative/dcmotor.xml | 2 +- test/user/user_api_test.cc | 49 +++++++++ test/xml/xml_native_reader_test.cc | 109 ++++++++++++++++++- 14 files changed, 335 insertions(+), 85 deletions(-) diff --git a/doc/XMLreference.rst b/doc/XMLreference.rst index 72bfd3d8..a1443753 100644 --- a/doc/XMLreference.rst +++ b/doc/XMLreference.rst @@ -6446,14 +6446,14 @@ This element has the following custom attributes in addition to the common attri .. _actuator-dcmotor-saturation: -:at:`saturation`: :at-val:`real(4), "0 0 0 0"` - Limits on the actuator, defined as :at:`saturation` = ":at-val:`torque` :at-val:`current` :at-val:`voltage` +:at:`saturation`: :at-val:`real(3), "0 0 0"` + Limits on the actuator, defined as :at:`saturation` = ":at-val:`torque` :at-val:`current` :at-val:`current_rate`". :at-val:`torque` and :at-val:`current` are alternative specifications of the maximum continuous torque: if :at-val:`current` is given, :at-val:`torque` :math:`= K \cdot` :at-val:`current`; if both are given, :at-val:`torque` takes precedence. Sets :at:`forcerange` to [:math:`-\tau_{\max},\, \tau_{\max}`]. - :at-val:`voltage` sets the maximum voltage :math:`V_{\max}`. :at-val:`current_rate` sets the maximum rate of change - of current :math:`(di/dt)_{\max}` (requires :ref:`inductance`). A value of 0 (the - default) for any sub-value disables the respective limit. (see `tech note <_static/dcmotor.pdf>`__, Section 2) + :at-val:`current_rate` sets the maximum rate of change of current :math:`(di/dt)_{\max}` (requires + :ref:`inductance`). A value of 0 (the default) for any sub-value disables the respective + limit. (see `tech note <_static/dcmotor.pdf>`__, Section 2) .. _actuator-dcmotor-cogging: @@ -6465,12 +6465,12 @@ This element has the following custom attributes in addition to the common attri .. _actuator-dcmotor-lugre: -:at:`lugre`: :at-val:`real(6), "0 0 0 0 0 0"` - LuGre friction, defined as :at:`lugre` = ":at-val:`stiffness` :at-val:`damping` :at-val:`viscous` :at-val:`coulomb` - :at-val:`static` :at-val:`stribeck`" (N·m/rad, N·m·s/rad, N·m·s/rad, N·m, N·m, rad/s). Disabled when +:at:`lugre`: :at-val:`real(5), "0 0 0 0 0"` + LuGre friction, defined as :at:`lugre` = ":at-val:`stiffness` :at-val:`damping` :at-val:`coulomb` + :at-val:`static` :at-val:`stribeck`" (N·m/rad, N·m·s/rad, N·m, N·m, rad/s). Disabled when :at-val:`stiffness` = 0 (the default). Adds one activation variable for bristle deflection. Note that the - :at-val:`viscous` coefficient is mapped directly to the actuator :ref:`damping` array - (specifically the linear term, :at-val:`damping[0]`). If both are specified, their values are summed. + viscous damping coefficient :math:`\sigma_2` is not part of the :at:`lugre` attribute and should be + added to the standard actuator :ref:`damping` attribute. (see `tech note <_static/dcmotor.pdf>`__, Sections 1.4 and 2.4) .. _actuator-dcmotor-input: @@ -6482,12 +6482,15 @@ This element has the following custom attributes in addition to the common attri .. _actuator-dcmotor-controller: -:at:`controller`: :at-val:`real(5), "0 0 0 0 0"` +:at:`controller`: :at-val:`real(6), "0 0 0 0 0 0"` PID controller parameters, defined as :at:`controller` = ":at-val:`kp` :at-val:`ki` :at-val:`kd` - :at-val:`slewmax` :at-val:`Imax`". Depending on the :at:`input` mode, the controller stabilizes either position or - velocity. If the :at:`input` mode is voltage, this attribute is ignored. A value of 0 (the default) disables the - respective feature: :at-val:`slewmax` = 0 means no slew-rate limiting, :at-val:`Imax` = 0 means no anti-windup - clamping. (see `tech note <_static/dcmotor.pdf>`__, Section 2.5) + :at-val:`slewmax` :at-val:`Imax` :at-val:`Vmax`". Depending on the :at:`input` mode, the controller stabilizes + either position or velocity. If the :at:`input` mode is voltage, :at-val:`kp`, :at-val:`ki`, :at-val:`kd` are + ignored. :at-val:`Vmax` sets the maximum drive voltage :math:`v_{\max}` (Volt); in position/velocity modes it clamps + the controller output, in voltage mode it clamps the control signal (if :at:`ctrlrange` is also set, the tighter + limit wins). A value of 0 (the default) disables the respective feature. When positive, :at-val:`slewmax` limits the + setpoint rate-of-change, :at-val:`Imax` clamps the integrator state (anti-windup), and :at-val:`Vmax` clamps the + drive voltage. (see `tech note <_static/dcmotor.pdf>`__, Section 2.5) .. _actuator-plugin: diff --git a/doc/_static/dcmotor.pdf b/doc/_static/dcmotor.pdf index a811acdcc1b69efa07875518434fa27ef6fbea67..cfee21c4ac9a76c928a047de74136c889e8645c5 100644 GIT binary patch delta 64848 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≦$y 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 )7cv(MQ?gvrU=0|R-ncXSxY5YO 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 MP$VQGa-vZG0}|SP_W%F@ delta 64617 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�CAvtTv8nzu>NZ%u;RvYu?E8%RZ5S?w`J4TT4% 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

3Iwmu3Uo+I)h)?zl$gLj`;~ZauJLldG+quO#L~ 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 diff --git a/doc/dcmotor/dcmotor.tex b/doc/dcmotor/dcmotor.tex index 185e6e41..0af0fa2c 100644 --- a/doc/dcmotor/dcmotor.tex +++ b/doc/dcmotor/dcmotor.tex @@ -81,7 +81,7 @@ \newcommand{\atNLS}{\texttt{nominal:no\_load\_speed}} \newcommand{\atTMAX}{\texttt{saturation:torque}} \newcommand{\atIMAX}{\texttt{saturation:current}} -\newcommand{\atVMAX}{\texttt{saturation:voltage}} +\newcommand{\atVMAX}{\texttt{controller:Vmax}} \newcommand{\atCRATE}{\texttt{saturation:current\_rate}} \newcommand{\atKP}{\texttt{controller:kp}} \newcommand{\atKI}{\texttt{controller:ki}} @@ -104,7 +104,6 @@ \newcommand{\atTAUC}{\texttt{lugre:coulomb}} \newcommand{\atTAUS}{\texttt{lugre:static}} \newcommand{\atWS}{\texttt{lugre:stribeck}} -\newcommand{\atSIGV}{\texttt{lugre:viscous}} \title{MuJoCo DC Motor Model} \author{Google DeepMind} @@ -338,7 +337,7 @@ Motor drivers often impose a hard limit on $di/dt$ to protect windings and elect \subsection{Mechanical Model} \label{sec:mechanical} -Several purely mechanical phenomena affect the motor's behavior and the effective delivered torque. +Several purely mechanical phenomena affect the motor's behavior and delivered torque, warping the electromagnetic performance envelope. \paragraph{Mechanical losses.} These reduce the net torque available at the shaft: $\tau_{\text{net}} = \tau_{\text{elec}} - \tau_{\text{loss}}$. @@ -355,7 +354,7 @@ These reduce the net torque available at the shaft: $\tau_{\text{net}} = \tau_{\ \end{equation} This provides one constraint on two unknowns ($\tau_c$ and $B$). Without additional data, the user must either assume one dominates or obtain friction measurements at multiple speeds. In MuJoCo terms, $\tau_c$ maps to \texttt{frictionloss} and $B$ to \texttt{damping}. -\noindent Combining current saturation with both mechanical losses, the net torque is: +Combining current saturation with both mechanical losses, the net torque is: \begin{equation*} \tau_{\text{net}} = \text{clip}\!\left( \frac{K}{R}(v - K \, \omega),\; \pm K\, i_{\max} \right) - B \, \omega - \tau_c \, \text{sgn}(\omega) @@ -485,7 +484,7 @@ where $A$ is the amplitude, $N_p$ is the number of pole pairs times the number o Symbol & Description & Formula / Note \\ \midrule $\tau_c$ & Coulomb friction & $\tau_c\,\text{sgn}(\omega)$ \\ -$B$ & Viscous drag (linear) & $B\,\omega$ \\ +$B$ & Viscous drag (linear) & $-B\,\omega$ \\ $\omega_0$ & No-load speed & $\omega_0 = v\,K / (K^2 + R\,B)$ \\ $J_r$ & Rotor inertia & units: kg$\cdot$m$^2$ \\ @@ -496,7 +495,7 @@ $N_p$ & Cogging periodicity & poles $\times$ slots/pole \\ $\phi$ & Cogging phase & offset \\ \bottomrule \end{tabular} -\caption{Named constants related to mechanical properties. Note that unlike in Table~\ref{tab:electromech_constants}, the non-approximate expression for $\omega_0$ takes into account the linear drag $B$ (assuming no high-order terms).} +\caption{Named constants related to mechanical properties. Unlike in Table~\ref{tab:electromech_constants}, the non-approximate expression for $\omega_0$ takes into account the linear drag $B$ (assuming no high-order terms).} \label{tab:key_constants} \end{table} @@ -795,7 +794,7 @@ Here we describe MuJoCo's \texttt{dcmotor} actuator. Some scalars are grouped in \begin{table}[H] \centering \footnotesize -\begin{tabular}{@{}lll@{}} +\begin{tabular}{@{}llp{5cm}@{}} \toprule Attribute & Size & Description \\ \midrule @@ -804,18 +803,18 @@ Attribute & Size & Description \\ \texttt{nominal} & 3 & Nominal operating point ($v_n, \tau_0, \omega_0$) \\ \texttt{inductance} & 2 & Electrical dynamics ($L, t_e$) \\ \texttt{thermal} & 6 & Thermal model ($R_T, C, t_T, \alpha, T_0, T_a$) \\ -\texttt{saturation} & 4 & Limits ($\tau_{\max}, i_{\max}, v_{\max}, (di{/}dt)_{\max}$) \\ +\texttt{saturation} & 3 & Limits ($\tau_{\max}, i_{\max}, (di{/}dt)_{\max}$) \\ \midrule \texttt{cogging} & 3 & Cogging torque ($A, N_p, \phi$) \\ -\texttt{lugre} & 6 & LuGre friction ($\sigma_0, \sigma_1, \sigma_2, \tau_c, \tau_s, \omega_s$) \\ +\texttt{lugre} & 5 & LuGre friction ($\sigma_0, \sigma_1, \tau_c, \tau_s, \omega_s$) \\ \texttt{damping} & 3 & Viscous damping coefficients \\ \texttt{armature} & 1 & Armature inertia \\ \midrule \texttt{input} & keyword & Mode (voltage/position/velocity) \\ -\texttt{controller} & 5 & Gains and slew ($k_p, k_i, k_d, s, I_{\max}$) \\ +\texttt{controller} & 6 & Gains, slew, and voltage saturation ($k_p, k_i, k_d, s, I_{\max}, v_{\max}$) \\ \bottomrule \end{tabular} -\caption{MJCF attributes for the \texttt{dcmotor} actuator, split into electrical, mechanical and control groupings.} +\caption{MJCF attributes for the \texttt{dcmotor} actuator, split into electrical, mechanical and controller groupings.} \label{tab:mjcf_attributes} \end{table} @@ -1025,7 +1024,7 @@ Iron losses (\S\ref{sec:thermal_losses}), magnet flux derating (\S\ref{sec:magne A bristle deflection state governed by the LuGre model (\S\ref{sec:lugre}) is added if the bristle stiffness $\sigma_0 > 0$. -The Stribeck function $g(\omega)$, Eq.~\eqref{eq:stribeck}, determines velocity-dependent friction, and the friction force is given by Eq.~\eqref{eq:lugre_force}. The bristle state is integrated using the exact ZOH scheme~\eqref{eq:zoh}. The viscous term $\sigma_2 \omega$ is mapped directly to the standard \texttt{actuator\_damping} attribute to leverage MuJoCo's implicit integration, while maintaining the $\sigma_2$ \texttt{lugre} sub-attribute for convenience. +The Stribeck function $g(\omega)$, Eq.~\eqref{eq:stribeck}, determines velocity-dependent friction, and the friction force is given by Eq.~\eqref{eq:lugre_force}. The bristle state is integrated using the exact ZOH scheme~\eqref{eq:zoh}. The viscous term $\sigma_2 \omega$ is specified by via the standard \texttt{damping} attribute to leverage MuJoCo's implicit integration. \paragraph{Integration.} The bristle stiffness $\sigma_0$ is typically very large ($10^5$--$10^6$ N$\cdot$m/rad), creating a stiff ODE. At constant velocity, the state equation~\eqref{eq:lugre_state} has the form $\dot{z} = a z + b \omega$ where $a = -\sigma_0 |\omega| / g(\omega)$ and $b = 1$. Euler integration is unstable unless $|1 + a \Delta t| < 1$, requiring impractically small timesteps ($\Delta t < 2g(\omega)/(\sigma_0 |\omega|)$, on the order of microseconds). Under a zero-order hold assumption ($\omega$ constant over the timestep), the linear ODE $\dot{z} = az + b\omega$ can be solved exactly: @@ -1045,7 +1044,6 @@ Attribute & Symbol & Units \\ \midrule \atSIG{} & $\sigma_0$ & N$\cdot$m/rad \\ \atSIGD{} & $\sigma_1$ & N$\cdot$m$\cdot$s/rad \\ -\atSIGV{} & $\sigma_2$ & N$\cdot$m$\cdot$s/rad \\ \atTAUC{} & $\tau_c$ & N$\cdot$m \\ \atTAUS{} & $\tau_s$ & N$\cdot$m \\ \atWS{} & $\omega_s$ & rad/s \\ @@ -1081,7 +1079,7 @@ Attribute & Type & Description \\ \label{tab:controller_attributes} \end{table} -\noindent Unlike the motor parameters in Table~\ref{tab:datasheet}, controller gains are user-specified firmware settings. Gains are in {\em voltage-space} (e.g., $k_p$ in V/rad) since the output is a voltage $v$. To convert from physical torque-space (N$\cdot$m/rad), multiply by $R/K$. +\noindent Unlike the motor parameters in Table~\ref{tab:datasheet}, controller gains are user-specified firmware settings with units that vary by manufacturer. MuJoCo uses direct {\em voltage-space} units (e.g., $k_p$ in V/rad). Torque-space (N$\cdot$m/rad) gains can be converted by multiplying by $R/K$, though empirical calibration is often necessary due to unknown internal units on real hardware. The controller computes a target voltage $v$ from the \texttt{ctrl} command. All motor physics --- cogging, saturation, friction, etc. --- apply identically downstream of $v$. The \texttt{input} attribute selects the controller: diff --git a/doc/includes/references.h b/doc/includes/references.h index 89b2e81f..bea7f4d9 100644 --- a/doc/includes/references.h +++ b/doc/includes/references.h @@ -3664,9 +3664,9 @@ const char* mjs_setToMuscle(mjsActuator* actuator, double timeconst[2], double t double lmax, double vmax, double fpmax, double fvmax); const char* mjs_setToAdhesion(mjsActuator* actuator, double gain); const char* mjs_setToDCMotor(mjsActuator* actuator, double motorconst[2], double resistance, - double nominal[3], double saturation[4], double inductance[2], - double cogging[3], double controller[5], double thermal[6], - double lugre[6], int input_mode); + double nominal[3], double saturation[3], double inductance[2], + double cogging[3], double controller[6], double thermal[6], + double lugre[5], int input_mode); mjsMesh* mjs_addMesh(mjSpec* s, const mjsDefault* def); mjsHField* mjs_addHField(mjSpec* s); mjsSkin* mjs_addSkin(mjSpec* s); diff --git a/include/mujoco/mujoco.h b/include/mujoco/mujoco.h index e8bbe692..90a6569b 100644 --- a/include/mujoco/mujoco.h +++ b/include/mujoco/mujoco.h @@ -1729,9 +1729,9 @@ MJAPI const char* mjs_setToAdhesion(mjsActuator* actuator, double gain); // Set actuator to DC motor; return error if any. // Nullable: motorconst, nominal, saturation, inductance, cogging, controller, thermal, lugre MJAPI const char* mjs_setToDCMotor(mjsActuator* actuator, double motorconst[2], double resistance, - double nominal[3], double saturation[4], double inductance[2], - double cogging[3], double controller[5], double thermal[6], - double lugre[6], int input_mode); + double nominal[3], double saturation[3], double inductance[2], + double cogging[3], double controller[6], double thermal[6], + double lugre[5], int input_mode); //---------------------------------- Assets -------------------------------------------------------- diff --git a/python/mujoco/introspect/functions.py b/python/mujoco/introspect/functions.py index 262d3430..f05bd8a5 100644 --- a/python/mujoco/introspect/functions.py +++ b/python/mujoco/introspect/functions.py @@ -10823,7 +10823,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([ name='saturation', type=ArrayType( inner_type=ValueType(name='double'), - extents=(4,), + extents=(3,), ), nullable=True, ), @@ -10847,7 +10847,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([ name='controller', type=ArrayType( inner_type=ValueType(name='double'), - extents=(5,), + extents=(6,), ), nullable=True, ), @@ -10863,7 +10863,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([ name='lugre', type=ArrayType( inner_type=ValueType(name='double'), - extents=(6,), + extents=(5,), ), nullable=True, ), diff --git a/python/mujoco/specs.cc b/python/mujoco/specs.cc index 28af8af1..82d43057 100644 --- a/python/mujoco/specs.cc +++ b/python/mujoco/specs.cc @@ -1307,10 +1307,10 @@ PYBIND11_MODULE(_specs, m) { "set_to_dcmotor", [](raw::MjsActuator* self, std::array motorconst, double resistance, - std::array nominal, std::array saturation, + std::array nominal, std::array saturation, std::array inductance, std::array cogging, - std::array controller, std::array thermal, - std::array lugre, int input_mode) { + std::array controller, std::array thermal, + std::array lugre, int input_mode) { std::string err = mjs_setToDCMotor( self, motorconst.data(), resistance, nominal.data(), saturation.data(), inductance.data(), cogging.data(), @@ -1321,12 +1321,12 @@ PYBIND11_MODULE(_specs, m) { }, py::arg("motorconst"), py::arg("resistance"), py::arg("nominal") = std::array{0, 0, 0}, - py::arg("saturation") = std::array{0, 0, 0, 0}, + py::arg("saturation") = std::array{0, 0, 0}, py::arg("inductance") = std::array{0, 0}, py::arg("cogging") = std::array{0, 0, 0}, - py::arg("controller") = std::array{0, 0, 0, 0, 0}, + py::arg("controller") = std::array{0, 0, 0, 0, 0, 0}, py::arg("thermal") = std::array{0, 0, 0, 0, 0, 0}, - py::arg("lugre") = std::array{0, 0, 0, 0, 0, 0}, + py::arg("lugre") = std::array{0, 0, 0, 0, 0}, py::arg("input_mode") = 0); // ============================= MJSTENDONPATH =============================== diff --git a/src/user/user_api.cc b/src/user/user_api.cc index 8d320463..e2277bfd 100644 --- a/src/user/user_api.cc +++ b/src/user/user_api.cc @@ -1122,9 +1122,9 @@ const char* mjs_setToAdhesion(mjsActuator* actuator, double gain) { const char* mjs_setToDCMotor(mjsActuator* actuator, double motorconst[2], double resistance, - double nominal[3], double saturation[4], double inductance[2], - double cogging[3], double controller[5], double thermal[6], - double lugre[6], int input_mode) { + double nominal[3], double saturation[3], double inductance[2], + double cogging[3], double controller[6], double thermal[6], + double lugre[5], int input_mode) { double R = resistance; // electrical resistance double Kt = motorconst ? motorconst[0] : 0; // torque constant double Ke = motorconst ? motorconst[1] : 0; // back-EMF constant @@ -1134,9 +1134,8 @@ const char* mjs_setToDCMotor(mjsActuator* actuator, double motorconst[2], double // derive Ke from nominal: omega0 = vn*Ke / (Ke^2 + R*B) if (vn > 0 && Ke <= 0 && omega0 > 0) { - // viscous damping (linear), add lugre sigma2 contribution if any + // viscous damping (linear) double B = actuator->damping[0]; - if (lugre && lugre[0] > 0) B += lugre[2]; if (B > 0 && R > 0) { // R known: solve quadratic Ke^2*omega0 - Ke*vn + R*B*omega0 = 0 @@ -1184,12 +1183,9 @@ const char* mjs_setToDCMotor(mjsActuator* actuator, double motorconst[2], double actuator->dynprm[7] = controller ? controller[3] : 0; // slewmax actuator->dynprm[8] = controller ? controller[4] : 0; // Imax - // saturation: [tau_max, i_max, (di/dt)_max, v_max] - if (saturation && saturation[2] > 0) { - actuator->dynprm[1] = saturation[2]; // (di/dt)_max - } - if (saturation && saturation[3] > 0) { - actuator->gainprm[7] = saturation[3]; // v_max + // controller parameters: gainprm[7] for v_max + if (controller && controller[5] > 0) { + actuator->gainprm[7] = controller[5]; // v_max } // saturation -> forcerange @@ -1203,6 +1199,11 @@ const char* mjs_setToDCMotor(mjsActuator* actuator, double motorconst[2], double actuator->forcelimited = 1; } + // saturation: [tau_max, i_max, (di/dt)_max] + if (saturation && saturation[2] > 0) { + actuator->dynprm[1] = saturation[2]; // (di/dt)_max + } + // cogging: [amplitude, periodicity, phase] -> biasprm[0:3] actuator->biasprm[0] = cogging ? cogging[0] : 0; // amplitude actuator->biasprm[1] = cogging ? cogging[1] : 0; // periodicity @@ -1258,14 +1259,13 @@ const char* mjs_setToDCMotor(mjsActuator* actuator, double motorconst[2], double actdim++; } - // lugre: {stiffness, damping, viscous, coulomb, static, stribeck} + // lugre: {stiffness, damping, coulomb, static, stribeck} if (lugre && lugre[0] > 0) { actuator->dynprm[5] = lugre[0]; // stiffness -> sigma0 actuator->dynprm[6] = lugre[1]; // damping -> sigma1 - actuator->damping[0] += lugre[2]; // viscous -> sigma2 - actuator->biasprm[3] = lugre[3]; // coulomb -> tau_c - actuator->biasprm[4] = lugre[4]; // static -> tau_s - actuator->biasprm[5] = lugre[5]; // stribeck -> omega_s + actuator->biasprm[3] = lugre[2]; // coulomb -> tau_c + actuator->biasprm[4] = lugre[3]; // static -> tau_s + actuator->biasprm[5] = lugre[4]; // stribeck -> omega_s actdim++; } diff --git a/src/user/user_api.h b/src/user/user_api.h index 307f1a53..2b73c12e 100644 --- a/src/user/user_api.h +++ b/src/user/user_api.h @@ -194,9 +194,9 @@ MJAPI const char* mjs_setToAdhesion(mjsActuator* actuator, double gain); // Set actuator to DC motor, return error on failure. MJAPI const char* mjs_setToDCMotor(mjsActuator* actuator, double motorconst[2], double resistance, - double nominal[3], double saturation[4], double inductance[2], - double cogging[3], double controller[5], double thermal[6], - double lugre[6], int input_mode); + double nominal[3], double saturation[3], double inductance[2], + double cogging[3], double controller[6], double thermal[6], + double lugre[5], int input_mode); //---------------------------------- Add assets ---------------------------------------------------- diff --git a/src/xml/xml_native_reader.cc b/src/xml/xml_native_reader.cc index 352790b5..df10509f 100644 --- a/src/xml/xml_native_reader.cc +++ b/src/xml/xml_native_reader.cc @@ -2526,14 +2526,14 @@ void mjXReader::OneActuator(XMLElement* elem, mjsActuator* actuator) { double motorconst[2] = {inherited ? actuator->gainprm[1] : 0, 0}; double resistance = inherited ? actuator->gainprm[0] : 0; double nominal[3] = {0, 0, 0}; - double saturation[4] = {0, 0, - inherited ? actuator->dynprm[1] : 0, - inherited ? actuator->gainprm[8] : 0}; - double controller[5] = {inherited ? actuator->gainprm[5] : 0, + double saturation[3] = {0, 0, + inherited ? actuator->dynprm[1] : 0}; + double controller[6] = {inherited ? actuator->gainprm[4] : 0, + inherited ? actuator->gainprm[5] : 0, inherited ? actuator->gainprm[6] : 0, - inherited ? actuator->gainprm[7] : 0, inherited ? actuator->dynprm[7] : 0, - inherited ? actuator->dynprm[8] : 0}; + inherited ? actuator->dynprm[8] : 0, + inherited ? actuator->gainprm[7] : 0}; double inductance[2] = {0, inherited ? actuator->dynprm[0] : 0}; double cogging[3] = {inherited ? actuator->biasprm[0] : 0, inherited ? actuator->biasprm[1] : 0, @@ -2544,22 +2544,21 @@ void mjXReader::OneActuator(XMLElement* elem, mjsActuator* actuator) { inherited ? actuator->gainprm[2] : 0, inherited ? actuator->gainprm[3] : 0, inherited ? actuator->dynprm[4] : 0}; - double lugre[6] = {inherited ? actuator->dynprm[5] : 0, + double lugre[5] = {inherited ? actuator->dynprm[5] : 0, inherited ? actuator->dynprm[6] : 0, - inherited ? actuator->damping[0] : 0, inherited ? actuator->biasprm[3] : 0, inherited ? actuator->biasprm[4] : 0, inherited ? actuator->biasprm[5] : 0}; - int input_mode = inherited ? (int)actuator->gainprm[9] : 0; + int input_mode = inherited ? (int)actuator->gainprm[8] : 0; ReadAttr(elem, "motorconst", 2, motorconst, text, false, false); ReadAttr(elem, "resistance", 1, &resistance, text); ReadAttr(elem, "nominal", 3, nominal, text, false, false); - ReadAttr(elem, "saturation", 4, saturation, text, false, false); + ReadAttr(elem, "saturation", 3, saturation, text, false, false); ReadAttr(elem, "inductance", 2, inductance, text, false, false); ReadAttr(elem, "cogging", 3, cogging, text, false, false); - ReadAttr(elem, "controller", 5, controller, text, false, false); + ReadAttr(elem, "controller", 6, controller, text, false, false); ReadAttr(elem, "thermal", 6, thermal, text, false, false); - ReadAttr(elem, "lugre", 6, lugre, text, false, false); + ReadAttr(elem, "lugre", 5, lugre, text, false, false); if (MapValue(elem, "input", &input_mode, dcmotorinput_map, dcmotorinput_sz)) { // successfully parsed } diff --git a/test/engine/engine_forward_test.cc b/test/engine/engine_forward_test.cc index f3acf0aa..3c9a05d4 100644 --- a/test/engine/engine_forward_test.cc +++ b/test/engine/engine_forward_test.cc @@ -1416,7 +1416,7 @@ TEST_F(DCMotorTest, LuGreViscousFriction) { + damping="0.01" lugre="100 1 0.5 0.7 10"/> )"; @@ -1929,7 +1929,7 @@ TEST_F(DCMotorTest, CurrentRateLimit) { + inductance="0.01 0" saturation="0 0 100"/> )"; @@ -1963,6 +1963,106 @@ TEST_F(DCMotorTest, CurrentRateLimit) { mj_deleteModel(model); } + +TEST_F(DCMotorTest, VoltageLimit) { + // verifies that saturation:voltage clamps voltage + static constexpr char xml[] = R"( + + + + + + + + + + + + )"; + char error[1024]; + mjModel* model = LoadModelFromString(xml, error, sizeof(error)); + ASSERT_THAT(model, NotNull()) << error; + mjData* data = mj_makeData(model); + + // Vmax = 10.0, ctrl = 20.0 + // force = K/R * Vmax = 0.05 / 2.0 * 10.0 = 0.25 + data->ctrl[0] = 20.0; + mj_forward(model, data); + + EXPECT_NEAR(data->actuator_force[0], 0.25, MjTol(1e-12, 1e-5)); + + // negative drive + data->ctrl[0] = -20.0; + mj_forward(model, data); + + EXPECT_NEAR(data->actuator_force[0], -0.25, MjTol(1e-12, 1e-5)); + + mj_deleteData(data); + mj_deleteModel(model); +} + + +TEST_F(DCMotorTest, IntegralClamp) { + // verifies that controller Imax clamps integral state + static constexpr char xml[] = R"( + + + )"; + char error[1024]; + mjModel* model = LoadModelFromString(xml, error, sizeof(error)); + ASSERT_THAT(model, NotNull()) << error; + mjData* data = mj_makeData(model); + + // Imax = 5.0 + ASSERT_EQ(model->actuator_actnum[0], 1); // only ki is stateful + int adr = model->actuator_actadr[0]; + + // set integral state to Imax + data->act[adr] = 5.0; + + // set target to generate positive error (ctrl - length) + data->ctrl[0] = 1.0; // target + data->qpos[0] = 0.0; // length = 0 + + mj_forward(model, data); + + // act_dot should be clamped to 0 because act >= Imax and error > 0 + EXPECT_NEAR(data->act_dot[adr], 0.0, MjTol(1e-12, 1e-5)); + + // set target to generate negative error + data->ctrl[0] = -1.0; + mj_forward(model, data); + + // act_dot should be negative (not clamped) + EXPECT_NEAR(data->act_dot[adr], -1.0, MjTol(1e-12, 1e-5)); + + // set integral state to -Imax + data->act[adr] = -5.0; + + // set target to generate negative error + data->ctrl[0] = -1.0; + data->qpos[0] = 0.0; + mj_forward(model, data); + + // act_dot should be clamped to 0 because act <= -Imax and error < 0 + EXPECT_NEAR(data->act_dot[adr], 0.0, MjTol(1e-12, 1e-5)); + + mj_deleteData(data); + mj_deleteModel(model); +} + TEST_F(DCMotorTest, LuGreExactIntegration) { static constexpr char xml[] = R"( @@ -1975,7 +2075,7 @@ TEST_F(DCMotorTest, LuGreExactIntegration) { + damping="0.01" lugre="100 1 0.5 0.7 10"/> )"; @@ -2021,7 +2121,7 @@ TEST_F(DCMotorTest, LuGreSteadyState) { + damping="0.01" lugre="100 1 0.5 0.7 10"/> )"; @@ -2068,7 +2168,7 @@ TEST_F(DCMotorTest, LuGreBristleSpring) { + damping="0.01" lugre="100 1 0.5 0.7 10"/> )"; diff --git a/test/engine/testdata/derivative/dcmotor.xml b/test/engine/testdata/derivative/dcmotor.xml index d3c4b0ac..a1053bb6 100644 --- a/test/engine/testdata/derivative/dcmotor.xml +++ b/test/engine/testdata/derivative/dcmotor.xml @@ -30,6 +30,6 @@ + damping="0.001" lugre="1e4 100 0.005 0.008 0.1"/> diff --git a/test/user/user_api_test.cc b/test/user/user_api_test.cc index b36557aa..2a7d8a53 100644 --- a/test/user/user_api_test.cc +++ b/test/user/user_api_test.cc @@ -280,6 +280,55 @@ TEST_F(MujocoTest, SetToDCMotorDeriveKe) { mj_deleteSpec(spec); } +TEST_F(MujocoTest, SetToDCMotorFull) { + mjSpec* spec = mj_makeSpec(); + mjsActuator* actuator = mjs_addActuator(spec, 0); + + double motorconst[2] = {0.05, 0.05}; + double resistance = 2.0; + double saturation[3] = {1.0, 2.0, 3.0}; + double controller[6] = {10.0, 20.0, 30.0, 40.0, 50.0, 60.0}; + + const char* err = mjs_setToDCMotor(actuator, motorconst, resistance, + nullptr, saturation, nullptr, + nullptr, controller, nullptr, + nullptr, 0); + EXPECT_STREQ(err, ""); + EXPECT_EQ(actuator->gainprm[0], 2.0); // resistance + EXPECT_EQ(actuator->gainprm[1], 0.05); // K + EXPECT_EQ(actuator->gainprm[4], 10.0); // kp + EXPECT_EQ(actuator->gainprm[5], 20.0); // ki + EXPECT_EQ(actuator->gainprm[6], 30.0); // kd + EXPECT_EQ(actuator->dynprm[7], 40.0); // slewmax + EXPECT_EQ(actuator->dynprm[8], 50.0); // Imax + EXPECT_EQ(actuator->gainprm[7], 60.0); // Vmax + EXPECT_EQ(actuator->dynprm[1], 3.0); // (di/dt)_max + + mj_deleteSpec(spec); +} + +TEST_F(MujocoTest, SetToDCMotorLuGre) { + mjSpec* spec = mj_makeSpec(); + mjsActuator* actuator = mjs_addActuator(spec, 0); + + double motorconst[2] = {0.05, 0.05}; + double resistance = 2.0; + double lugre[5] = {100.0, 1.0, 0.5, 0.7, 10.0}; + + const char* err = mjs_setToDCMotor(actuator, motorconst, resistance, + nullptr, nullptr, nullptr, + nullptr, nullptr, nullptr, + lugre, 0); + EXPECT_STREQ(err, ""); + EXPECT_EQ(actuator->dynprm[5], 100.0); // stiffness + EXPECT_EQ(actuator->dynprm[6], 1.0); // damping + EXPECT_EQ(actuator->biasprm[3], 0.5); // coulomb + EXPECT_EQ(actuator->biasprm[4], 0.7); // static + EXPECT_EQ(actuator->biasprm[5], 10.0); // stribeck + + mj_deleteSpec(spec); +} + static constexpr char xml_plugin_1[] = R"( diff --git a/test/xml/xml_native_reader_test.cc b/test/xml/xml_native_reader_test.cc index bd1b517b..5f6ecef7 100644 --- a/test/xml/xml_native_reader_test.cc +++ b/test/xml/xml_native_reader_test.cc @@ -3108,7 +3108,55 @@ TEST_F(ActuatorParseTest, DCMotorSaturation) { mj_deleteModel(model); } -TEST_F(ActuatorParseTest, DCMotorLuGreRemapping) { + +TEST_F(ActuatorParseTest, DCMotorInheritedDefaults) { + static constexpr char xml[] = R"( + + + + + + + + + + + + + + + )"; + std::array error; + mjModel* model = LoadModelFromString(xml, error.data(), error.size()); + ASSERT_THAT(model, NotNull()) << error.data(); + + // check motorconst and resistance are overridden by instance + EXPECT_MJTNUM_EQ(model->actuator_gainprm[1], 0.05); + EXPECT_MJTNUM_EQ(model->actuator_gainprm[0], 2.0); + + // check controller gains (kp, ki, kd) in gainprm[4:6] + EXPECT_MJTNUM_EQ(model->actuator_gainprm[4], 2.0); + EXPECT_MJTNUM_EQ(model->actuator_gainprm[5], 0.5); + EXPECT_MJTNUM_EQ(model->actuator_gainprm[6], 0.1); + + // check controller limits (slewmax, Imax) in dynprm[7,8] + EXPECT_MJTNUM_EQ(model->actuator_dynprm[7], 10.0); + EXPECT_MJTNUM_EQ(model->actuator_dynprm[8], 5.0); + + // check Vmax in gainprm[7] + EXPECT_MJTNUM_EQ(model->actuator_gainprm[7], 12.0); + + // check input mode in gainprm[8] + EXPECT_MJTNUM_EQ(model->actuator_gainprm[8], 2.0); + + // check inductance (te) in dynprm[0] + EXPECT_MJTNUM_EQ(model->actuator_dynprm[0], 0.01); + + mj_deleteModel(model); +} + +TEST_F(ActuatorParseTest, DCMotorControllerFull) { static constexpr char xml[] = R"( @@ -3119,7 +3167,36 @@ TEST_F(ActuatorParseTest, DCMotorLuGreRemapping) { + controller="1.0 2.0 3.0 4.0 5.0 6.0"/> + + + )"; + std::array error; + mjModel* model = LoadModelFromString(xml, error.data(), error.size()); + ASSERT_THAT(model, NotNull()) << error.data(); + + EXPECT_MJTNUM_EQ(model->actuator_gainprm[4], 1.0); + EXPECT_MJTNUM_EQ(model->actuator_gainprm[5], 2.0); + EXPECT_MJTNUM_EQ(model->actuator_gainprm[6], 3.0); + EXPECT_MJTNUM_EQ(model->actuator_dynprm[7], 4.0); + EXPECT_MJTNUM_EQ(model->actuator_dynprm[8], 5.0); + EXPECT_MJTNUM_EQ(model->actuator_gainprm[7], 6.0); + + mj_deleteModel(model); +} + +TEST_F(ActuatorParseTest, DCMotorLuGreRemapping) { + static constexpr char xml[] = R"( + + + + + + + + + )"; @@ -3135,6 +3212,30 @@ TEST_F(ActuatorParseTest, DCMotorLuGreRemapping) { mj_deleteModel(model); } +TEST_F(ActuatorParseTest, DCMotorLuGreInheritedDefaults) { + static constexpr char xml[] = R"( + + + + + + + + + + + + + + + )"; + std::array error; + mjModel* model = LoadModelFromString(xml, error.data(), error.size()); + ASSERT_THAT(model, NotNull()) << error.data(); + EXPECT_MJTNUM_EQ(model->actuator_damping[0], 0.01); + mj_deleteModel(model); +} + TEST_F(ActuatorParseTest, DCMotorActdimStateless) { static constexpr char xml[] = R"( @@ -3216,7 +3317,7 @@ TEST_F(ActuatorParseTest, DCMotorActdimLuGreOnly) { + lugre="100 1 0.5 0.7 10"/> )"; @@ -3241,7 +3342,7 @@ TEST_F(ActuatorParseTest, DCMotorActdimAllThree) { + lugre="100 1 0.5 0.7 10"/> )";