So geht mein Script. Bisjetzt hat kein Lösungsweg funktioniert. Von main soll ein Punkt übergeben werden, zu dem dann gefahren wird. Wenn ich x_start u. y_start in punkt definiere funktioniert alles. aber sobald ich es außerhalb mache, geht es wieder nicht. Der Roboter fährt dann einfach "unendlich" geradeaus.Code:#include "RP6RobotBaseLib.h" #include <math.h> int16_t alpha = 0; void punkt (int16_t x_start, int16_t y_start) { int16_t x_ziel = 500; int16_t y_ziel = 500; int16_t alpha2 = atan((y_ziel - y_start)/(x_ziel - x_start)) * 180/M_PI; if (alpha < alpha2) { rotate(50, RIGHT, alpha2 - alpha, true); } else if (alpha > alpha2) { rotate(50, LEFT, alpha - alpha2, true); } alpha = alpha2; int16_t c = (y_ziel - y_start) / sin(alpha2); changeDirection(FWD); int16_t s_left = getLeftDistance(); moveAtSpeed(80,80); while (getLeftDistance() - s_left < DIST_MM(c)) { task_RP6System(); } moveAtSpeed(0,0); } int main (void) { initRobotBase(); powerON(); punkt(0,0); while (true) { task_RP6System(); } return 0; }
Der Fehler muss in
liegen.Code:int16_t alpha2 = atan((y_ziel - y_start)/(x_ziel - x_start)) * 180/M_PI;
Wenn ich in
alpha2 durch 45 ersetzte fährt er nämlich die richtige Strecke, und nicht "unendlich".Code:int16_t c = (y_ziel - y_start) / sin(alpha2);
Hoffe ihr könnt mir helfen.







Zitieren

Lesezeichen