Resolved-Rate Motion Control
The goal of this task is to implement a Resolved-Rate Motion Control (RRMC) controller that moves the limbs away from collision using feedback from the artificial skin. There will be ball falling on the robot and you should move the correct body part away from it, i.e., move it against the normal of the contact.
![]() |
![]() |
![]() |
![]() |
Task
Implement process() function in exercise_4.py that will control the robot using RRMC. This time, the function is a method of a class. The reason is the option to store you own variables in the class.
the class takes one argument:
client - instance of pycub class that controls the simulation
the function should control joints using RRMC -> using velocity control
you should not call
update_simulation()
in any of your code
You will be given four different scenarios with different body_parts being hit by the ball and with different number of balls. You should move every skin part that is in collision with any ball! But always use one contact per skin part, i.e., you should find the biggest cluster of activated taxels (skin points) on each skin part.
The tester script exercise_4_tester.py will run all four tests in sequence from the easier one. You need to manually close the visualization window after each test.
Scoring
There is no automatic evaluation for this task. But basically the task will be correctly fulfilled if the robot moves away from the ball. You can consult the video on top of this README to see possible outcomes. However, keep in mind that those are not the only correct solutions as the movements depends on the parameters selected in RRMC.
Requirements
Those apply mainly for exercise_4_tester.py to work correctly:
do not create new client instance, use the one that is passed as an argument to the RRMC class
do not rename the function, file or class
do not call
update_simulation()
in any of your code
Those apply so that you fulfill the exercise as intended:
Do not turn of gravity