Otto diy non funziona correttamente quando è alimentato dalle batterie

Salve a tutti,

Ultimamente ho costruito un robottino otto diy, penso che molti di voi lo conoscano.

Per realizzarlo ho utilizzato le solite componenti: arduino nano con shield, buzzer da 5 volt, servomotori mg90s ed è alimentato con 4 pile AA da 1.5V.

Funziona tutto perfettamente quando arduino e servomotori vengono alimentati dalla presa USB del PC, dopo aver staccato il cavo USB, ed aver premuto il tasto di accensione, il robottino esegue un codice totalmente diverso da quello precedentemente in esecuzione, oppure si muove a scatti.

Questo è uno dei tanti codici di prova che ho utilizzato.

#include <Servo.h>
#include <Oscillator.h>
#include <Otto9.h>

Otto9 Oddo;
int LL = 2;
int RL = 3;
int LF = 4;
int RF = 5;


void setup() {
  // put your setup code here, to run once:
  Oddo.init(LL, RL, LF, RF, false, 0, 6, 7, 8);
  Oddo.home();
  delay(50);
}

void loop() {
  // put your main code here, to run repeatedly:
  Oddo.walk(3,1000,1);
  delay(50);
  Oddo.home();
  delay(50);
  Oddo.turn(2,1000,-1);//3 steps turning RIGHT 
  delay(50);
  Oddo.home();
}

Ad esempio, in questo caso, il robottino esegue correttamente il codice se alimentato da USB, mentre continua a camminare in avanti, senza girare a destra, se alimentato dalle batterie!

Trovo il tutto molto strano… se fosse un problema di alimentazione in teoria non dovrebbe riuscire neanche a camminare dritto, o sbaglio? Infatti se commento la parte della camminata in avanti, lui riesce a ruotare a destra.

Altro fatto curioso, se aumento l’ultimo delay nel setup a 5000, allora una volta entrato nel loop non riesce ad eseguire neanche la camminata e muove i motori a scatti!!

Fatemi sapere se è necessario che fornisca altre informazioni, spero in un vostro aiuto perché non riesco proprio a capire cosa stia succedendo. Grazie.

Pur non essendo ferrato in materia direi che il problema sono le batterie.
Hai provato con un alimentatore?