Adding Third Party Controllers#
To use a third-party controller with robosuite, you’ll need to:
Create a new class that subclasses one of the composite controllers in
robosuite/controllers/composite/composite_controller.py.Register the composite controller with the decorator
@register_composite_controller.Implement composite specific functionality that ultimately provides control input to the underlying
part_controller’s.Import the new class so that it gets added to robosuite’s
REGISTERED_COMPOSITE_CONTROLLERS_DICTvia the@register_composite_controllerdecorator.Provide controller specific configs and the new controller’s
typein a json file.
For the new composite controllers subclassing WholeBody, you’ll mainly need to update joint_action_policy.
We provide an example of how to use a third-party WholeBodyMinkIK composite controller with robosuite, in the robosuite/examples/third_party_controller/ directory. You can run the command python teleop_mink.py example script to see a third-party controller in action. Note: to run this specific example, you’ll need to pip install mink.
Steps 1 and 2:
In robosuite/examples/third_party_controller/mink_controller.py:
@register_composite_controller
class WholeBodyMinkIK(WholeBody):
name = "WHOLE_BODY_MINK_IK"
Step 3:
In robosuite/examples/third_party_controller/mink_controller.py, add logic specific to the new composite controller:
self.joint_action_policy = IKSolverMink(...)
Step 4:
In teleop_mink.py, we import:
from robosuite.examples.third_party_controller.mink_controller import WholeBodyMinkIK
Step 5:
In robosuite/examples/third_party_controller/default_mink_ik_gr1.json, we add configs specific to our new composite controller. and also set the type to
match the name specified in WholeBodyMinkIK:
{
"type": "WHOLE_BODY_MINK_IK", # set the correct type
"composite_controller_specific_configs": {
...
},
...
}