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;
}
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.
Der Fehler muss in
Code:
int16_t alpha2 = atan((y_ziel - y_start)/(x_ziel - x_start)) * 180/M_PI;
liegen.
Wenn ich in
Code:
int16_t c = (y_ziel - y_start) / sin(alpha2);
alpha2 durch 45 ersetzte fährt er nämlich die richtige Strecke, und nicht "unendlich".
Hoffe ihr könnt mir helfen.
Lesezeichen