Una palla è una superficie curva su cui un robot può muoversi. Per quanto riguarda l'esempio del bagno Thymio II utilizza il suo accelerometro per sapere se è ben orizzontale nella parte superiore della palla o se è inclinato e dunque non sulla parte superiore della palla. Dall'inclinazione, il programma può sapere in quale direzione è appoggiato: se è inclinato lateralemente, deve girare per orientarsi verso la cima. Se il robot è inclinato in avanti o indietro, deve andare avanti o indietro.
Basta un codice simile all'esempio della vasca ma invertita per eseguire un numero di circo con Thymio II nel ruolo dell'acrobata:
var accTampon0[4] = 0,0,0,0
var accTamponPos0 = 0
var accTampon1[4] = 0,0,0,0
var accTamponPos1 = 0
var sumacc0
var sumacc1
onevent acc
accTampon0[accTamponPos0] = acc[0]-2 #qui si prende la misura dell'accelerometro che dà l'inclinazione laterale
accTamponPos0 = (accTamponPos0 + 1) % 4
sumacc0 = accTampon0[0] + accTampon0[1] + accTampon0[2] + accTampon0[3]
accTampon1[accTamponPos1] = acc[1] #qui si prende la misura dell'accelerometro che dà l'inclinazione frontale
accTamponPos1 = (accTamponPos1 + 1) % 4
sumacc1 = accTampon1[0] + accTampon1[1] + accTampon1[2] + accTampon1[3]
motor.left.target=sumacc0*15+sumacc1*15 # acc0 definisce una rotazione, acc1 definisce l'avanzamento
motor.right.target=-sumacc0*15+sumacc1*15
Il risultato è il seguente:
Un altro video del comportamento, ma con il robot con un peso per aumentare l'aderenza delle ruote sulla palla: