ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Quaternions in Gazebo

asked 2014-12-12 09:06:11 -0500

coocloud gravatar image

Hi, I'm trying to run reinforcement learning experiments using the gazebo simulator. The simulator provides the orientation of the robot in the form of a quaternion (x,y,z,w). I know that each of those components is an element of real numbers. But is there a range of values that those components can take on? Since I need to know the range of values in order to discretize the state space.


edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2020-10-10 23:35:16 -0500

Mark Rose gravatar image

updated 2020-10-11 11:42:01 -0500

First be aware what a quaternion is, a fairly concise representation of an arbitrary rotation, using four components, qx, qy, qx, and qw. These represent two values: 1) an axis of rotation, as a vector <x, y, z>, and 2) an angle of rotation theta around that vector, in radians, using a right-hand rule. (Point your right thumb along the vector pointing away from the origin, and curl the fingers of your right hand. That direction is a positive rotation.) Those two values are encoded into four components like this:

qw = cos(theta/2)
qx = x * sin(theta/2)
qy = y * sin(theta/2)
qz = z * sin(theta/2)

Since the only thing that matters about the axis vector is its direction, it is usually normalized so that it has unit length. That means that each component of the quaternion can have a value from -1 to +1. I don't believe a quaternion you get from ROS is guaranteed to be normalized. There is a normalize() method in the Quaternion class to ensure this, however.

edit flag offensive delete link more

Question Tools



Asked: 2014-12-12 09:06:11 -0500

Seen: 1,003 times

Last updated: Oct 11 '20