23 namespace localization {
28 const double z_euler,
double qbn[4]) {
29 qbn[0] =
sin(x_euler / 2.0) *
sin(y_euler / 2.0) *
sin(z_euler / 2.0) +
30 cos(x_euler / 2.0) *
cos(y_euler / 2.0) *
cos(z_euler / 2.0);
31 qbn[1] =
cos(y_euler / 2.0) *
cos(z_euler / 2.0) *
sin(x_euler / 2.0) +
32 cos(x_euler / 2.0) *
sin(y_euler / 2.0) *
sin(z_euler / 2.0);
33 qbn[2] =
cos(x_euler / 2.0) *
cos(z_euler / 2.0) *
sin(y_euler / 2.0) -
34 cos(y_euler / 2.0) *
sin(x_euler / 2.0) *
sin(z_euler / 2.0);
35 qbn[3] =
cos(z_euler / 2.0) *
sin(x_euler / 2.0) *
sin(y_euler / 2.0) -
36 cos(x_euler / 2.0) *
cos(y_euler / 2.0) *
sin(z_euler / 2.0);
42 dcm[0][0] = quaternion[0] * quaternion[0] + quaternion[1] * quaternion[1] -
43 quaternion[2] * quaternion[2] - quaternion[3] * quaternion[3];
45 2 * (quaternion[1] * quaternion[2] - quaternion[0] * quaternion[3]);
47 2 * (quaternion[1] * quaternion[3] + quaternion[0] * quaternion[2]);
50 2 * (quaternion[1] * quaternion[2] + quaternion[0] * quaternion[3]);
51 dcm[1][1] = quaternion[0] * quaternion[0] - quaternion[1] * quaternion[1] +
52 quaternion[2] * quaternion[2] - quaternion[3] * quaternion[3];
54 2 * (quaternion[2] * quaternion[3] - quaternion[0] * quaternion[1]);
57 2 * (quaternion[1] * quaternion[3] - quaternion[0] * quaternion[2]);
59 2 * (quaternion[2] * quaternion[3] + quaternion[0] * quaternion[1]);
60 dcm[2][2] = quaternion[0] * quaternion[0] - quaternion[1] * quaternion[1] -
61 quaternion[2] * quaternion[2] + quaternion[3] * quaternion[3];
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
static void QuaternionToDcm(const double *quaternion, double dcm[3][3])
Definition: math_util.h:41
Definition: math_util.h:26
static void EulerToQuaternion(const double x_euler, const double y_euler, const double z_euler, double qbn[4])
Definition: math_util.h:27