What Units are used by diff-drive-controller package? [closed]

asked 2020-07-24 04:58:39 -0500

wallybeam gravatar image

Dear Ros Community,

I am trying to implement diff-drive-controller package from Ros Controllers. I am confused about the units it takes and publishes. This package takes speed value to calculate odom and process cmd_vel to publish speed commands.

Currently, I am sending speed values in m/s and I am assuming that I received speed commands in m/s. I made this assumption by considering Ros is using SI unit system. However, it also takes radius as input so it can be publishing speed commands in rad/s too. So what should I expect to receive from diff-drive-controller package and what should I send as input?

edit retag flag offensive reopen merge delete

Closed for the following reason duplicate question by gvdhoorn
close date 2020-07-24 08:24:18.712085


Please see #q242766 (and #q311686).

gvdhoorn gravatar image gvdhoorn  ( 2020-07-24 08:25:09 -0500 )edit

I have already checked those questions. They are mentioniing about the output of diff-drive-controller. I wonder whether it takes rad/sec as input or m/s to calculate odometry.

wallybeam gravatar image wallybeam  ( 2020-07-24 08:47:01 -0500 )edit

The controller requires JointState handles to read the current joint state (which it gets from your hardware_interface), and as everything in ROS having to do with positions, velocities, accelerations, etc (see REP-103: Standard Units of Measure and Coordinate Conventions), those handles expect to be accessing data in appropriate units. So for revolute type joints, that would be rad, rad/s and rad/s^2. For linear joints, m, m/s and m/s^2.

There is no single answer to your question, as we do not know what type of robot you are trying to configure the diff_drive_controller for.

gvdhoorn gravatar image gvdhoorn  ( 2020-07-24 09:03:14 -0500 )edit