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.