gbm:
Piu' che altro ci sono tante considerazioni da fare, per esempio quando il robot va in avanti dovrà essere sempre inclinato indietro rispetto allo 0 di un angolo che varia in rapporto alla sua velocità (deve essere molto inclinato all'indietro al max per evitare di cadere in avanti)...
Questo è il limite di tutti i balancing robot che non usano sensori inerziali, il sensore assoluto di inclinazione realizzato con telemetri, non importa come sono fatti, va benissimo per le condizioni statiche, cioè robot fermo, o di marcia a bassissima velocità, non è sufficiente per farlo muovere sul serio e, sopratutto, per affrontare le pendenze, anche se molto piccole.
L'inclinazione nel senso di marcia serve per compensare la forza derivante dall'accelerazione e varia in funzione di quest'ultima, ovvero maggiore accelerazione comporta un maggiore angolo di inclinazione, una volta raggiunta la velocità di crociera l'inclinazione torna a 0.
Per determinare l'inclinazione ottimale occorre conoscere la posizione del baricentro del robot e la forza che vi agisce sopra, la prima la puoi trovare facilmente in modo sperimentale, per la seconda devi conoscere la massa del robot (basta pesarlo) e l'accelerazione, quest'ultima o la ricavi dai sensori oppure la conosci a priori perché utilizzi motori con encoder, servono quelli veri ad alta risoluzione con motori buoni, controllati da un pid fatto molto bene.
La soluzione ottimale è utilizzare motori con encoder abbinati ad un sensore inerziale ottenuto in sensor fusion dalla combinazione di un accelerometro a due assi montato inclinato sulla verticale di 45° e un giroscopio.
p.s.
Non esiste la massa statica e la massa dinamica, la massa è sempre e solamente la massa, semmai esiste la quantità di moto e la forza/momento d'inerzia, la prima dipende dalla massa e dalla velocità, la seconda dalla massa e dall'accelerazione lineare/angolare.