# ros control effort controllers explained?

Hi everyone,

I am trying to model the response of my robot in gazebo. My gazebo is really based around its torque, it is a logistics robot. I am currently using the following for control:

left_controller:
type: "velocity_controllers/JointGroupVelocityController"
joints: ['front_left_wheel', 'center_left_wheel', 'rear_left_wheel']

right_controller:
type: "velocity_controllers/JointGroupVelocityController"
joints: ['front_right_wheel', 'center_right_wheel', 'rear_right_wheel']


However upon further investigation I believe I have chosen to control velocity regardless of motor torque. So my question is, do the effort controllers control torque? if so, can I set a maximum torque for the controllers and control them with velocity commands? I have done some research and believe that is known as an effort velocity controller? Is it possible to specify the torque of a velocity joint controller (as I have used)?

I cannot find any use cases for this, can anyone provide a link to a use case?

If I instead control the joints through effort, what unit is that? is it torque? (Nm)?

thanks, Grant.

edit retag close merge delete

Sort by » oldest newest most voted

Yes effort controllers control torque in the case of rotary joints, or force in the case of linear joints. They are named that way since they are agnostic to the type of joint they're controlling.

Controllers are defined by the type of control input and the type of output they use to drive the joint. By the sounds of it you want a controller which accepts velocity commands going in, and produces torque (effort) commands going up. This will allow you to set an upper limit on the torque. You want an effort_controllers/joint_velocity_controller for this.

ROS uses SI units as standard, so yes an effort_controller connected to a rotary joint will output torque in Nm.

Hope this helps.

more

Hi, great answer! exactly what I was after :) I have 3 wheels driven from a chain system connected to a single motor, for this reason I was using the velocity group controller, is there such a controller for effort_controllers/joint_velocity_controllers

( 2019-08-26 20:54:20 -0500 )edit