-
Notifications
You must be signed in to change notification settings - Fork 5
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.
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.
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.
- Joint Impedance
- Joint Velocity
- Joint Torque
- End-effector Impedance
- End-effector Impedance with Posture nullspace
To understand more about the different types of robotic control and their role as the action space of robot learning, see the following papers: