Ausgabegrössen?
Eigentlich hast du doch erst mal nur eine Grösse mit der du reagieren kannst, und zwar deine Motorspannung.
Und da hört mein Vertsändniss auf.
Ich habe mal versucht die Räder festzuhalten und dann rauszufinden bei welcher Schräglage welche Motorleistung nötig ist um den Robo schräg zu halten oder wieder aufzurichetn aber das hat auch nicht geklappt.
Sehr präzise und hilfreiche Tipps kann ich dir leider nicht geben - ich habe es bisher ja selber nicht geschafft.

Dass du von "Motorleistung" und "aufrichten" schreibst, hört sich für mich aber an, als würdest du dir vielleicht ein etwas falsches Bild machen.

Du kannst den Roboter nicht einfach mit Motorkraft wieder aufrichten.
Das würde nur funktionieren, wenn du die Räder am Boden festklebst.
Beim ruckartigen anfahren und abbremsen der Motoren wird zwar ein Moment auf den Roboter übertragen, den würde ich aber eher als Störgrösse betrachten und nicht als die Regelgrösse.

Es gibt einen Punkt bei dem dein Roboter im Gleichgewicht ist, und zwar wenn sein Schwerpukt genau über der Achse zwischen den beiden Rädern ist.
Da das ein labiles Gleichgwicht ist, bleibt der Roboter da nicht, sondern er kippt. Beim kippen verschiebt sich der Schwerpunkt vor oder hinter die Achse. Also muss der Roboter mit der Achse wieder unter den Schwerpunkt fahren. Dabei muss er schneller fahren, als sich der Schwerpunkt aufgrund der Massenträgheit von der Achse weg bewegt.
Dass die Achse ganz genau unter dem Schwerpunkt zum Stehen kommt wird nicht funktionieren, also sollte der Roboter lieber ein Stückchen zu weit fahren, damit er dann in die entgegengesetzte Richtung kippt.
Dann geht das selbe Spiel in die andere Richtung los.

Theoretisch müsste dafür schon eine 2-Punkt Regelung ausreichen. Wenn das Ganze schnell genug geht, klappt es ja offensichtlich auch, wie man an Waste's Asuro sieht.

Ein Problem bei meinem Fahrgestell - ich vermute das trifft auch bei deinem zu - ist, dass es ziemlich schwer ist. Daher verwende ich RB35 Motoren mit einer relativ hohen Untersetzung. Die reagieren nicht so schnell wie der Asuro von Waste. Ausserdem habe ich wesentlich grössere und breitere Reifen. Dadurch dürfte der Moment der auf den Roboter übertragen wird bevor die Räder überhaupt losdrehen (das was ich oben als Störgrösse bezeichnet habe) grösser sein als bei Waste's Asuro.
Die Sharps messen auch nicht so besonders schnell.
Um das alles zu kompensieren, braucht man dann vermutlich eine PID Regelung.

Wenn du da mit Mathematik rangehen willst, must du erst mal die Massenträgheit deines Fahrgestells berechnen, damit du weisst wie schnell er kippt.
Über den Neigungswinkel kannst du errechnen wie weit er fahren muss um wieder unter den Schwerpunkt zu kommen. Über die Trägheit kannst du berechnen wie schnell das gehen muss.
Ein paar Radencoder würden sicherlich auch helfen zu bestimmen wie weit das Fahrgestell schon gefahren ist ......

Da ich keine Radencoder habe und Mathematik nie mein Lieblingsfach war, habe ich immer noch die Hoffnung es klappt auch mit ein paar Schätzungen und viel Try&Error.

Wenn du vorne und hinten eine Stütze an deinen Roboter montierst, kannst du dich ein bischen rantatsten, wieviel Spannung du geben musst, damit Roboter von einer Seite auf die andere rüberkippt und wie weit er dabei fährt.
Ausserdem kannst du testen, wieviel Spannung du geben musst, damit die Räder sich überhaupt bewegen.
Weiterhin kannst du mal ausprobieren, wie schnell dein Motor unter Belastung überhaupt auf Spannungsänderungen reagiert.
Wenn du dein Fahrgestell mal an den Rädern baumeln lässt, kannst du abschätzen wie lange er pro Schwingung braucht und wieviele Messwerte du in der Zeit überhaupt bekommen kannst.

Ob das reicht um jemals eine vernünfige Regelung hinzubekommen weiss ich nicht. Auf jeden Fall sollte es aber die möglichen Parameter beim Try&Error Verfahren etwas einschränken.