PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gefahrene strecke messen



Roboman93
06.02.2008, 17:31
ich möchte ein prog schreiben und habe mich gefragt, wie man die gefahrene strecke messen kann. ich will sie also net vorher angeben, sondern sie nachher messen. also z b am anfang die messung starten und am ende das ergebnis abrufen!

sechsrad
06.02.2008, 21:39
ob du nun die strecke vorgibst oder die encoder-schritte nur zählst und dann ausgibst is doch wurscht.

nun progge los. schau dir den encoder-code an und schreib ihn um nur für eine ausgabe.

warum sollen andere immer alles vorkauen.

Roboman93
07.02.2008, 17:19
danke(sry, haben net ale soviel ahnung, wie du vorgibst zu haben)

tfv
20.02.2008, 10:09
Hallo Robomann93,

ich finde die Frage durchaus nicht dumm. Ich bin kein Programmierweltmeister und habe mir ebenfalls überlegt, wie ich die beim RP6 mitgelieferten Beispielprogramme zum Bewegungsverhalten (StateMachine) mit möglichst wenig Aufwand so abändern kann, dass eine Positionsinformation ausgegeben wird, auch dann, wenn z.B. ein MoveAtSpeed-Befehl durch einen Kollisions-Interrupt unterbrochen wird.

Ich hatte ursprünglich daran gedacht, einfach einen Timer zu verwenden, der bei Ausführung des MoveAtSpeed-Befehls auf 0 gesetzt und bei Abarbeiten des Interrupts ausgelesen wird. Aus der Zeit und der Geschwindigkeit kann man dann den Weg berechnen.

Ob man dazu auch direkt die Drehgebersignale verwenden kann, weiss ich nicht, weil man die ja dauernd mitlesen (irgendwo hochzählen) müsste. Genauer wäre der Weg sicher.

Vielleicht helfen Dir die Gedanken etwas weiter.

Und: Es gibt keine dummen Fragen.

blenderkid
20.02.2008, 18:21
Es gibt doch getLeftDistance() und getRightDistance(), damit wird die gesamte strecke gemessen die der RP6 seit dem Start zurück gelegt hat, also wenn du die strecke messen möchtest speicherst du getLeftDistance() und getRightDistance() in jeweils einer variable leftstart und rightstart ( nur ei vorschlag ). Die messung wurde damit gestartet. aM Ziel angekommen machst du einfach:

uint16_t xxxx = getRightDistance()-rightstart
...und...
uint16_t yyyy = getLeftDistance()-leftstart

und schon hast du die strecke die die Ketten abgefahren haben
:cheesy:

MfG blenderkid

tfv
20.02.2008, 22:01
Danke!. Ohne weiteren Kommentar. O:)