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.

balle-inverse.jpg

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:

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License