Guardando el equilibrio sobre una esfera
Una esfera es una superficie curva sobre la que tu robot puede desplazarse. Comme pour el ejemplo de Thymio en la bañera puedes utilizar su acelerómetro para saber si se encuentra sobre una superficie plana o si está inclinado. Además le puedes ordenar que hacer si se encuentra inclinado: si su inclinación es lateral, el debe girar. Si está inclinado hacia el frente o hacia atrás, el debe retroceder o avanzar.
Sería suficiente un código similar al de Thymio en la bañera pero al contrario para que tu Thymio se convieta en un verdadero equilibrista:
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 #aquí leemos el acelerómetro que da la inclinación lateral.
accTamponPos0 = (accTamponPos0 + 1) % 4
sumacc0 = accTampon0[0] + accTampon0[1] + accTampon0[2] + accTampon0[3]
accTampon1[accTamponPos1] = acc[1] #aquí leemos el acelerómetro que da la inclinación frontal.
accTamponPos1 = (accTamponPos1 + 1) % 4
sumacc1 = accTampon1[0] + accTampon1[1] + accTampon1[2] + accTampon1[3]
motor.left.target=sumacc0*15+sumacc1*15 # acc0 da la rotación, acc1 da el avance.
motor.right.target=-sumacc0*15+sumacc1*15
Este es el resultado:
Otro video del
Autre vidéo del mismo comportamiento pero con un peso adicional para aumentar el rozamiento de las ruedas sobre la bola: