Thymio in equilibrio su una sfera

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.

balle-inverse.jpg

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:

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