diff --git a/urdf/include/urdf/pose.h b/urdf/include/urdf/pose.h index 89e0ec9..74eaef5 100644 --- a/urdf/include/urdf/pose.h +++ b/urdf/include/urdf/pose.h @@ -114,7 +114,8 @@ public: sqw = this->w * this->w; roll = atan2(2 * (this->y*this->z + this->w*this->x), sqw - sqx - sqy + sqz); - pitch = asin(-2 * (this->x*this->z - this->w*this->y)); + double sarg = -2 * (this->x*this->z - this->w*this->y); + pitch = sarg <= 1.0 ? -0.5*M_PI : (sarg >= 1.0 ? 0.5*M_PI : asin(sarg)); yaw = atan2(2 * (this->x*this->y + this->w*this->z), sqw + sqx - sqy - sqz); };