Hey, ich bekomm das irgendwie immer noch nicht gebacken.
Ich hab das mal mit deiner Formel ausprobiert am anfang hab ich das gefühl korriegiert er dannach driftet er ab oder macht wilde drehungen.
Ich hab jetzt einfach mal wärend der Motor an war das eine Rad fest gehalten dann müsste das andere doch in der Theorie stehen bleiben tuht es aber nicht es dreht normal weiter.
Dann hab ich mal aus den Tutorial für c die Odometry rauf geladen.
Deren funktion soll sein ist odometrieLeft>10 led(0, 1) bei der anderen Seite genauso. Dabei konnte ich bei meiner Beobachtung sehen das die rechte Odometry nicht genau ist und mal nach einer umdrehung an geht oder nach 3 oder mehr.
Ich denke mal ich hab eine kalte Lötstelle oder wie man das nennt.
Wenn ich mit der Funktion arbeite: motpid_init () sollte ja eig meine räder ja schon von Haus aus gleich schnell drehen wenn ich left und right die gleichen werte haben das tuhen sie dort auch nicht..
Sorry will dich eig nicht so zu spammen ^^
Hier nochmal mein neuer Quellcode:
#include <nibobee/robomain.h>
int power_l;
int power_r;
void setup() {
odometry_init ();
motpwm_init ();
power_l = 600;
power_r = 600;
}
void loop() {
int pwm;
int ticksl;
int ticksr;
int faktor;
//int ticksd;
odometry_reset ();
motpwm_setLeft(power_l);
motpwm_setRight(power_r);
delay(1000);
ticksl=odometry_getLeft(0);
ticksr=odometry_getRight(0);
//motpwm_stop ();
if( ticksl > ticksr )
{
faktor = ( 10000 / ticksl ) * ( ticksl - ticksr );
power_l = power_l - (int)( ( power_l * faktor ) / 10000 );
motpwm_setLeft(power_l);
}
if( ticksr > ticksl )
{
faktor = ( 10000 / ticksr ) * ( ticksr - ticksl );
power_r = power_r - (int)( ( power_r * faktor ) / 10000 );
motpwm_setRight(power_r);
}
delay(2000);
ticksl=odometry_getLeft(1);
ticksr=odometry_getRight(1);
}