Expose mjs_resolveOrientation to the Python API.
PiperOrigin-RevId: 762571376 Change-Id: I08d8394b24670c7f102356da4234b17f1ba4e05f
This commit is contained in:
committed by
Copybara-Service
parent
eb6f7dc6b7
commit
7a5b55f57e
@@ -490,6 +490,20 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
},
|
},
|
||||||
py::arg("name"),
|
py::arg("name"),
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
|
mjSpec.def_static(
|
||||||
|
"resolve_orientation",
|
||||||
|
[](bool degree, const MjTypeVec<char>& sequence,
|
||||||
|
const raw::MjsOrientation* orientation) -> std::array<double, 4> {
|
||||||
|
std::array<double, 4> quat = {0, 0, 0, 0};
|
||||||
|
const char* err = mjs_resolveOrientation(quat.data(), degree,
|
||||||
|
sequence.ptr, orientation);
|
||||||
|
if (err) {
|
||||||
|
throw pybind11::value_error(err);
|
||||||
|
}
|
||||||
|
return quat;
|
||||||
|
},
|
||||||
|
py::arg("degree"), py::arg("sequence") = py::none(),
|
||||||
|
py::arg("orientation"), py::return_value_policy::copy);
|
||||||
|
|
||||||
// ============================= MJSBODY =====================================
|
// ============================= MJSBODY =====================================
|
||||||
mjsBody.def(
|
mjsBody.def(
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
import gc
|
import gc
|
||||||
import inspect
|
import inspect
|
||||||
|
import math
|
||||||
import os
|
import os
|
||||||
import textwrap
|
import textwrap
|
||||||
import typing
|
import typing
|
||||||
@@ -129,6 +130,18 @@ class SpecsTest(absltest.TestCase):
|
|||||||
""")
|
""")
|
||||||
self.assertEqual(spec.to_xml(), xml)
|
self.assertEqual(spec.to_xml(), xml)
|
||||||
|
|
||||||
|
def test_resolve_orientation(self):
|
||||||
|
spec = mujoco.MjSpec()
|
||||||
|
body = spec.worldbody.add_body(euler=[0, 0, 90])
|
||||||
|
quat = mujoco.MjSpec.resolve_orientation(
|
||||||
|
degree=spec.compiler.degree,
|
||||||
|
sequence=spec.compiler.eulerseq,
|
||||||
|
orientation=body.alt,
|
||||||
|
)
|
||||||
|
np.testing.assert_array_almost_equal(
|
||||||
|
quat, [math.sqrt(2) / 2, 0, 0, math.sqrt(2) / 2]
|
||||||
|
)
|
||||||
|
|
||||||
def test_kwarg(self):
|
def test_kwarg(self):
|
||||||
# Create a spec.
|
# Create a spec.
|
||||||
spec = mujoco.MjSpec()
|
spec = mujoco.MjSpec()
|
||||||
|
|||||||
Reference in New Issue
Block a user