-
        

Ergebnis 1 bis 8 von 8

Thema: erster Roboter - mit Servoturm, CCD Kamera, -> Video

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    01.05.2006
    Beiträge
    56

    erster Roboter - mit Servoturm, CCD Kamera, -> Video

    Anzeige

    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...

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.08.2006
    Ort
    hinterm Mond
    Beiträge
    290


    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...

  3. #3
    sieht gut aus

    Das ist ein Fahrgestell von Conrad oder?

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.06.2005
    Alter
    28
    Beiträge
    364
    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?

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    01.05.2006
    Beiträge
    56
    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"

    Code:
    $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

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.04.2004
    Ort
    Basel
    Alter
    30
    Beiträge
    378
    ja, gefällt mir super, gute arbeit. Nur dauert es etwas lange, bis er sich nach erkennen des hindernisses wieder in bewegung setzt
    Meine neue Roboterhomepage:
    www.roboterwelt.ch.tf <--- Updates folgen

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    01.05.2006
    Beiträge
    56
    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..

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.03.2005
    Ort
    Spanien
    Alter
    33
    Beiträge
    398
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •