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

Difference between effort_controllers/JointVelocityController and velocity_controllers/JointVelocityController?

asked 2022-04-24 06:31:55 -0600 gravatar image

updated 2022-04-24 06:33:08 -0600


I wonder to know the difference between effort_controllers/JointVelocityController and velocity_controllers/JointVelocityController.

It looks like most examples of wheeled robot are using effort_controllers/JointVelocityController, though.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2022-04-24 08:36:14 -0600

Mike Scheutzow gravatar image

The type of command you send to a Motor Controller differs between models. Some are designed to take a target position, others a target velocity, and still others a target torque (i.e. "effort").

So the difference between the effort_controllers and velocity_controllers is the type of command that the ros_control stack sends down to the hardware_interface::RobotHW layer. Typically the value is then passed directly to the motor controller, so the cmd type must match what the motor controller is expecting.

edit flag offensive delete link more


Thanks for the reply. But, both the two controllers take target velocity. What is the difference? In Effort_controller/JointVelocityComtroller, I can imagine that it takes velocity as input, compare the velocity error, and generate proper effort to make the velocity error minimize. But what about the Velocity_controller/JointVelocityController? Is it really possible to control velocity by velocity itself in physics? gravatar image  ( 2022-04-24 19:32:53 -0600 )edit

The Effort_controller/JointVelocityComtroller outputs effort (torque) commands to the hardware interface. the Velocity_controller/JointVelocityController outputs velocity commands to the hardware interface. Both controllers take jointVelocity as input.

crnewton gravatar image crnewton  ( 2022-04-25 06:39:04 -0600 )edit

I assume the motor controller has its internal controller (i.e. low-level) to convert the signal to voltage, right?

CroCo gravatar image CroCo  ( 2022-08-19 12:44:14 -0600 )edit

Question Tools

1 follower


Asked: 2022-04-24 06:31:55 -0600

Seen: 230 times

Last updated: Apr 24 '22