Und was ist der "ROTATION FACTOR"? Bzw. wo steht der?
Also entweder machst du es über etwas Mathe mit den Kreisfunktionen (keine Ahung wie genau das wird) oder eben andersherum wie hier beschrieben.
Dazu sollten dann deine Distanzen über beide Ketten etwa gleich groß sein (eventuell das Mittel nehmen)
und dann stellst du dir die Formel da eben nach angle frei und du kannst zurück rechnen.
Ich denke fast, dass das die genauere Lösung sein dürfte, der Author wird sich ja schon was bei dieser Lösung gedacht haben.
Und was ist der "ROTATION FACTOR"? Bzw. wo steht der?
Och komm schon...
Der wird ja sogar in der Anleitung erwähnt...
Das ist ein define in der RP6Config.h... Im OrdnerRP6common.
Oha
Sorry, in den Commons hab ich noch nciht geguckt
Aber danke dir!
mleft_dist und mright_dist werden in den encoder ISR geupdated. Darum wirden die dauernd actualisiert. Aber die werden auch gebraucht in die function move() und rotate(). Wen die auftrag lauft, darfs du naturlich nicht diesen variabelen aendern, oder die move() stimmt nicht mehr !!
Das unterschied von distance_left und distance_right kan einfach in "Graden" umgesetz werden durch dividieren bei eine feste factor : die ROTATIONS_FACTOR. Da macht du einfach das umgekerhte von eine rotate() function.
Das genau ist das problem mit ein "track" roboter : diese ROTATIONS_FACTOR ist sehr abhangig von geschwindigkeit, boden usw. Auf eine dreh von 90° kann das ruhig 20° mehr oder weniger sein. Bei eine differential drive ist das eher +/-1° !!
Da hat RP6conrad vollkommen recht, ich persönlich würde das ganze mit der M32 realisieren und diese Konstante nicht konstant sondern variabel machen.
Die Variable würde ich dann im EEPROM der M32 speichern und bei Bedarf an den RP6 weiter reichen (-->I2C).
Somit könntest du die Variable während der Fahrt per Fernbedienung veränderbar machen und somit den RP6 während der Fahrt "kalibrieren".
Damit könntest du sehr leicht einen passenden Wert herausfinden. Eventuell noch während der Fahrt den Wert im Display anzeigen oder so.
Klinkgt vernünftig.
Dann wäre es aber sinnvoll, es erst einmal so (mit konstantem Faktor) zu machen, sich in verschiedenen Situationen die Abweichungen anzusehen und dann dementsprechend sich zu überlegen, wie mans Variabel macht, oder???
Gruß
Naja, da du ja deine Logik zum Entgegenehmen von Befehlen via Fernbedienung schon hast würde ich es direkt variabel machen.
Ist aber natürlich jetzt keine Grundsatzentscheidung
Du könntest auch verschiedene "Profile" für verschiedene Untergründe anlegen.
Lesezeichen