From adbbcc4ff52674634a0afc13683ca9d9ffdefb98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1lint=20Hodossy?= Date: Mon, 27 May 2024 11:48:11 +0100 Subject: [PATCH 1/3] Track separate kv property for position actuators --- unity/Editor/Components/MjActuatorEditor.cs | 3 +++ unity/Runtime/Components/MjActuator.cs | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/unity/Editor/Components/MjActuatorEditor.cs b/unity/Editor/Components/MjActuatorEditor.cs index 9ac963cc..10fc7de8 100644 --- a/unity/Editor/Components/MjActuatorEditor.cs +++ b/unity/Editor/Components/MjActuatorEditor.cs @@ -35,6 +35,7 @@ namespace Mujoco { private SerializedProperty _biasPrm; // Position actuator properties. private SerializedProperty _kp; + private SerializedProperty _kvp; // Velocity actuator properties. private SerializedProperty _kv; // Cylinder actuator properties. @@ -70,6 +71,7 @@ namespace Mujoco { _biasPrm = customParams.FindPropertyRelative("BiasPrm"); // Position actuator properties. _kp = customParams.FindPropertyRelative("Kp"); + _kvp = customParams.FindPropertyRelative("Kvp"); // Velocity actuator properties. _kv = customParams.FindPropertyRelative("Kv"); // Cylinder actuator properties. @@ -166,6 +168,7 @@ namespace Mujoco { private void EditPositionParams(MjActuator.CustomParameters parameters) { EditorGUILayout.PropertyField(_kp); + EditorGUILayout.PropertyField(_kvp, new GUIContent("Kv")); } private void EditVelocityParams(MjActuator.CustomParameters parameters) { diff --git a/unity/Runtime/Components/MjActuator.cs b/unity/Runtime/Components/MjActuator.cs index e44b8579..da643c15 100644 --- a/unity/Runtime/Components/MjActuator.cs +++ b/unity/Runtime/Components/MjActuator.cs @@ -164,11 +164,16 @@ public class MjActuator : MjComponent { [AbsoluteValue] public float Kp = 1.0f; - public void PositionToMjcf(XmlElement mjcf) { + [AbsoluteValue] + public float Kvp; + + public void PositionToMjcf(XmlElement mjcf) { mjcf.SetAttribute("kp", MjEngineTool.MakeLocaleInvariant($"{Math.Abs(Kp)}")); + mjcf.SetAttribute("kv", MjEngineTool.MakeLocaleInvariant($"{Math.Abs(Kvp)}")); } public void PositionFromMjcf(XmlElement mjcf) { Kp = mjcf.GetFloatAttribute("kp", defaultValue: 1.0f); + Kvp = mjcf.GetFloatAttribute("kv", defaultValue: 0f); } //// Velocity actuator parameters. From 2aa30b188cc8fa27a045d551f934550a4af36bab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1lint=20Hodossy?= Date: Mon, 27 May 2024 11:49:26 +0100 Subject: [PATCH 2/3] Adjust formatting --- unity/Runtime/Components/MjActuator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unity/Runtime/Components/MjActuator.cs b/unity/Runtime/Components/MjActuator.cs index da643c15..1c5ff755 100644 --- a/unity/Runtime/Components/MjActuator.cs +++ b/unity/Runtime/Components/MjActuator.cs @@ -167,7 +167,7 @@ public class MjActuator : MjComponent { [AbsoluteValue] public float Kvp; - public void PositionToMjcf(XmlElement mjcf) { + public void PositionToMjcf(XmlElement mjcf) { mjcf.SetAttribute("kp", MjEngineTool.MakeLocaleInvariant($"{Math.Abs(Kp)}")); mjcf.SetAttribute("kv", MjEngineTool.MakeLocaleInvariant($"{Math.Abs(Kvp)}")); } From 45ccc2a6dffee54714919bf80ebfff5edf05b70c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1lint=20Hodossy?= Date: Mon, 27 May 2024 12:11:15 +0100 Subject: [PATCH 3/3] Add tests for kv param in position actuators --- unity/Tests/Editor/Components/MjActuatorTests.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/unity/Tests/Editor/Components/MjActuatorTests.cs b/unity/Tests/Editor/Components/MjActuatorTests.cs index 175a59f4..437674b1 100644 --- a/unity/Tests/Editor/Components/MjActuatorTests.cs +++ b/unity/Tests/Editor/Components/MjActuatorTests.cs @@ -279,19 +279,22 @@ public class MjPositionActuatorTests { Assert.That(_doc.OuterXml, Does.Contain($""); + _doc.LoadXml(""); _actuator.ParseMjcf(_doc.GetElementsByTagName("position")[0] as XmlElement); Assert.That(_actuator.CustomParams.Kp, Is.EqualTo(2)); + Assert.That(_actuator.CustomParams.Kvp, Is.EqualTo(1)); } [Test] @@ -299,6 +302,7 @@ public class MjPositionActuatorTests { _doc.LoadXml(""); _actuator.ParseMjcf(_doc.GetElementsByTagName("position")[0] as XmlElement); Assert.That(_actuator.CustomParams.Kp, Is.EqualTo(1)); + Assert.That(_actuator.CustomParams.Kvp, Is.EqualTo(0)); } }