Angular velocity from two Matrices

In summary: I am not the OP, John. I don't know the application.That said, that the OP is using 4x4 matrices rather than 3x3 doesn't really matter. Just look at the 3x3 rotation matrix -- or transformation matrix (I don't know which the OP is using, and most authors are clueless to the fact that rotation is the transpose of transformation.)Anyhow, R(t+dt)R(t)T is the rotation from time t to t+dt in the body frame at the t. This will be close to an identity matrix. The off-diagonal elements provide one source for estimating the angular velocity.Note well: This has all the problems associated with numerical differentiation in general and
  • #1
brownmonster
4
0
Hi,

Currently i have a situation where I have two transformation matrices A and B (both 4x4). matrix A represents the transformation at time t=0 and matrix B represents the transformation at t = 1. I am wanting to calculate the angular velocity required to transform matrix A to matrix B, is this possible (on searching for this I can only seem to get back really complex answers and was hoping that it could be simpler than most results i have)

The application for this is that i have an animation system in my aplication, and i am wanting to populate some physics data based on the animation data this includes linear velocity and angular velocity, naturally linear velocity is rather easy as you can compute the delta and divide by the time step!

Can anyone provide me some pointers or a solution to this.. I was hoping it would be as easy as taking the matrices as 3x3's multiplying A by the transpose of B, to get the "delta" so to speak, and treating that as an angular velocity rotation matrix, but I can't see it being this simple!

Any help would be great!

Thanks!

Ste.

(Apologies for putting this in general physics, I posted from the wrong tab :(, Can it be transferred? )
 
Last edited:
Mathematics news on Phys.org
  • #2
Angular veloicty from two matrices...

Hi,

Currently i have a situation where I have two transformation matrices A and B (both 4x4). matrix A represents the transformation at time t=0 and matrix B represents the transformation at t = 1. I am wanting to calculate the angular velocity required to transform matrix A to matrix B, is this possible (on searching for this I can only seem to get back really complex answers and was hoping that it could be simpler than most results i have)

The application for this is that i have an animation system in my aplication, and i am wanting to populate some physics data based on the animation data this includes linear velocity and angular velocity, naturally linear velocity is rather easy as you can compute the delta and divide by the time step!

Can anyone provide me some pointers or a solution to this.. I was hoping it would be as easy as taking the matrices as 3x3's multiplying A by the transpose of B, to get the "delta" so to speak, and treating that as an angular velocity rotation matrix, but I can't see it being this simple!

Any help would be great!

Thanks!

Ste.
 
Last edited:
  • #3
"Moved to general math"
 
Last edited:
  • #4
  • #5


This was also posted in the physics section so I am merging the two threads.
 
  • #6


brownmonster said:
Hi,

Currently i have a situation where I have two transformation matrices A and B (both 4x4). matrix A represents the transformation at time t=0 and matrix B represents the transformation at t = 1. I am wanting to calculate the angular velocity required to transform matrix A to matrix B, is this possible (on searching for this I can only seem to get back really complex answers and was hoping that it could be simpler than most results i have)

If A and B they rotation matrices why are they four by four?
 
  • #7
John Creighto said:
If A and B they rotation matrices why are they four by four?
Mechanical engineers have a doofy way of representing rotations. This approach is particular common in robotics applications.

Edit
The 4x4 matrix represents rotation and translation in one swell floop.

Reference: http://books.google.com/books?id=zxuG-l7J5rgC&pg=PA76#v=onepage&q=&f=false
 
Last edited:
  • #8
D H said:
Mechanical engineers have a doofy way of representing rotations. This approach is particular common in robotics applications.

Edit
The 4x4 matrix represents rotation and translation in one swell floop.

Reference: http://books.google.com/books?id=zxuG-l7J5rgC&pg=PA76#v=onepage&q=&f=false

I was aware of that but it the transformation also contains a translation then it will be harder to find the rotational velocity. I don't think there was enough information given in the original problem to answer the question. For instance, is the rotation always about the same axis? You mentioned robotics, is this a robotics problem? If so, it would be helpful, to know something about the geometry of the robot.
 
  • #9
Given the original poster is looking for approximate methods, any rotation can be represented by the composition of three rotations, about a set of independent axis, since it is four by four I'll assume there is a translation in here:

[tex]C=B-A \approx \frac{dA}{d\theta_1}d \theta_1+\frac{dA}{d\theta_2}d \theta_2+\frac{dA}{d\theta_3}d \theta_3+\frac{d A}{d x_1}\d x_1+\frac{dA}{d y_1}\d_y_1+\frac{dA}{d z_1}\d_z_1[/tex]

Now, equate terms in the two matricies and solve for,
[tex]d \theta_1, d \theta_2, d \theta_3, d x_1, d y_1, d z_1[/tex]

Then to get angular velocities, divide the change in angle by the change in time. If more was known about the problem a more accurate answer could be given.
 
Last edited:
  • #10
I am not the OP, John. I don't know the application.

That said, that the OP is using 4x4 matrices rather than 3x3 doesn't really matter. Just look at the 3x3 rotation matrix -- or transformation matrix (I don't know which the OP is using, and most authors are clueless to the fact that rotation is the transpose of transformation.)

Anyhow, R(t+dt)R(t)T is the rotation from time t to t+dt in the body frame at the t. This will be close to an identity matrix. The off-diagonal elements provide one source for estimating the angular velocity.

Note well: This has all the problems associated with numerical differentiation in general and also brings into play lots of numerical errors that result from computing the matrix product of a matrix and the transpose of another matrix that is very close to the first.
 
  • #11
D H said:
I am not the OP, John. I don't know the application.

That said, that the OP is using 4x4 matrices rather than 3x3 doesn't really matter. Just look at the 3x3 rotation matrix -- or transformation matrix (I don't know which the OP is using, and most authors are clueless to the fact that rotation is the transpose of transformation.)

