Skip to content

Commit 2da0dfb

Browse files
Jonathan MarinojonyMarino
authored andcommitted
Restrict clamp due to singularity in Euler to Quaternion to near 90 and not above near 90
1 parent 4cfc449 commit 2da0dfb

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

core_sim/src/transforms/transform_utils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Quaternion TransformUtils::ToQuaternion(float roll_rad, float pitch_rad,
2222

2323
if (std::abs(pitch_rad) > TransformUtils::kEulerSingularityMinor &&
2424
std::abs(pitch_rad) < TransformUtils::kEulerSingularityMajor) {
25-
// TODO Trigger a warning for clipped pitch angle
25+
// TODO(edufford) Trigger a warning for clipped pitch angle
2626
if (std::abs(pitch_rad) < M_PI/2)
2727
pitch_rad = std::clamp(pitch_rad, -TransformUtils::kEulerSingularityMinor,
2828
TransformUtils::kEulerSingularityMinor);

core_sim/test/gtest_transform_tree.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,11 +185,11 @@ TEST(TransformTree, ConvertCross2) {
185185
projectairsim::Quaternion quatA =
186186
projectairsim::TransformUtils::ToQuaternion(0.0f, 0.0f, 0.0f);
187187
projectairsim::Quaternion quatB =
188-
projectairsim::TransformUtils::ToQuaternion(M_PI, 0.0f, 0.0f);
188+
projectairsim::TransformUtils::ToQuaternion(0.0f, M_PI, 0.0f);
189189
projectairsim::Quaternion quatA2 =
190190
projectairsim::TransformUtils::ToQuaternion(0.0f, 0.0f, 0.0f);
191191
projectairsim::Quaternion quatB2 =
192-
projectairsim::TransformUtils::ToQuaternion(M_PI, 0.0f, 0.0f);
192+
projectairsim::TransformUtils::ToQuaternion(0.0f, M_PI, 0.0f);
193193
projectairsim::Quaternion quatAToGlobal = quatA * quatA2;
194194
projectairsim::Quaternion quatGlobalToB = quatB2.inverse() * quatB.inverse();
195195
projectairsim::Quaternion quatAInB =
@@ -201,7 +201,7 @@ TEST(TransformTree, ConvertCross2) {
201201
projectairsim::TransformTree transformtree;
202202
projectairsim::Vector3 vec3A = projectairsim::Vector3(1.0f, 2.0f, 3.0f);
203203
projectairsim::Vector3 vec3A2 = projectairsim::Vector3(4.0f, 5.0f, 6.0f);
204-
projectairsim::Vector3 vec3B = projectairsim::Vector3(10.0f, -20.0f, -30.0f);
204+
projectairsim::Vector3 vec3B = projectairsim::Vector3(-10.0f, 20.0f, -30.0f);
205205
projectairsim::Vector3 vec3B2 = projectairsim::Vector3(40.0f, 50.0f, 60.0f);
206206
projectairsim::Vector3 vec3AToGlobal = vec3A + vec3A2;
207207
projectairsim::Vector3 vec3BToB2Global = quatB2 * vec3B;

core_sim/test/gtest_transform_utils.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ TEST(TransformUtils, ToQuaternion) {
2626
constexpr float t1_roll = projectairsim::TransformUtils::kEulerSingularityMinor;
2727
constexpr float t1_pitch = projectairsim::TransformUtils::kEulerSingularityMinor;
2828
constexpr float t1_yaw = projectairsim::TransformUtils::kEulerSingularityMinor;
29+
constexpr float t1_roll = projectairsim::TransformUtils::kEulerSingularityMinor;
30+
constexpr float t1_pitch = projectairsim::TransformUtils::kEulerSingularityMinor;
31+
constexpr float t1_yaw = projectairsim::TransformUtils::kEulerSingularityMinor;
2932
constexpr float a1_w = 0.7071075f;
3033
constexpr float a1_x = 0.000617057f;
3134
constexpr float a1_y = 0.7071054f;
@@ -60,9 +63,9 @@ TEST(TransformUtils, ToQuaternion) {
6063
constexpr float t1b_pitch = projectairsim::TransformUtils::kEulerSingularityMajor;
6164
constexpr float t1b_yaw = projectairsim::TransformUtils::kEulerSingularityMajor;
6265
constexpr float a1b_w = 0.7071075f;
63-
constexpr float a1b_x = -0.00061708689f;
66+
constexpr float a1b_x = -0.00061705709f;
6467
constexpr float a1b_y = 0.7071054f;
65-
constexpr float a1b_z = -0.00061708689f;
68+
constexpr float a1b_z = -0.00061705709f;
6669

6770
q = projectairsim::TransformUtils::ToQuaternion(t1b_roll, t1b_pitch, t1b_yaw);
6871

@@ -124,9 +127,9 @@ TEST(TransformUtils, ToQuaternion) {
124127
constexpr float t3b_roll = -projectairsim::TransformUtils::kEulerSingularityMajor;
125128
constexpr float t3b_pitch = -projectairsim::TransformUtils::kEulerSingularityMajor;
126129
constexpr float t3b_yaw = -projectairsim::TransformUtils::kEulerSingularityMajor;
127-
constexpr float a3b_w = -0.0018512607f;
130+
constexpr float a3b_w = -0.0018511415f;
128131
constexpr float a3b_x = -0.7071054f;
129-
constexpr float a3b_y = 0.00061711669f;
132+
constexpr float a3b_y = 0.00061705709f;
130133
constexpr float a3b_z = -0.7071054f;
131134

132135
q = projectairsim::TransformUtils::ToQuaternion(t3b_roll, t3b_pitch, t3b_yaw);

0 commit comments

Comments
 (0)