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

units of twist.angular.z

asked 2019-12-10 05:43:53 -0600

wintermute gravatar image


The unit of twist.angular.z is noted rads / second. So if I send the robot a twist command linear.x=0.0, angular.z=1.0 it should rotate 1 radians / second, so half a turn / second?


if I give linear.x=0.0, angular.z=3.14 it will give the same half a turn rotation per second?

I am asking this question, because I made my cmd_vel listener to operate like the first case, (1.0 = 1rads/sec) but my odometer is reporting values like 3.14 for thetaVel, when the robot is spinning at 1 rads/sec.

The theta from the odometer is between 0 and 6.28 (2pi) so I am assuming my input equation for cmd_vel is wrong, and not the odometry.

Best regards, C.A.

edit retag flag offensive close merge delete


Please see whether #q185427 clears this up.

As everything in ROS, Twist uses SI units.

gvdhoorn gravatar image gvdhoorn  ( 2019-12-10 05:48:31 -0600 )edit

@gvdhoorn the question does not clear it up.

but I fired turtlesim package to find that giving angular.z = 3.14 causes 1 revolution in 2 seconds, and reports 3.14 from odom.twist.z as well, which are calculated.

So SI units, right but z=3.14 means 1 radians/sec,

I am trying to get robot_localization package to work, so I wanted to have proper forward and inverse kinematics, and I dont knot if turtlesim package is a good example.

wintermute gravatar image wintermute  ( 2019-12-10 16:38:38 -0600 )edit

So SI units, right but z=3.14 means 1 radians/sec,

I'm not sure I understand what you're saying here with the "but".

SI units for angles or rotations are radians. For a rotational velocity, that would mean radians/sec. 1 pi radians per sec means half a rotation per second. 2pi radians per second means a full rotation per second.

gvdhoorn gravatar image gvdhoorn  ( 2019-12-11 02:53:44 -0600 )edit


the but here, is because I have checked the package as well as So what I have done was to give angular.z = 3.14 and then measure the rotation, [by means of a stopwatch and visual observation] - also monitoring turtlesim's /turtle1/pose (which does publish angular vel - calculated) and the diff_drive's /odom output has twist derived from observed input.

They both require input that is pi * radians. Now they could be both wrong as well.

For pure SI units, I would think that the input should be not pi * radians but just radians.

I am trying to use the twist from /odom in robot_localization package, so I naturally would like the units to be correct.

best regards.

wintermute gravatar image wintermute  ( 2019-12-11 04:06:37 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2019-12-10 09:29:17 -0600

jordan gravatar image

1 radian ~= 57 degrees (180/PI). Setting angular.z = 1.0 gives a rotation of ~57 degrees per second.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2019-12-10 05:43:53 -0600

Seen: 4,100 times

Last updated: Dec 10 '19