Im Gegensatz zu den hier im Forum beschriebenen Tests mit Bodensensoren, habe ich mich mit den Seitensensoren beschäftig.
Als Hindernisse benutze ich leere Zigarettenschachteln (bin leider Raucher!).
Diese kann ich flexibel aufstellen und so einfach die SensorRohdaten ermitteln.
Ich möchte zunächst mit dem Nibo2 in geringem Abstand (ca. 7 cm) vom Hindernis einen Parcour abfahren.
Ich definiere 3 Zustände:
- kritischer Bereich < 7 cm vom Hindernis
- normaler Bereich 9 cm < Hindernis > 7 cm
- undefiniert Hindernis > 9 cm
Die Werte werden als Vektoren für rechts, halbrechts; links, halblinks berechnet.
zur Zeit benutze ich nur das HighByte der Sensordaten.
Algorithmus (Hindernis rechts): -> zurück in den normalen Bereich:
Hindernis < 7 cm: -> Drehen Links ca. 15 Grad, vorwärts ca. 1 cm, Drehen rechts ca. 15 Grad, Sensordaten auswerten.
tld, trd Drehen Ticks links, rechts; tl, tr Ticks vor links, rechts
CodeUmsetzung: copro_setTargetRel(-tld, trd, speed);
copro_setTargetRel(tl, tr, speed);
copro_setTargetRel(tld, -tlr, speed);
Leider funktioniert das nicht!
Hauptprozessor schickt Daten an Coprozessor und wartet nicht ab, ob Aktion beendet ist.
Es fehlt eine Rückmeldung vom Coprozessor: Aktion beendet!
Dies führt dazu, das während der Coproz noch beschäftigt ist, bereits die nächste Aktion vom Hauptproz gestartet wird,
was nicht zum gewünschten Erfolg führt.
Bitte um Rückmeldung oder Lösungsvorschläge
hjbb
Lesezeichen