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° !!
Lesezeichen