0
$\begingroup$

Rosanswers logo

Hi all,

I am trying to calculate the angular velocity and acceleration for 7DoF robot. Which does not support these measurements.

So I need to derive the joints variable online and publish the result as angular velocity.

Is there any package in ROS that can do this for me ?

Best Regards

Ali


Originally posted by Yacoub on ROS Answers with karma: 3 on 2016-02-09

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

If your robot is publishing joint angles at a reasonably high frequency, and you have a URDF describing the robot on the parameter server, and you have the robot_state_publisher running, then the current geometric description of your robot should be available to /tf and you can use a method such as tf::Transformer::lookupTwist() to estimate the velocity of your target frame relative to another frame estimated using finite differencing. This will likely be noisy data even if the frequency of your /joint_states information is quite high. Read more here.

If you have some way of measuring joint velocities (even if they are just finite differenced at high rates), you could alternatively use the manipulator Jacobian to map joint velocities to either spatial or body velocities. KDL (bundled in ROS as orocos_kdl) has tools for computing the Jacobian given joint angles and a URDF. This can also be done in Python via pykdl_utils.

Using either method, you could, in principle, estimate accelerations by numerically differentiating the velocities you get, but be aware, the results are not likely to be very accurate.


Originally posted by jarvisschultz with karma: 9031 on 2016-02-09

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by Yacoub on 2016-02-10:
You mean that I need to do the following:

1- include URDF within the launch file 2- include the Robot-state-publisher with the launch file as well 3- Write a tf broadcaster to estimate the angular speed

Is this right?

Thanks :)

Comment by jarvisschultz on 2016-02-10:
You would need a tf listener. The (robot_state_publisher node)+(URDF on parameter server)+(joint_states topic) provides all of the required tf information.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.