Remove unused mjOption.apirate.

PiperOrigin-RevId: 815633571
Change-Id: Ib98f3eb2df47f96fa1fe6e987a3a0cd23a9479f6
This commit is contained in:
Yuval Tassa
2025-10-06 02:50:09 -07:00
committed by Copybara-Service
parent a849fedcd2
commit 431f96572e
26 changed files with 15 additions and 112 deletions
-7
View File
@@ -308,13 +308,6 @@ adjust it properly through the XML.
optimization-related applications, real-time is no longer good enough and instead it is desirable to run the
simulation as fast as possible. In that case the time step should be made as large as possible.
.. _option-apirate:
:at:`apirate`: :at-val:`real, "100"`
This parameter determines the rate (in Hz) at which an external API allows the update function to be executed. This
mechanism is used to simulate devices with limited communication bandwidth. It only affects the socket API and not
the physics simulation.
.. _option-impratio:
:at:`impratio`: :at-val:`real, "1"`
+7 -7
View File
@@ -10,19 +10,19 @@
| :ref:`option | \* | :class: mjcf-attributes |
| <option>` | | |
| | | +-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+ |
| | | | :ref:`timestep<option-timestep>` | :ref:`apirate<option-apirate>` | :ref:`impratio<option-impratio>` | :ref:`tolerance<option-tolerance>` | |
| | | | :ref:`timestep<option-timestep>` | :ref:`impratio<option-impratio>` | :ref:`tolerance<option-tolerance>` | :ref:`ls_tolerance<option-ls_tolerance>` | |
| | | +-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+ |
| | | | :ref:`ls_tolerance<option-ls_tolerance>` | :ref:`noslip_tolerance<option-noslip_tolerance>` | :ref:`ccd_tolerance<option-ccd_tolerance>` | :ref:`gravity<option-gravity>` | |
| | | | :ref:`noslip_tolerance<option-noslip_tolerance>` | :ref:`ccd_tolerance<option-ccd_tolerance>` | :ref:`gravity<option-gravity>` | :ref:`wind<option-wind>` | |
| | | +-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+ |
| | | | :ref:`wind<option-wind>` | :ref:`magnetic<option-magnetic>` | :ref:`density<option-density>` | :ref:`viscosity<option-viscosity>` | |
| | | | :ref:`magnetic<option-magnetic>` | :ref:`density<option-density>` | :ref:`viscosity<option-viscosity>` | :ref:`o_margin<option-o_margin>` | |
| | | +-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+ |
| | | | :ref:`o_margin<option-o_margin>` | :ref:`o_solref<option-o_solref>` | :ref:`o_solimp<option-o_solimp>` | :ref:`o_friction<option-o_friction>` | |
| | | | :ref:`o_solref<option-o_solref>` | :ref:`o_solimp<option-o_solimp>` | :ref:`o_friction<option-o_friction>` | :ref:`integrator<option-integrator>` | |
| | | +-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+ |
| | | | :ref:`integrator<option-integrator>` | :ref:`cone<option-cone>` | :ref:`jacobian<option-jacobian>` | :ref:`solver<option-solver>` | |
| | | | :ref:`cone<option-cone>` | :ref:`jacobian<option-jacobian>` | :ref:`solver<option-solver>` | :ref:`iterations<option-iterations>` | |
| | | +-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+ |
| | | | :ref:`iterations<option-iterations>` | :ref:`ls_iterations<option-ls_iterations>` | :ref:`noslip_iterations<option-noslip_iterations>` | :ref:`ccd_iterations<option-ccd_iterations>` | |
| | | | :ref:`ls_iterations<option-ls_iterations>` | :ref:`noslip_iterations<option-noslip_iterations>` | :ref:`ccd_iterations<option-ccd_iterations>` | :ref:`sdf_iterations<option-sdf_iterations>` | |
| | | +-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+ |
| | | | :ref:`sdf_iterations<option-sdf_iterations>` | :ref:`sdf_initpoints<option-sdf_initpoints>` | :ref:`actuatorgroupdisable<option-actuatorgroupdisable>` | | |
| | | | :ref:`sdf_initpoints<option-sdf_initpoints>` | :ref:`actuatorgroupdisable<option-actuatorgroupdisable>` | | | |
| | | +-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+-----------------------------------------------------------------+ |
+------------------------------------+----+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |_| option |br| |_| |L| | | .. table:: |
+5 -3
View File
@@ -23,17 +23,19 @@ General
limit, are recolored by using the :ref:`constraint impedance<soParameters>` :math:`d` to mix the existing color with
:ref:`visual/rgba/constraint<visual-rgba-constraint>`. For spatial tendons, this visualization aid is active only if
no :ref:`material<tendon-spatial-material>` is set and :ref:`rgba<tendon-spatial-rgba>` is default.
- Added :ref:`mju_getXMLDependencies` for computing a list of unique asset dependencies from an MJCF file.
- Added the code sample ``dependencies`` which provides command line utility for printing the result of :ref:`mju_getXMLDependencies`.
.. admonition:: Breaking ABI changes
:class: attention
- The attribute ``mjOption.apirate`` was unused and has been removed.
MJX
^^^
- Fix :github:issue:`2508`, ``qLD`` shapes mismatched mjModel during ``get_data_into``.
Version 3.3.6 (September 15, 2025)
----------------------------------
-1
View File
@@ -800,7 +800,6 @@ typedef struct mjVFS_ mjVFS;
struct mjOption_ { // physics options
// timing parameters
mjtNum timestep; // timestep
mjtNum apirate; // update rate for remote API (Hz)
// solver parameters
mjtNum impratio; // ratio of friction-to-normal contact impedance
@@ -170,31 +170,6 @@ class MjcPhysicsSceneAPI : public UsdAPISchemaBase {
UsdAttribute CreateTimestepAttr(VtValue const& defaultValue = VtValue(),
bool writeSparsely = false) const;
public:
// --------------------------------------------------------------------- //
// APIRATE
// --------------------------------------------------------------------- //
/// Determines the rate (in Hz) at which an external API allows
/// the update function to be executed.
///
/// | ||
/// | -- | -- |
/// | Declaration | `uniform double mjc:option:apirate = 100` |
/// | C++ Type | double |
/// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Double |
/// | \ref SdfVariability "Variability" | SdfVariabilityUniform |
MJCPHYSICS_API
UsdAttribute GetApiRateAttr() const;
/// See GetApiRateAttr(), and also
/// \ref Usd_Create_Or_Get_Property for when to use Get vs Create.
/// If specified, author \p defaultValue as the attribute's default,
/// sparsely (when it makes sense to do so) if \p writeSparsely is \c true -
/// the default for \p writeSparsely is \c false.
MJCPHYSICS_API
UsdAttribute CreateApiRateAttr(VtValue const& defaultValue = VtValue(),
bool writeSparsely = false) const;
public:
// --------------------------------------------------------------------- //
// IMPRATIO
@@ -455,10 +455,6 @@ struct MjcPhysicsTokensType {
///
/// MjcPhysicsSceneAPI
const TfToken mjcOptionActuatorgroupdisable;
/// \brief "mjc:option:apirate"
///
/// MjcPhysicsSceneAPI
const TfToken mjcOptionApirate;
/// \brief "mjc:option:ccd_iterations"
///
/// MjcPhysicsSceneAPI
-1
View File
@@ -469,7 +469,6 @@ typedef struct mjVFS_ mjVFS;
struct mjOption_ { // physics options
// timing parameters
mjtNum timestep; // timestep
mjtNum apirate; // update rate for remote API (Hz)
// solver parameters
mjtNum impratio; // ratio of friction-to-normal contact impedance
-1
View File
@@ -21,7 +21,6 @@
// scalar fields of mjOption
#define MJOPTION_FLOATS \
X( mjtNum, timestep ) \
X( mjtNum, apirate ) \
X( mjtNum, impratio ) \
X( mjtNum, tolerance ) \
X( mjtNum, ls_tolerance ) \
+1 -1
View File
@@ -173,7 +173,7 @@ class ModelIOTest(parameterized.TestCase):
self.assertFalse(hasattr(mx, 'bvh_aabb'))
elif impl == 'c':
# Options specific to C are populated.
self.assertEqual(mx.opt._impl.apirate, m.opt.apirate)
self.assertEqual(mx.opt._impl.noslip_iterations, m.opt.noslip_iterations)
# Fields private to C backend impl are populated.
self.assertTrue(hasattr(mx._impl, 'bvh_aabb'))
elif impl == 'warp':
-1
View File
@@ -497,7 +497,6 @@ class OptionC(PyTreeNode):
disableactuator: int
sdf_initpoints: int
has_fluid_params: bool
apirate: jax.Array
noslip_tolerance: jax.Array
ccd_tolerance: jax.Array
noslip_iterations: int
-5
View File
@@ -123,11 +123,6 @@ STRUCTS: Mapping[str, StructDecl] = dict([
type=ValueType(name='mjtNum'),
doc='timestep',
),
StructFieldDecl(
name='apirate',
type=ValueType(name='mjtNum'),
doc='update rate for remote API (Hz)',
),
StructFieldDecl(
name='impratio',
type=ValueType(name='mjtNum'),
-1
View File
@@ -707,7 +707,6 @@ void MakePhysicsSection(mj::Simulate* sim) {
{mjITEM_EDITNUM, "Noslip Tol", 2, &(opt->noslip_tolerance), "1 0 1"},
{mjITEM_EDITINT, "CCD Iter", 2, &(opt->ccd_iterations), "1 0 1000"},
{mjITEM_EDITNUM, "CCD Tol", 2, &(opt->ccd_tolerance), "1 0 1"},
{mjITEM_EDITNUM, "API Rate", 2, &(opt->apirate), "1 0 1000"},
{mjITEM_EDITINT, "SDF Iter", 2, &(opt->sdf_iterations), "1 1 20"},
{mjITEM_EDITINT, "SDF Init", 2, &(opt->sdf_initpoints), "1 1 100"},
{mjITEM_SEPARATOR, "Physical Parameters", mjPRESERVE},
-1
View File
@@ -54,7 +54,6 @@ void mj_defaultOption(mjOption* opt) {
// timing parameters
opt->timestep = 0.002;
opt->apirate = 100;
// solver parameters
opt->impratio = 1;
-1
View File
@@ -1364,7 +1364,6 @@ void App::PhysicsGui() {
ImGui_Input("Noslip Tol", &opt.noslip_tolerance, {0, 1, 0.01, 0.1, w});
ImGui_Input("CCD Iter", &opt.ccd_iterations, {0, 1000, 1, 100, w});
ImGui_Input("CCD Tol", &opt.ccd_tolerance, {0, 1, 0.01, 0.1, w});
ImGui_Input("API Rate", &opt.apirate, {0, 1000, 1, 100, w});
ImGui_Input("SDF Iter", &opt.sdf_iterations, {1, 20, 1, 10, w});
ImGui_Input("SDF Init", &opt.sdf_initpoints, {1, 100, 1, 10, w});
ImGui::TreePop();
@@ -170,11 +170,6 @@ class "MjcSceneAPI" (
displayName = "Actuator Group Disable"
doc = "List of actuator groups to disable."
)
uniform double mjc:option:apirate = 100 (
displayName = "ApiRate"
doc = """Determines the rate (in Hz) at which an external API allows
the update function to be executed."""
)
uniform int mjc:option:ccd_iterations = 35 (
displayName = "CCD Iterations"
doc = "Maximum number of iterations of the algorithm used for convex collisions."
@@ -85,17 +85,6 @@ UsdAttribute MjcPhysicsSceneAPI::CreateTimestepAttr(VtValue const& defaultValue,
/* custom = */ false, SdfVariabilityUniform, defaultValue, writeSparsely);
}
UsdAttribute MjcPhysicsSceneAPI::GetApiRateAttr() const {
return GetPrim().GetAttribute(MjcPhysicsTokens->mjcOptionApirate);
}
UsdAttribute MjcPhysicsSceneAPI::CreateApiRateAttr(VtValue const& defaultValue,
bool writeSparsely) const {
return UsdSchemaBase::_CreateAttr(
MjcPhysicsTokens->mjcOptionApirate, SdfValueTypeNames->Double,
/* custom = */ false, SdfVariabilityUniform, defaultValue, writeSparsely);
}
UsdAttribute MjcPhysicsSceneAPI::GetImpRatioAttr() const {
return GetPrim().GetAttribute(MjcPhysicsTokens->mjcOptionImpratio);
}
@@ -798,7 +787,6 @@ const TfTokenVector& MjcPhysicsSceneAPI::GetSchemaAttributeNames(
bool includeInherited) {
static TfTokenVector localNames = {
MjcPhysicsTokens->mjcOptionTimestep,
MjcPhysicsTokens->mjcOptionApirate,
MjcPhysicsTokens->mjcOptionImpratio,
MjcPhysicsTokens->mjcOptionWind,
MjcPhysicsTokens->mjcOptionMagnetic,
@@ -111,15 +111,6 @@ class "MjcSceneAPI"
doc = """Controls the timestep in seconds used by MuJoCo."""
)
uniform double mjc:option:apirate = 100 (
customData = {
string apiName = "ApiRate"
}
displayName = "ApiRate"
doc = """Determines the rate (in Hz) at which an external API allows
the update function to be executed."""
)
uniform double mjc:option:impratio = 1.0 (
customData = {
string apiName = "ImpRatio"
@@ -118,7 +118,6 @@ MjcPhysicsTokensType::MjcPhysicsTokensType()
mjcMquat("mjc:mquat", TfToken::Immortal),
mjcOptionActuatorgroupdisable("mjc:option:actuatorgroupdisable",
TfToken::Immortal),
mjcOptionApirate("mjc:option:apirate", TfToken::Immortal),
mjcOptionCcd_iterations("mjc:option:ccd_iterations", TfToken::Immortal),
mjcOptionCcd_tolerance("mjc:option:ccd_tolerance", TfToken::Immortal),
mjcOptionCone("mjc:option:cone", TfToken::Immortal),
@@ -281,7 +280,6 @@ MjcPhysicsTokensType::MjcPhysicsTokensType()
mjcMpos,
mjcMquat,
mjcOptionActuatorgroupdisable,
mjcOptionApirate,
mjcOptionCcd_iterations,
mjcOptionCcd_tolerance,
mjcOptionCone,
@@ -500,7 +500,6 @@ class ModelWriter {
spec_->option.noslip_tolerance},
{MjcPhysicsTokens->mjcOptionCcd_tolerance,
spec_->option.ccd_tolerance},
{MjcPhysicsTokens->mjcOptionApirate, spec_->option.apirate},
{MjcPhysicsTokens->mjcOptionImpratio, spec_->option.impratio},
{MjcPhysicsTokens->mjcOptionDensity, spec_->option.density},
{MjcPhysicsTokens->mjcOptionViscosity, spec_->option.viscosity},
-4
View File
@@ -445,10 +445,6 @@ void ParseUsdPhysicsScene(mjSpec* spec,
mjc_physics_scene.GetTimestepAttr().Get(&timestep);
spec->option.timestep = timestep;
double apirate;
mjc_physics_scene.GetApiRateAttr().Get(&apirate);
spec->option.apirate = apirate;
double impratio;
mjc_physics_scene.GetImpRatioAttr().Get(&impratio);
spec->option.impratio = impratio;
+2 -3
View File
@@ -110,8 +110,8 @@ const char* MJCF[nMJCF][mjXATTRNUM] = {
"inttotal", "interval", "tolrange"},
{">"},
{"option", "*", "27",
"timestep", "apirate", "impratio", "tolerance", "ls_tolerance", "noslip_tolerance",
{"option", "*", "26",
"timestep", "impratio", "tolerance", "ls_tolerance", "noslip_tolerance",
"ccd_tolerance", "gravity", "wind", "magnetic", "density", "viscosity",
"o_margin", "o_solref", "o_solimp", "o_friction",
"integrator", "cone", "jacobian",
@@ -1130,7 +1130,6 @@ void mjXReader::Option(XMLElement* section, mjOption* opt) {
// read options
ReadAttr(section, "timestep", 1, &opt->timestep, text);
ReadAttr(section, "apirate", 1, &opt->apirate, text);
ReadAttr(section, "impratio", 1, &opt->impratio, text);
ReadAttr(section, "tolerance", 1, &opt->tolerance, text);
ReadAttr(section, "ls_tolerance", 1, &opt->ls_tolerance, text);
-1
View File
@@ -990,7 +990,6 @@ void mjXWriter::Option(XMLElement* root) {
// option
WriteAttr(section, "timestep", 1, &model->option.timestep, &opt.timestep);
WriteAttr(section, "apirate", 1, &model->option.apirate, &opt.apirate);
WriteAttr(section, "impratio", 1, &model->option.impratio, &opt.impratio);
WriteAttr(section, "tolerance", 1, &model->option.tolerance, &opt.tolerance);
WriteAttr(section, "ls_tolerance", 1, &model->option.ls_tolerance, &opt.ls_tolerance);
@@ -104,7 +104,6 @@ TEST_F(MjcPhysicsSceneTest, TestDefaults) {
// If this test is failing due to an update of defaults in Mujoco you need to
// update mjcPhysics/schema.usda.
EXPECT_REAL_USD_FALLBACK_EQ_MODEL_DEFAULT(Timestep, timestep);
EXPECT_REAL_USD_FALLBACK_EQ_MODEL_DEFAULT(ApiRate, apirate);
EXPECT_REAL_USD_FALLBACK_EQ_MODEL_DEFAULT(ImpRatio, impratio);
EXPECT_VEC3_USD_FALLBACK_EQ_MODEL_DEFAULT(Wind, wind);
@@ -724,19 +724,6 @@ TEST_F(MjcfSdfFileFormatPluginTest, TestPhysicsScenePrimWind) {
pxr::GfVec3d(1, 2, 3));
}
TEST_F(MjcfSdfFileFormatPluginTest, TestPhysicsScenePrimApirate) {
auto stage = OpenStage(R"(
<mujoco model="test">
<option apirate="1.2"> </option>
</mujoco>
)");
ExpectAttributeEqual(
stage,
kPhysicsScenePrimPath.AppendProperty(MjcPhysicsTokens->mjcOptionApirate),
1.2);
}
TEST_F(MjcfSdfFileFormatPluginTest, TestPhysicsScenePrimImpratio) {
auto stage = OpenStage(R"(
<mujoco model="test">
-1
View File
@@ -5089,7 +5089,6 @@ public unsafe struct _mjVFS
[StructLayout(LayoutKind.Sequential)]
public unsafe struct mjOption_ {
public double timestep;
public double apirate;
public double impratio;
public double tolerance;
public double ls_tolerance;
@@ -156,7 +156,6 @@ public struct MjSizeStruct {
public struct MjOptionStruct {
// "timestep" and "gravity" come from global settings.
// "apirate" is only relevant to HAPTIX.
[Tooltip("Ratio of frictional-to-normal constraint impedance.")]
public float ImpRatio;
[Tooltip("Global magnetic flux used by magnetometer sensors.")]