Aiuto sviluppo codice per roving self balancing

gbm:
Questo offset varierà in base alla velocità e alla massa del robot.

No, è solo in base all'accelerazione, non importa se il robot viaggia a 1 cm/s o a 10 m/s, in fase di avanzamento a velocità costante l'assetto sarà sempre verticale, o quasi se si vuole compensare la coppia sfruttando il peso.
L'inclinazione varia in modo proporzionale, con una legge seno/coseno, in funzione dell'accelerazione e del suo segno.

enare è fondamentale portare il robot in una postura con angolo negativo rispetto al moto, per evitare di ribaltarsi in avanti frenando e per avere un po' di margine per frenate piu repentine (per questo stavo ragionando di tenerlo sempre leggermente in negativo, cosi' da poter frenare in tempi utili in caso ci sia un ostacolo).

Questo è un punto dolente, dipende tutto dalla potenza disponibile, cioè i motori devono essere in grado di "ribaltare" nel senso opposto il robot in un tempo minore di quello imposto dal movimento di pendolo dovuto all'accelerazione.
Tali valori sono calcolabili e devono essere tabellati come massima accelerazione sopportabile, se vai oltre non c'è preinclinazione che tenga, il robot casca.

e poi volevo raggiungere un bel risultato cosi' com'è per poter permettere a tutti gli appassionati di farsi un self balancing senza dover spendere 50 euro per la IMU, chiaramente con tutte le limitazioni del caso, che pero' vanno di pari passo con la complessità hardware e software.

Puoi ovviare, parzialmente, alla mancanza della IMU con gli encoder sui motori, almeno sai velocità e accelerazione reali, però non aspettarti grossi risultati, sopratutto se non usi encoder ad alta risoluzione.
Però ultimamente stanno uscendo vari sensori inerziali, accelerometri e giroscopi, che costano pochi Euro, sono per uso sui cellulari, non saranno precisissimi però dovrebbero bastare per un semplice balancing robot a basso costo.
C'è anche l'estensione del Wii Mote, il motion plus, che costa abbastanza poco, mi pare meno di 20 Euro, e dentro c'è un giroscopio a tre assi su bus I2C.