Skip to content

Controllers

rohun-kulkarni edited this page Jul 15, 2020 · 2 revisions

Controllers

Robot control is the primary purpose of perls2. To fulfill this, perls2 offers a variety of documented, and tested controllers. These pages serve to document the controller design to help inform researchers about the different options for robotic control available to them.

Torque-based control.

All controllers in perls2 are explicitly torque-based. This refers to the fact that for any robot command (set_joint_position), the controller takes the desired robot state and computes the torques necessary to achieve that state. These torques are sent to the robot. Please note that this is explicitly different from using the native functions offered by many SDKs. In PyBullet for instance, you may set the joint positions via position control.

Why not use built-in / SDK robot commands?

All robot controllers are torque-based at the lowest level. Different SDKs and simulator environments offer different controllers (joint position, velocity) as a matter of convenience. However, ultimately any good simulator or real robot SDK will convert the error between goal state and current state into a series of torques to send to the motors.

Using torque-based controllers is the best way to ensure similar operation between different types of robots, and different types of simulator environments.

Available Controllers

  • Joint Impedance
  • Joint Velocity
  • Joint Torque
  • End-effector Impedance
  • End-effector Impedance with Posture nullspace

Helpful references

To understand more about the different types of robotic control and their role as the action space of robot learning, see the following papers: