Using the learning algorithm it estimates the time he needs to spin its waist until the right hand will be above the target. Once there it stops motion and releases the object. Then it is notified of the error so that the algorithm can correct the estimate.
Usage: The front foot sensors are used to input the target "degree" and then the back sensors are used to signify the completion of the input (ex. pressing the right back sensor simply tells the robot to reuse the last degree). Next, after the robot has dropped the object and the error the foot sensors are used in a similar fashion to input the error.
*At each step the robot notifies acceptance of input or readiness by blinking his eyes.
The first try: The robot always drops the ball near 90 degrees on the 1st attempt of the 1st target. Using the resulting error and conjecturing that the relation is linear, the robot stores a function used to compute the estimated length of time for every target. The relation does not have to be linear though, the algorithm works identically for any type of function as long as it can produce an estimate function. (It was originally written with a -x^2 type function)
Subsequent tries: The estimate is made by taking into account EVERY attempt (if no attempts, the value resulting from the function is used). Each attempt calculates a new estimated length of time based on the previous time and error. These new estimates are all averaged together with varying weights. The weight for estimates resulting from lower errors is much greater since they provide better estimates. Note - The increase in weight as the error decreases is a increasing value, so the closer to 0 the error becomes the much higher the weight jumps.
Video 1
Target = 120 degrees
Errors:
1st attempt = -20
2nd attempt = -5 (brushes the side of the target)
3rd attempt = hit!
4th attempt = hit!
Video 2
Target = 30 degrees
Errors:
1st attempt = 70
2nd attempt = -5
3rd attempt = 2
4th attempt = hit!