PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nibo2 Seitensensoren01



HJBB49
15.01.2011, 17:03
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

Hero_123
08.04.2011, 20:48
Hallo HJBB49

ich habe auch die Probleme, daß der NIBO2 nicht immer stoppt (aber auch manchmal nicht losfährt!); verwende aber die NiboLib2.10 und das "neue" copro_stopImmediate()... der Nibo soll eine bestimmte Strecke vorwärts fahren, eine bestimmte Zeit lang warten, die selbe Strecke rückwärts fahren, eine bestimmte Zeit lang warten und den Zyklus wieder von vorne beginnen -und das mehrere Minuten lang.
Ich habe festgestellt, daß der Nibo2 nicht immer stehen bleibt, sondern weiterfährt, es kann ebenso passieren, daß er losfahren soll, aber stehen bleibt...

wie weit bist Du mit Deinen Forschungen gekommen?

mfg

Hero_123