Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 remote controled Projekt
mr.stroh
06.10.2010, 22:09
Zum Programm selber:
( Computerprogramm ist in AutoIt geschrieben. )
Es ist nicht nur zu manueller Steuerung entwickelt ,sondern ist durchaus in der Lage relativ intelligent den Roboter zu navigieren. Als Beispiel besitzt es eine Funktion die mehrerer Status zur selben Zeit überprüft und gegebenenfalls eine Korrektur vornimmt.
Ein Fall: Die Geschwindigkeit vom linken Motor soll 20 sein ist aber im Moment der Messung über 30 so sendet das Programm zu dem Roboter den Korrekturwert.
Was sind die Vorteile wenn der Roboter vom Computer gesteuert wird?
schnelles abändern des Programms ist möglich
schnelle Fehlerdiagnose
Einstellungen sind auch nach dem starten des Roboters aktiv
mehr Rechenleistung
Nachteile:
Daten Verlust beim Senden/ Empfangen (wurde in Version 2 fast zu 100% beseitigt.
Verzögerungen ( „Reflexe“ vom Roboter vermeiden Unfälle )
erhöhter Energie Verbrauch.
Komplexe Firmware notwendig
Warum stell das Projekt als Thema ins Netz?
Vielleicht kann ich ja dem ein oder anderem bei Problemen mit einer Funkanbindung helfen. Um selber die ein oder andere Inspiration für mögliche Anwendungen /sgebiete bzw. Ideen zu erhalten.
Hier noch ein Video zum Roboter.
http://www.youtube.com/watch?v=vF14ChE4TnQ
Otzigeck
26.10.2010, 16:39
Hi!
Hab mir das Video jetzt angesehen und muss sagen ich bin beeindruckt. =D>
Ich hab selbst vor den Rp6 über Funk per PC zu steuern. Vom PC aus soll er dann mit einer Wii-Nunchuk gesteuert werden. Bei meinem soll übrigens auch eine Kamera drauf und diese soll ebenfalls per Nunchuk gesteuert werden. Das Programm soll übrigens in C++ geschrieben werden.
Das Projekt mit der Wii hab ich jetzt schon in Angriff genommen und angefangen die Platine mit dem Microcontroller zu routen.
Für die Hardware am Roboter hatte ich mir eben auch eine solche Kamera überlegt mit 2 Servos.
Nun die Fragen:
Auf dem Video ist die Auflistung der Hardware nicht gut sichtbar.
Ich habe einen KOmpass entdeckt und bewegungs und abstandssensoren. Eine genau Auflistung wäre super :-)
Die Funkmodule sind die aus dem Roboterhardwareshop?
Für meinen hatte ich mir evtl eine Anbindung mit dem Bluetooth-modul BTM-222 vorgestellt oder über die Easy-Radio module (tendiere zu den easy Radio modulen)
Hast du irgendwelche Kontrollfunktionen in dein Programm eingebaut um die Übertragung zu kontrollieren?
Würde mich über eine Antwort deinerseits freuen
Grüße
Otzigeck
mr.stroh
26.10.2010, 20:36
Freud mich das es jemand beeindruckt XD
Also Sensoren:
2x IR Entfernungssensor Sharp GP2Y0A02YK ( für die Weite ;front & fack)
1x IR Entfernungssensor Sharp GP2D120 ( Nähe ; front -> ground )
1x Elektronischer Kompaß CMPS03
2x Ultraschall Entfernungsmesser SRF10 ( front & back )
2x PIR-BEWEGUNGSSENS. 5M AMN31111J ( left & right @front)
1x RT868F5 High-End FM-Transceiver-Modul ( @UART )
1x Licht-/Spannungs-Wandler TSL260 = 260R (@top )
...RP6s standard Sensoren
Ja sind von robotikhardware.de /conrad.de
Hab das Programm in AutoIt geschriben =P
Bin folgend vorgegangen:
RP6 Sendet immer ,außer er erhält Daten.
Die Daten fangen immer mit char "a" an um Datenmüll zu filtern.
Folgend die Kategorisierung 2xchar + den Wert.
Das Steuerungsprogramm verhindert ,dass zu viele Daten aufeinmal gesendet werden und erkennt in einer anderen Funktion ob der Befehl abgearbeitet/empfangen wurde an zB den neuen Servostellwerten.
Mal grob beschrieben =)
//RP6 datenverarbeitung
void ActorsActiv2(void)
{
if(getBufferLength())
{
externalPort.LED1 = true;
outputExt();
uint8_t buffer_pos = 0;
while(true)
{
receiveBuffer[buffer_pos] = readChar();
buffer_pos++;
if(receiveBuffer[(buffer_pos-1)] =='a')
{
mSleep(20);
receiveBuffer[buffer_pos] = readChar();
if(receiveBuffer[buffer_pos] =='s') // servo unten = asu XX
{ // servo oben = aso XX
// servo beide = asb XX(u) XX(o)
mSleep(20);
receiveBuffer[(buffer_pos+1)] = readChar();
if(receiveBuffer[(buffer_pos+1)] =='u')
{
uint8_t Checkertick = paraVAR ();
w02 = Checkertick;
servo(Checkertick , 22, 11);
}
...usw
Programm Sendepuffer
Func _CommSendstring2($DatatoTransmite)
$buffedtime = 200
if TimerDiff($sendwait) > $buffedtime Then
_CommSendstring($DatatoTransmite)
$sendwait = TimerInit()
Else
$toWait = 0
$toWait= $buffedtime - TimerDiff($sendwait)
Sleep($toWait)
$sendwait = TimerInit()
GUICtrlSetData($EditHo8 , " für " & Int($toWait)&"ms")
GUICtrlSetData($EditBE8 , $DatatoTransmite)
_CommSendstring($DatatoTransmite)
EndIf
EndFunc
Hmm Bluetooth... wollt ich auch mal einsetzen ,aber wollte mich erst mal an etwas mit nur einem Prot zum senden und empfangen ranwagen =) Und ueberhaupt kann ich über RT868F5 kein bisschen klagen ,die Anwendung ist quasi so als hätte man ein Kabel \:D/
Otzigeck
15.11.2010, 19:28
Hi!
sry, hatte die letzte woch ein wenig stress mit schule etc.
Danke für die Auflistung... ich habe mir jetz, im anbetracht des ganzen Stoffes den ich für die Abschlussprüfung lernen muss umentschieden.
Ich werde jetz so eine Art Feuerwehrbot bauen (wie der im Wettbewerb), lediglich mit wasser. ABgesehen das das ein wenig einfacher wird, bin ich bei der Feuerwehr :D. Ich werde wahrscheinlich ein paar sensoren verwenden, jedoch verzichte ich auf den Fernsteuerungsteil, da mir der einfach als Anfänger zu schwer ist...
Trotzdem Danke
Grüße
Otzigeck
mr.stroh
17.11.2010, 09:06
Viel erfolg dabei ;-) Wuerde gern das Ergebnis sehen. Pass auf jedenfall auf das Wasser auf =)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.