Nibo2 Test Seitensensoren

Entwicklungsumgebung:
Windows XT, AVR Studio 4 V4.18, nibolib-20101210

Nachdem meine Versuche mit copro_ticksRel (..) nicht viel gebracht hatten, habe ich es mit copro_setSpeed (vl, vr) versucht.

Aber auch hier ergeben sich grundsätzliche Schwierigkeiten bei der MotorRegelung.

Programmablauf:

main()
...
copro_setSpeedParameters(15, 20, 10); // ki, kp, kd
...

Endlosschleife
- ir_rc5 () manuelle Steuerung über IR-Fernbedienung

Daten der Seitensensoren in X-Y Vektoren umwandeln

modus aus den X-Y Vektoren ermitteln
modus: vor, zurück, links, rechts (insgesamt 25 Modi)

Daten anzeigen (LCD und Funk)

go == 1?
modus auswerten (switch)

delay (msec)

- copro_update ()


Testen der Grenzwerte für die verschiedenen Modi per IR-Bedienung,

vl, vr, mydelay lassen sich per Tasten inc/decrementieren

Steuerung vor, zurück, links, rechts läuft nach folgendem Schema ab (je nach Taste):

sound_tone(20, 3000);
go = 0;
copro_setSpeed (vl, vr);
delay (mydelay);
// copro_setSpeed (0,0);
copro_stop ();

Hierbei tritt jedoch folgendes Phänomen auf:

Nach mehrmaligem Drücken der Tasten vor (zurück, links, rechts) wird irgendwann die Befehlssequenz

delay(mydelay)
copro_stop ()

nicht mehr ausgeführt und der Nibo läuft immer weiter!!

Kennt jemand dieses Problem und hat evtl. eine Erklärung / Lösung?


Meiner Meinung nach ist die Motor Kontrolle nicht optimal gelöst.
Es müßte ein Busy-Flag geben, welches angibt wann die MotorRegelung abgeschlossen ist, um dann das Programm weiter abzuarbeiten.

flag = copro_setSpeed (vl, vr, delay) delay = 0 -> normal corpro_setSpeed

desgleichen

flag = copro_setTargetRel (tl, tr, v)


mfg hjjb49