--> Ich sollte jetzt irgendein C++-Programm schreiben
Der Rest ist eigentlich ziemlich einfach. Da du uns nicht sagen willst, wie die Daten von der Kamera aussehen und in welchem Format die Steuerbefehle an den Roboter gesendet werden, kann man da nur etwas Pseudocode zeigen:
Htm robot_start = rob_pos_in_htm( Roboterstartposition );
Htm rechteck_start = kamera_pos_in_htm( StartpositionRechteck );
Htm letzte_pos = robot_start;
do
{
Htm abstand = kamera_pos_in_htm( AktuellePositionRechteck ) * inverse_htm( rechteck_start );
Htm roboter_ziel = robot_start * (abstand * transformation_kamera_zu_roboter);
Htm roboter_soll = regler( roboter_ziel, letzte_pos );
letzte_pos = roboter_soll;
Sende_An_Roboter( htm_in_roboterformat(roboter_soll) );
} while ( steuerung_laeuft );
Die Name der Funktionen sollen andeuten, was sie machen. (D.h.
Du musst diese Funktionen schreiben, falls du das noch nicht hast, es gibt sie nicht fertig.)
Htm steht für homogene Transformationsmatrix und ist durch den Matrizentyp der Mathebibliothek zu ersetzen, die du verwendest. (D.h.
Du sollst Htm durch die Matrixklasse ersetzen, die du verwendest. Das kann entweder eine selbstgeschriebene sein, etwas vorgegebenes z.B. von der Uni, oder etwas aus dem Umfeld OpenGL/DirectX oder eine der gängigen Bibliotheken aus dem Netz (newmat, roboop, tnt, ublas, Armadillo, Eigen, ...)
transformation_kamera_zu_roboter ist die Verschiebung, Drehung und Skalierung zwischen Kamerakoordinatensystem und Roboterkoordinatensystem.
Die ganzen Funktionen mit einem _in_ im Namen, wandeln eine Positionsdarstellung in eine andere um.
Über die Implementierung von regler( ) gibt es in der gängigen Fachliteratur ganze Kapitel. Aber vielleicht reicht hier anfangs eine feste Schrittweite.
Mehr kann man da nicht helfen, wenn du nicht sagst, wie deine Mathebibliothek und die Positionsformate aussehen.