Home | Tutorials | Wiki | Issues
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Compute roll, pitch and yaw from 3D vector

Hi !

I'm trying to build SDF tree models from a description file. The branches are modeled by cylinders. For each cylinder, I have : x, y, z : coords of the cylinder, vx, vy, vz : vector supporting the cylinder.

Since the <pose> takes roll, pitch and yaw angles to build a cylinder, I have to compute them from the direction vector (vx, vy, vz).

Here's how I do it, using numpy:

roll = np.arctan2(vz, vy)

pitch = np.arctan2(vx, vz)

yaw = np.arctan2(vy, vx)

I'm not getting the results I want, some of the branches are clearly misplaced. I noticed that Gazebo places a cylinder along the z axis if you provide yaw, pitch, roll = 0, so I tried to rotate by 90° on the x axis like so :

roll = np.arctan2(vz, vy) + 1.5708

without success.

If you have any advice on how to get these Euler angles right, feel free to share !

Have a nice day.