DCM Controller#
The DCM controller is a Whole Body Inverse Dynamics Controller implemented as a ROS Controller. The computation flow is as follows:
The robot updates the state of its actuators and floating base state using the state estimator.
The internal state machine computes operational state desired quantities, such as COM acceleration, torso orientation, foot Cartesian references, etc…
The operation targets are fed to the inverse dynamics WBC controller.
The desired torques are commanded to the local joint controller.
This controller runs in separate threads.
The torque control runs at the ROS control frequency 2 kHz.
The whole body optimization runs at 500 Hz.
The state estimator based on kinematics runs at 1 kHz.
To start the DCM controller run:
roslaunch kangaroo_pal_locomotion kangaroo_dcm_walking_controller.launch
Once the controller is active it is possible to start the different behaviors online also called actions.
IMPORTANT
Once the controller is stopped it sends zero torque to all the controlled joints. This means that the robot will collapse.
📹 Video Reference:#
Kangaroo Push test:
Kangaroo Balancing test: