Revision history [back]

Q1

effort_controllers implements simple controllers for effort-controlled joints. These controllers are joint_effort_controller, joint_velocity_controller and joint_position_controller. They take as input effort, velocity and position references, respectively, and transform them into effort commands. The same line of thought applies to the velocity_controllers and position_controllers packages. This is why you are seeing multiple instances of joint_position_controller, for instance. There are two versions, one targeting effort-controlled joints, and another targeting position-controlled joints.

Q2

You can echo your commands as state if you want. This would give you a 'perfect control' plant. It's up to you to determine if that's OK for your usecase.

Q3

In real hardware, transmissions serve the purpose of mapping actuator state readings to joint space, and joint commands to actuator space. In simulation, transmissions are used to determine which joints to expose to your hardware interface, and which interfaces should be supported. There is currently no notion of actuators in gazebo_ros_control.