PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Programm zur Echtzeitsteuerung



bruno83
13.03.2005, 15:30
Hallo alle zusammen,
für meine Technikerabschlußarbeit hatte ich die Idee in C++ ein Programm zu schreiben mit dem man seinen Roboter(z.B Robby CCRP5) per Widowsoberfläche steuern kann.
So, nun habe ich in Mikrocontroller programmierung und vorallem in der Robotertechnik nicht die geringste Ahnung.

Meine Frage lauten somit:
Ist dieses Vorhaben überhaupt realisierbar? Und wenn ja könnt ihr mir ein paar Tips geben wo ich mich da am besten schlau machen kann und vorallem, auf was ich bei diesem Projekt überhaupt achten muß.

engineer
13.03.2005, 19:15
Du könntest eine GUi schreiben, welche eine CODE -Liste aus einer Tabelle von der PLatte holt und diese per COM an den uC sendet, der dies dann abarbeitet. GUI-Programmierung: www.wxwidgets.org

muraad
13.03.2005, 22:24
Das ist auf jeden Fall realisierbar, ich denke sogar es ist garnicht so schwer. Man muss dem Roboter nur per serieller Schnittstelle (COM Port) Befehle senden wie z.B. geradeaus. links, rechts, drehung, rückwärts usw. Der Roboter steuert dan die Motoren entsprechend an und sendet vielleicht Sensordaten zum Computer zurück.
Funkmodule für die serielle Schnittstelle (max. 200m) gibt es einige.
Threads über ferngesteuerte Bots gibts hier auch einige im Forum.
Hoffe es war dir ne gedanken Hilfe.
Gruß Muraad

bruno83
14.03.2005, 11:26
So in der Art habe ich mir das auch vorgestellt. Was mir jedoch nicht richtig klar wird (wie gesagt habe ich im Bereich Mikrocontroller nicht so viel Ahnung um nicht zu sagen klar keine *g*) muss ich die Befehle direkt an die Motoren, Getriebe usw.… senden oder (wahrscheinlich eher) an den Microcontroller. Wenn dies der Fall sein sollte, stellt sich mir die Frage ob das mit C++ überhaupt möglich ist. Soweit ich das hier in dem Forum richtig verstanden habe schreibt man normalerweise mit BASIC eine Art Betriebsprogramm für den Roboter in dem z.B. gesagt wird fahre immer geradeaus bis deine Sensoren ein Hindernis erkennen und wechsele dann die Richtung.

Das würde dann aber bedeuten das ich praktisch mehrere Betriebsprogramme schreiben müsste wie z.B. ändere die Richtung nach links, nach rechts, halte an, fahre weiter usw.…, und diese immer wieder während der Roboter praktisch unterwegs ist auf den Mikroprozessor draufladen müsste.
Oder irre ich mich da?!

muraad
14.03.2005, 13:11
Ja da hast du recht. Du sendest die Befehle (Bytes) an den Roboter(Mikrocontroller) und er steuert dann Motoren an, du musst aber nicht für jeden Befehl ein eigenes Programm schreiben. Ganz einfach würde es auf dem Roboter so aussehen.

unsigned int befehl;
befehl=empfange_befehl(); // Empfängt ein Byte über COM Port
if(befehl==1){ } // Führe Befehl 1 aus
if(befehl==2){ }
if(befehl==3){ }
usw.
else
{ }
Wobei es reiner Verständnisscode ist.
Der Robby CCRP5 wird schon in Basic programmiet, wobei hier im Forum viele auch AVR Mikrocontroller benutzen. Die kann man mit Assembler, C und Basic programmieren. Nur mit C++ wirds bisschen eng mit Ram und Flash auf dem Mikrocontroller, wobei das auch gehen würde.
Gruß Muraad

Arexx-Henk
14.03.2005, 19:13
Hallo bruno83,

So wie muraad geschrieben hat,

eigentlich sollte sich im roboter eine art 'interpreter' program befinden dass einfache (oder kompliziertere) commando's uber die seriellen schnitstelle empfangen und ausfuhren kann.

die serielle schnitstelle kannst du dan mit C++ in einem windowsoberflache sehr gut ansteurn, z.B. ein WindowsTaste fur linksfahren, usw, bis so weit die eigene fantasie reicht

dass problem ist, da must du doch die microcontroller studieren um ein einfaches 'interpreter' program einmahlig da hinein zu programmieren

gruss

Henk

Dirk
14.03.2005, 19:14
Hallo bruno83,

für den Robby gibt es schon ein Programm, mit dem ein anderer Prozessor (CC2) dem CC1 des Robby Befehle über die serielle Schnittstelle erteilt, also ihn "fernsteuert".
Es ist das Programm "gateway.bas". Wenn Du Dir das ansiehst, kannst Du gut erkennen, wie der "Command interpreter" in einer Schleife Befehle entgegennimmt oder Meßwerte auch zurückgibt.
Anstelle der CC2 müßtest Du den Transceiver o.ä. an die serielle Schnittstelle des Robby hängen oder ihn halt mit simplem Kabel mit Deinem PC verbinden.

Gruß Dirk

pc-gott70
24.03.2005, 07:58
Hallo bruno83,

zuerst mal etwas positives: realisierbar ist Dein Vorhaben.

A B E R
Ich würde Dir so etwas für Deine Technikerprojektarbeit jedoch nicht anraten. Wenn Du selber nicht über ein fundiertes Wissen in Programmiertechnik verfügst ist das sehr gefährlich.
Ich selber habe vor Jahren mein Technikerstudium gemacht.
Die Projektarbeit bestand thematisch aus drei Teilen: Dokumentation/Aufbau, Presentation und Diskussion/ Rückfragen. Spätestens bei den Rückfragen der Prüfungskommission fällst Du hinten runter, wenn Du Dich nicht 100 %ig auskennst !!!

D E S H A L B
Nimm lieber etwas worin Du Dich zumindest zu 85% auskennst. Bei der Prüfung hat man im allgemeinen soviel Stress, dass sich die 85% sehr schnell auf 65% reduzieren können.

Gruß
David