Free Drive Controller
Controller that allows to freely move the arm around manually. \
Note
This controller has to be used in combination with the Gravity Compensation Controller. Otherwise the arm will probably just fall down!
Parameters
Definition:
freedrive_controller:
joints:
type: string_array
default_value: []
description: "Names of joints used by the controller"
validation:
unique<>: null
d_gains:
type: double_array
# These mini d gain values are needed because otherwise the controller on the drive will be disabled.
default_value: [0.001, 0.001, 0.001, 0.001, 0.001, 0.001]
read_only: true
joints | [Required]:
List of managed joints by the controller. Always needs to be a list of all joints of an arm in the order specified in the urdf
d_gains | [Optional]:
Allows to configure custom d-gains for the free drive mode. Higher gains mean more dampening.
Example:
A full example can be found in the dynaarm_demo repository.
freedrive_controller:
ros__parameters:
joints:
- shoulder_rotation
- shoulder_flexion
- elbow_flexion
- forearm_rotation
- wrist_flexion
- wrist_rotation
ROS Interface
None
Additional Information
The controller works by disableing the P and I gains of the motor controller running on each actuator. The D gain acts as a dampening against sudden motions. The Gravity Compensation Controller then simply provides a feed forward torque for each actuator that keeps the arm upright at its current position. By disturbing this stable state via a manual interaction it is possible to freely move the arm around.