Naja, also das "gerade ausrichten" könntest Du ja durch einen Sensor an jeder Seite schonmal hinkriegen, indem Du einfach die Farbwerte vergleichst. was Du mit der anderen Koordinate machst wüsste ich so spontan auch nicht...

Edel wäre natürlich ein "Ziel-Laser" (für die Optik ) und eine Kamera/Bildverarbeitung, die das Objekt "Tor" erkennt und den Roboter entsprechend ausrichtet, sowas ist mit der CMUCam2 zum Beispiel durchaus drin, fällt aber auch eher nicht in den Bereich preiswert...



Laut Datenblatt hat der Kompass-Sensor eine Genauigkeit von 3-4°, was für Deine Bedürfnisse sicherlich ausreichen würde was die Richtung angeht, davon hast Du dann aber natürlich noch keine exakte Position (bist also im Prinzip auch nicht weiter als mit den zwei Photosensoren, kannst nämlich immer noch entlang der Außenlinie des Spielfeldes schießen, wenn Du eigentlich in die Mitte wolltest).


Man kann den Chip statisch kalibrieren, dadurch bist Du schonmal Störungen durch Magnetfelder, die Du mit Dir rumschleppst (Motoren, magnetische Schalter, Batterien etc.) los. Was "Umwelteinflüsse" angeht glaube ich nicht dass sie das Messergebnis sonderlich beeinträchtigen, solange Dein Spiel nicht gerade in einem Umspannwerk stattfindet... Wie beim "analogen" Kompass auch ist der Einfluss von passiven Magneten (also alles was nicht "von selber ein Magnetfeld erzeugt") gegenüber dem Erdmagnetfeld meist zu vernachlässigen, solange Du nicht gerade ne Sonde auf den Mars schießen willst...

Wenn Du natürlich ganz sichergehen willst, an Deinem Roboter mindestens 2 Räder hast, die garantiert keinen Schlupf gegenüber dem Grund haben und eine CPU mit ein bisschen Leistung kannst Du auch die Daten des Kompass-Moduls mit den Daten vergleichen, die eine Translations- und Rotationsmessung über die Räder liefert.

Das geht über die allseits beliebten linearen Ausgleichsprobleme (in diesem Fall n-dimensional, wobei n die Anzahl der zu vergleichenden Sensoren ist) auch recht einfach, solange Du es mit der Zahl der Sensoren nicht übertreibst (Rechenaufwand steigt mehr als quadratisch zur Dimension).
Dort ein Tip zur Implementation (da es Dir hier ja auf Genauigkeit ankommt, wenn Du den ganzen Aufwand schon treibst):
zur Diagonalisierung der Systemmatrix solltest Du unbedingt statt des Gauss-Algorithmus' (den man evtl noch aus der Schule kennt) auf die QR-Zerlegung nach Householder oder ähnliche Verfahren zurückgreifen!!
Das ist zwar (rechnerisch) deutlich aufwendiger, aber der Gauss'sche Algorithmus ist numerisch instabil (schon bei sehr kleinen Messungenauigkeiten am Anfang haben die Ergebnisse mit der Wahrheit nichts mehr zu Tun!)!

Hoffe, Dir damit erstmal weitergeholfen zu haben...