From 0b2f19bbe7c694f540aef623685eee5bff5ce143 Mon Sep 17 00:00:00 2001 From: Kevin Zakka Date: Fri, 19 Aug 2022 12:22:13 -0700 Subject: [PATCH] Fix "actrange" parsing for "intvelocity" actuators. PiperOrigin-RevId: 468759706 Change-Id: I1d9eeb723d28cccb64a6112b103345fcf451700f --- doc/changelog.rst | 3 ++- src/xml/xml_native_reader.cc | 4 ---- test/xml/xml_native_reader_test.cc | 36 +++++++++++++++++++++++++++++- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/doc/changelog.rst b/doc/changelog.rst index e352fc31..d8519200 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -12,7 +12,7 @@ General :align: right :height: 150px -- Added :ref:`adhesion actuators` mimicking vaccum grippers and adhesive biomechanical appendages. +- Added :ref:`adhesion actuators` mimicking vacuum grippers and adhesive biomechanical appendages. - Added related `example model `_ and video: - Added :ref:`mj_jacSubtreeCom` for computing the translational Jacobian of the center-of-mass of a subtree. - Added moment of inertia computation for concave meshes. This is currently activated by setting the compiler flag @@ -48,6 +48,7 @@ Deleted/deprecated features Bug fixes ^^^^^^^^^ - Fixed rendering of some transparent geoms in reflection. +- Fixed ``intvelocity`` defaults parsing. Version 2.2.1 (July 18, 2022) ----------------------------- diff --git a/src/xml/xml_native_reader.cc b/src/xml/xml_native_reader.cc index 538fc2ca..f5eda65c 100644 --- a/src/xml/xml_native_reader.cc +++ b/src/xml/xml_native_reader.cc @@ -1509,10 +1509,6 @@ void mjXReader::OneActuator(XMLElement* elem, mjCActuator* pact) { pact->biastype = mjBIAS_AFFINE; pact->actlimited = 1; pact->biasprm[1] = -pact->gainprm[0]; - // require actrange - if (!ReadAttr(elem, "actrange", 2, pact->actrange, text)) { - throw mjXError(elem, "actrange is required for an intvelocity actuator", type.c_str()); - } } // damper diff --git a/test/xml/xml_native_reader_test.cc b/test/xml/xml_native_reader_test.cc index c7affdeb..923d4324 100644 --- a/test/xml/xml_native_reader_test.cc +++ b/test/xml/xml_native_reader_test.cc @@ -648,7 +648,41 @@ TEST_F(IntegratedVelocityTest, NoActrangeThrowsError) { std::array error; mjModel* model = LoadModelFromString(xml, error.data(), error.size()); ASSERT_THAT(model, IsNull()); - EXPECT_THAT(error.data(), HasSubstr("actrange is required for an intvelocity actuator")); + EXPECT_THAT(error.data(), HasSubstr("invalid activation range for actuator")); +} + +TEST_F(IntegratedVelocityTest, DefaultsPropagate) { + static constexpr char xml[] = R"( + + + + + + + + + + + + + + + + + + + + )"; + std::array error; + mjModel* model = LoadModelFromString(xml, error.data(), error.size()); + ASSERT_THAT(model, testing::NotNull()); + EXPECT_DOUBLE_EQ(model->actuator_gainprm[0], 5); + EXPECT_DOUBLE_EQ(model->actuator_gainprm[mjNGAIN], 1); + EXPECT_DOUBLE_EQ(model->actuator_actrange[0 + 0], 0); + EXPECT_DOUBLE_EQ(model->actuator_actrange[0 + 1], 1); + EXPECT_DOUBLE_EQ(model->actuator_actrange[0 + 2], -1); + EXPECT_DOUBLE_EQ(model->actuator_actrange[0 + 3], 1); + mj_deleteModel(model); } } // namespace