Add mju_euler2Quat.
PiperOrigin-RevId: 623469398 Change-Id: Ia86b29a764018cd4c3bc57d23616bed7393081f5
This commit is contained in:
committed by
Copybara-Service
parent
2b3f336bd3
commit
5a365603f8
@@ -1303,6 +1303,23 @@ Euler integrator, semi-implicit in velocity.
|
||||
mat = np.array([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]])
|
||||
self.assertEqual(mujoco.mju_mulVecMatVec(vec1, mat, vec2), 204.)
|
||||
|
||||
def test_mju_euler_to_quat(self):
|
||||
quat = np.zeros(4)
|
||||
euler = np.array([0, np.pi/2, 0])
|
||||
seq = 'xyz'
|
||||
mujoco.mju_euler2Quat(quat, euler, seq)
|
||||
expected_quat = np.array([np.sqrt(0.5), 0, np.sqrt(0.5), 0.])
|
||||
np.testing.assert_almost_equal(quat, expected_quat)
|
||||
|
||||
error = 'mju_euler2Quat: seq must contain exactly 3 characters'
|
||||
with self.assertRaisesWithLiteralMatch(mujoco.FatalError, error):
|
||||
mujoco.mju_euler2Quat(quat, euler, 'xy')
|
||||
with self.assertRaisesWithLiteralMatch(mujoco.FatalError, error):
|
||||
mujoco.mju_euler2Quat(quat, euler, 'xyzy')
|
||||
error = 'mju_euler2Quat: seq[2] is \'p\', should be one of x, y, z, X, Y, Z'
|
||||
with self.assertRaisesWithLiteralMatch(mujoco.FatalError, error):
|
||||
mujoco.mju_euler2Quat(quat, euler, 'xYp')
|
||||
|
||||
@parameterized.product(flg_html=(False, True), flg_pad=(False, True))
|
||||
def test_mj_printSchema(self, flg_html, flg_pad): # pylint: disable=invalid-name
|
||||
# Make sure that mj_printSchema doesn't raise an exception
|
||||
|
||||
@@ -995,6 +995,7 @@ PYBIND11_MODULE(_functions, pymodule) {
|
||||
Def<traits::mju_derivQuat>(pymodule);
|
||||
Def<traits::mju_quatIntegrate>(pymodule);
|
||||
Def<traits::mju_quatZ2Vec>(pymodule);
|
||||
Def<traits::mju_euler2Quat>(pymodule);
|
||||
|
||||
// Poses
|
||||
Def<traits::mju_mulPose>(pymodule);
|
||||
|
||||
Reference in New Issue
Block a user