Anyhow, R(t+dt)R(t)T is the rotation from time t to t+dt in the body frame at the t. This will be close to an identity matrix. The off-diagonal elements provide one source for estimating the angular velocity.

Note well: This has all the problems associated with numerical differentiation in general and also brings into play lots of numerical errors that result from computing the matrix product of a matrix and the transpose of another matrix that is very close to the first.

Yeah the above method is what I did originally and I have ended up keeping, all other methods that i tried seem to work for 99% of cases, whereas this works for all case but is slightly erronous. I was wondering if anyone had any precise way of doing it :)...

And to clear it up I'm using 4x4 matrices as it is a translation and a rotation, I am only interested in the rotational components so i can simply take the 3x3 component of each matrix.

And to clea rup the application: We have animation data from objects and characters in our app, this information wants to feed into the realtime physics system so it can interact with the 1000's of objects that are in there correctly so characters can hit stuff around and move correctly on moving objects etc etc.

Thanks for the replies :)
 

What is angular velocity?

Angular velocity is a measure of how quickly an object is rotating around a fixed point. It is typically measured in radians per second.

How is angular velocity calculated from two matrices?

Angular velocity can be calculated from two matrices by taking the cross product of the two matrices and dividing by the magnitude of the resulting vector.

What are the applications of calculating angular velocity from two matrices?

Calculating angular velocity from two matrices is commonly used in robotics, computer graphics, and physics simulations to determine the rotational motion of objects.

Can angular velocity be negative?

Yes, angular velocity can be negative. A negative angular velocity indicates that the object is rotating in the opposite direction compared to a positive angular velocity.

How is angular velocity different from linear velocity?

Angular velocity measures the rate of change of an object's rotational motion, while linear velocity measures the rate of change of an object's linear motion. They have different units and represent different types of motion.

Similar threads

  • Introductory Physics Homework Help
Replies
3
Views
791
  • General Math
Replies
11
Views
1K
  • Mechanical Engineering
Replies
3
Views
461
  • Introductory Physics Homework Help
Replies
11
Views
2K
Replies
1
Views
1K
Replies
7
Views
836
  • Linear and Abstract Algebra
Replies
6
Views
524
Replies
3
Views
1K
Back
Top