Archiv verlassen und diese Seite im Standarddesign anzeigen : erster Roboter - mit Servoturm, CCD Kamera, -> Video
hi.
habs geschafft vorzeigbare ergebnisse zu produzieren ;-)
chassis: Robby RP5
µC: RN-Control 1.4
Sensoren: bis jetzt 2 IR Sensoren
1 Servo
1 CCD Funk Kamera
..........................
Video:
http://www.youtube.com/watch?v=dYbNB3EsDT4
edit: sound hängt im video hinterher.. keine ahnung liegt an youtube
Der Roboter fährt geradeaus bis er mit dem unteren IR Sensor ein Hindernis erkennt. Dann stoppt er, dreht den Turm nach rechts, misst mit dem oberen Sensor und weist einer Variablen den Wert zu, dann dasselbe mit links..
dann werden die Werte verglichen und je nach dem wo mehr platz ist, da fährt der Roboter dann hin..
bis jetzt dreht er fast noch ein bissle zu weit, und fährt zu dich an das hindernis heran, könnte also zum problem werden.
ausserdem geht irgendwie bei einer rechtsdrehung nur der eine motor..
sehr komisch das ganze, programm stimmt eigentlich, aber wenn ich den Motor umpolen will (Bascom).. funktioniert nur der, der sich noch vorwärts dreht.. der andere bleibt einfach stehen.. vielleicht hat da jm nen tipp..
ansonsten funzt es einwandfrei.. ;-)
Verbesserungsvorschläge im ausweichalgorithmus nehm ich gerne an...
http://www.nitro-mods.de/Forum/Smileys/default/smilie062.gif
Toller Roboter, gefällt mir gut.
Mit deinem Problem bezüglich der Motoren,
kann ich dir nicht weiterhelfen, hab auch gelegentlich ähnliche Probleme.
Weiter so...
OsramLED
17.09.2006, 21:25
sieht gut aus ;)
Das ist ein Fahrgestell von Conrad oder?
Toll, echt, so stell ich mir meinen Roboter später auch vor! Anscheindend funktioniert der Autonome Modus sehr gut, aber das Getriebe ist doch sehr laut, stört dih das nicht?
ja das getriebe is echt laut.. spionieren damit is nich ;-)
naja die IR sensoren erkennen echt nur das was direkt in "Strahl"-Richtung liegt.. kaum ein bissle daneben.. dann rauscht er dagegen..
werde unten dran statt dem einen 2 Sensoren gewinkelt hinbauen, die sich überkreuzen... dann könnte er sogar ausweichen, wenn nur ein Sensor was "sieht" indem der eine motor leicht abgebremst wird.. dann braucht er net mehr komplett anhalten.. (wenn er zb schräg an einer wand vorbeifährt oder so...)
hier der quelltext.. nicht so sauber programmiert und kommentiert... aber ich denke man kanns "lesen" ;-)
$regfile = "m32def.dat"
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Sound Portd.7 , 200 , 900 'BEEP
'Servo Config
Config Servos = 1 , Servo1 = Portd.3 , Reload = 10 'Turmservo x
Config Portd = Output
Enable Interrupts
'Ende Servo Config
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Const Ref = 5 / 1023 'Für Batteriespannungsberechnung
Dim Taste As Byte
Dim A0 As Integer
Dim A1 As Integer
Dim A2 As Integer
Dim A3 As Integer
Dim A2_l As Integer
Dim A2_r As Integer
Dim Ton As Integer
Dim N As Integer
Dim I As Integer
Dim Center As Integer
Dim Servopos As Integer
Dim Left As Integer
Dim Right As Integer
Left = 50
Right = 150
Center = 100
Servopos = Center
' Für Motorentest
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02 'Prescaler = 8
Wait 4
Sound Portd.7 , 300 , 200
Wait 1 'BEEP
Sound Portd.7 , 1000 , 500
Sound Portd.7 , 100 , 500 'BEEP
Sound Portd.7 , 100 , 600 'BEEP
Sound Portd.7 , 100 , 700 'BEEP
'### Hier startet Scout-Schleife ################################################## ##############################
Do
Servopos = Center
Servo(1) = Servopos
'Linker Motor ein
Portc.6 = 1 'bestimmt Richtung
Portc.7 = 0 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN
'Rechter Motor ein
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN
Pwm1a = 1023
Pwm1b = 1023
'Messung der Abstände
Start Adc
A0 = Getadc(0)
'A1 = Getadc(1)
A2 = Getadc(2)
'If Schleife für Frontal Wand
'********
If A0 > 380 Then 'If Abstand Frontsensor 1 kleiner als 15cm
'## STOP
Pwm1a = 0
Pwm1b = 0
'### BEEEPILEEEP
Sound Portd.7 , 300 , 200
Sound Portd.7 , 300 , 800
Sound Portd.7 , 300 , 200
Sound Portd.7 , 300 , 800
Sound Portd.7 , 300 , 200
Sound Portd.7 , 300 , 400
Sound Portd.7 , 300 , 500
Sound Portd.7 , 300 , 200
Sound Portd.7 , 700 , 800
'Servo kopf drehen, rechts links vermessen.
'##########################################
Servopos = Center
Servo(1) = Servopos
Waitms 250
Servopos = Left 'Servo nach links drehen
Servo(1) = Servopos
Wait 1
A2_r = Getadc(2) 'Sensor links auslesen und A2_l zuweisen
Sound Portd.7 , 300 , 200
Sound Portd.7 , 300 , 800
Waitms 150
For Servopos = Left To Right Step 10
Servo(1) = Servopos
Waitms 10
Next
Wait 1
A2_l = Getadc(2) 'Sensor rechts auslesen und A2_r zuweisen
Sound Portd.7 , 300 , 200
Sound Portd.7 , 300 , 800
Waitms 150
For Servopos = Right To Left Step -10
Servo(1) = Servopos
Waitms 10
Next
Waitms 250
Servopos = Center
Servo(1) = Servopos
Sound Portd.7 , 300 , 400
Sound Portd.7 , 300 , 500
Sound Portd.7 , 300 , 200
Sound Portd.7 , 700 , 800
'################################################# ###
If A2_l > A2_r Then 'wenn rechts mehr platz als links dann zurückfahren und nach rechts drehen
'stop
Pwm1a = 0
Pwm1b = 0
Wait 1
'Linker Motor vorwärts
Portc.6 = 1 'bestimmt Richtung
Portc.7 = 0 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN
'Rechter Motor rückwärts
Portb.0 = 0 'bestimmt Richtung rechter Motor
Portb.1 = 1 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN
'###########
'nach rechts drehen
Waitms 250
Pwm1a = 1023
Pwm1b = 1023
Wait 1
'stop
Pwm1a = 0
Pwm1b = 0
Waitms 150
End If
'################################################# ###
If A2_r > A2_l Then 'wenn links mehr platz als rechts dann zurückfahren und nach links drehen
'stop
Pwm1a = 0
Pwm1b = 0
Waitms 250
'Linker Motor rückwärts
Portc.6 = 0 'bestimmt Richtung
Portc.7 = 1 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN
'Rechter Motor vorwärts
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN
Waitms 250
'###########
'nach links drehen
Pwm1a = 1023
Pwm1b = 1023
Wait 1
'stop
Pwm1a = 0
Pwm1b = 0
Waitms 150
End If
'################################################# ###
End If
Loop
Roboter n00b
19.09.2006, 00:02
ja, gefällt mir super, gute arbeit. Nur dauert es etwas lange, bis er sich nach erkennen des hindernisses wieder in bewegung setzt
ja da hab ich NOCH wait eingebaut, damit ich besser verfolgen kann was er nacheinander abarbeitet.. auch die vielen piepstöne sagen mir also wo im quelltext er gerade is ;-)
gleichzeitig glaub ich, dass der wenn man zu wenig zeit lässt, nich korrekt die befehle ausführt.. speziell motorsteuerung.. vorwärts rückwärts..
Schade, ich kann das video nicht sehen, der öffnet die seite bei mir nicht.
wieso baust du nicht US sensoren anstatt den IR sensoren? die müssten die hindernisse besser erkennen.
grüsse
tornado
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.