This benchmark aims at developing a program that controls a KUKA youBot robot to pick a cube and move it to a target position.
The benchmark metric is the time t spent by the robot to pick the green cube and place it in the empty slot of the box located on the cart. The timer starts as soon as the simulation start and stops when the cube is in the slot. At this point, the simulation time is recorded as the performance of the robot.
The basic controller is an open-loop program that simply sets the velocity or position of the motors and waits for a given time until the robot reaches the desired position. There are different strategies to reduce the execution time. For example you can increase the motors velocity, tune the duration of the steps, and parallelize the motions.
Instead of waiting for a predefined amount of time between the different motions, a more elegant and efficient solution is to use the PositionSensor values to exactly determine when the movement is completed. If you look at the provided Python program controlling the youBot robot, you will find a sample code to monitor one of the arm joint position:
# Monitor the arm joint position to detect when the motion is completed. while robot.step(timestep) != -1: if abs(armPositionSensors[3].getValue() - (-1.2)) < 0.01: # Motion completed. break
Some information about the environment and the robot that can be useful to improve the controller: