# 3D vectors to variables A, B and C

• Hi there,

I've made a program that helps me do a specific path with the orientation that my tool needs to have on each point on the path. Each point has an X Y Z coordinates, but the orientation of my tool is given by a normal vector. I would like to know if there's a method or something else I can do so I can convert my normal vector to the variables A, B and C.

I will put an image on this thread so you can visualize what I'm saying. Each red line is the orientation my tool needs to have on each point. The orientation is a vector [X; Y; Z] but I need the following variables: A, B, C.

## Images

• Hm... I suspect that the answer involves converting from the Normal Vector to a matrix, then converting from the matrix to KUKA ABC angles.

Generally, when converting from any robot brand Euler orientation to any other brand, the matrix is always the intermediate step. The matrix notation for a given orientation is always the same. I imagine the Normal Vector converts similarly.

You'll need to find an appropriate algorithm for converting from the NV you're using to matrix notation.

One item of note: your Normal Vector does not appear to control the rotation around said vector, the so-called "clocking". IIRC, you need two orthogonal NVs to fully define an Euler rotation.

• create 3x3 rotation matrix then compute angles A,B,C using MAT_TO_RPY()

but... 3x3 rotation matrix T[,] has 9 elements and your vector only has 3 elements. that is only one row or column of the rotation matrix. if you know two rows or columns (6 elements) then last row or column can be computed using cross product of the first two.

in other words, you need to know what coordinate system is used as a reference.

2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

• Dumb question, but in which software did you take the print screen?

• Dumb question, but in which software did you take the print screen?

To me it looks like graph was created in MatLab or Octave