Turtle Roboter

  • Hallo René,


    ich habe die Testdatei geladen und dabei festgestellt, dass sich bei Einhaltung einer bestimmten Reihenfolge von Tastendrücken (s.u.) folgendes Laufschema der Motoren ergab:


    1. Einschalten => vor

    2. vor => vor

    3. zurück => zurück

    4. rechts => Kurve rechts zurück

    5. links => zurück

    6. ok => zurück

    7. 1 => drehen links zurück

    8. 2 => drehen links vor

    9. 3 => drehen rechts zurück

    10. 4 => drehen rechts vor

    11. 5 => drehen rechts zurück

    12. 6 => drehen rechts zurück

    13. 7 => drehen rechts zurück (durch mehrfaches drücken Geschw.keit nach unten regelbar)

    14. 8 => drehen rechts zurück

    15. 9 => drehen rechts zurück (durch mehrfaches drücken Geschw.keit nach oben regelbar)

    16. 0 => keine Wirksamkeit

    (Bemerkung: bei gleichem Laufschema lagen unterschiedliche Geschwindigkeiten vor)


    Desweiteren habe ich festgestellt, dass bei Unterbrechung der o.g. Tasten-Reihenfolge z. B. folgende Belegungen anders reagierten:


    4 => zurück

    5 => zurück

    6 => zurück

    7 => zurück (durch mehrfaches drücken Geschw.keit nach oben regelbar)

    9 => zurück (durch mehrfaches drücken Geschw.keit nach unten regelbar)


    Ich hoffe, dass ich damit deine Zeit nicht zu sehr beanspruche.


    Viele Grüsse

    Bernhard

  • Hallo Bernhard,


    dann kommen wir der Sache schon näher. Hier ein Testprogramm, das ausschliesslich das Zusammenspiel zwischen Fernbedienung und Motoren testet.

    Der Roboter reagiert auf folgende Befehle:

    - vor, zurück

    - drehen rechts oder links

    - Kurve rechts oder links

    - Geschwindigkeit langsam, mittel, schnell

    - Geschwindigkeit schneller, langsamer

    - gerade aus

    - stopp


    Bei schneller, langsamer und den Kurven muss mehrmals gedrückt werden. Es genügt nicht, einfach den Knopf gedrückt zu halten.


    Welche Taste welche Funktion auslöst, siehst du in remote.cpp.


    Gruss

    René

  • Hallo René,


    zuerst einmal vielen Dank für deine Bemühungen.

    Der Roboter reagiert immerhin schon autonom:)

    Folgendes kann ich feststellen:

    - Einschalten => langsam vorwärts

    - bei Annäherung an ein Objekt schnell vorwärts

    - drücken der Taste 2 beendet autonome Bewegung => schnell vorwärts (dabei sind allerdings keine weiteren Steuerungen mit der

    Fernbedienung möglich, außer s.u.)

    - durch drücken der Taste vor, kann Autonomie wieder hergestellt werden.


    Viele Grüsse

    Bernhard

  • Hallo René,


    ich habe erstmal nur das MotorTest.ino incl. h und cpp auf den Arduino geladen. Bin mir noch unsicher, wie ich dieses nun in das Hauptrogramm 4_Hindernis7.ino implementieren kann. Und muss ich in diesem ebenfalls noch Einstellungen verändern?

    Könntest du mir dazu bitte noch ein paar Hinweise geben?


    Gruss

    Bernhard

  • Hallo René,


    nachdem ich die Motoranschlüsse änderte, haben sie die gleiche Laufrichtung. In der 4-Pin-Fassung arbeiten sie jetzt wie folgt:

    - 5 s schnell vorwärts

    - 5 s stehen bleiben

    - 1 s schnell vorwärts

    - 5 s schnell rückwärts

    - 5 s langsam rückwärts

    - ausschalten.


    Meine Pin-Belegung sieht dabei folgendermaßen aus:

    ENA ==> nicht gesteckt (Jumper)

    IN1 ==> D2

    IN2 ==> D9~

    IN3 ==> D4

    IN4 ==> D5~

    ENB ==> nicht gesteckt (Jumper)


    Sieht eigentlich schon ganz gut aus ;) oder?


    Grüsse

    Bernhard


  • Hallo Bernhard,

    im Prinzip ist es ähnlich. Wenn ich mich recht erinnere, läuft bei Udo die Geschwindigkeitssteuerung (PWM) über ENA und ENB. Du brauchst also 2 zusätzliche Arduino - Pins.


    Wenn du mit den fest gejumperten Enable - Eingängen arbeiten möchtest, kann du einmal das hier angehängte Testprogramm laufen lassen.

    Die Räder sollten Folgendes machen:

    - 5 s langsam vorwärts

    - 5 s schnell vorwärts

    - 1 s stehen bleiben

    - 5 s schnell rückwärts

    - 5 s langsam rückwärts

    - ausschalten


    Vermutlich werden sie anders reagieren. Aus dem Verhalten kann man dann möglicherweise ableiten, welche Programmanpassungen notwendig sind.


    Gruss

    René

  • Hallo René,


    Habe eben die Beiträge zwischen dir und Udo gelesen. Ich vermute, es ist bei mir das gleiche oder ähnlich gelagerte Problem mit der Motorsteuerung. Werde mal die von dir modifizierten Programmmodule laden.


    Grüsse

    Bernhard

  • Hallo René,


    vielen Dank für die schnelle Rückantwort. Die Motoren reagieren alle bei der u.g. Beschaltung (ENA/ENB sind gejumpert). Nur reagieren sie für m.B. unverständlich auf den vom Programm vorgesehenen Tastendruck (z.B. Geschwindigkeit sollte mit T1,T2,T3 geregelt werden).


    Mit besten Grüssen

    Bernhard

  • Hallo an das Forum,

    ich habe mir vor einiger Zeit einen 4WD Smart Roboter Kit zusammengebaut. Als Motor-Controller verwende ich einen HW-95 (L298N/H-Brücke). Zur Ansteuerung benutze ich einen IR-Receiver. Als Programm wurde 4_Hindernis7.ino auf den Arduino UNO geladen. Den Speicher-Code habe ich, entsprechend meiner Fernbedienung in remote.cpp ausgetauscht. Nun vermute ich, dass die Pin-Belegung des HW-95

    ENA ==> nicht gesteckt

    IN1 ==> D2

    IN2 ==> D9~

    IN3 ==> D5~

    IN4 ==> D4

    ENB ==> nicht gesteckt

    am Arduino falsch ist. Und da komme ich eben nicht weiter. Vielleicht kann mir hier jemand helfen?


    Gruss

    Bernhard

  • Ach ja, die war ja bei den Downloads von Keyestudio dabei. Vielen Dank für den Hinweis. Die Library arbeitet mit PulseIn, macht also nicht besonders viel. Sie bietet zusätzlich noch die Funktion DistanceAvg, die einen Durchschnittswert über mehrere Messungen anbietet. Ich bin mir aber nicht sicher, ob sich dadurch eine Verbesserung des Roboterverhaltens erreichen lässt.


    Gruss

    René

  • Hallo Brocki,


    da bist du ja schon viel weiter, als ich es mit den Videos bin. Es wird noch eine Weile dauern, bis mein Roboter auf diesem Stand ist. Der tote Winkel bei der Hinderniserfassung ist ein Problem, deshalb sind die Seitensensoren eine gute Idee. Da ich in den Videos vorerst bei den vorhandenen Sensoren bleiben möchte, werde ich versuchen durch kontinuierliches nach links und rechts Schauen den Bereich zu vergrössern. Ich bin gespannt, ob man so auch auf vernünftige Resultate kommt.


    Im Arduinokurs habe ich für den Ultraschallsensor die NewPing - Library verwendet. Diese kann ich beim Roboter nicht verwenden, da sie einen Konflikt mit IRremote verursacht. Woher stammt deine SR04 Library?


    Die IR-Fernbedienung ist leider auch bei mir recht unzuverlässig. Da es aber sowieso das Ziel ist, den Roboter selbstständig fahren zu lassen, ist das nicht allzu schlimm.


    Auf jeden Fall gratuliere ich dir zu deinem gelungenen Sketch. Du hast da recht viel Funktionalität hineingepackt. Ich nehme aber an, dass du vorher schon über recht viel Programmiererfahrung verfügtest.


    Gruss

    René

  • Hallo,

    konnte es nicht erwarten und habe mich in das Roboter Thema gestürzt.


    Ich habe Programmteile von Rene', Teile von Keyestudio zusammengefügt, und an das Adafruit Motorshield angepasst. Adressänderung der Matrix auf (0x71). Ebenso wurden die Codes von der IR-Fernbedienung (ELEGOO) umgeschrieben.

    Der Robby läuft, weicht Hindernissen soweit er sie erkennt aus. Da er Hindernisse die in einem spitzen Winkel angefahren werden nicht registriert (kein US-Echo), habe ich zwei Reflexlichtschranken zur Erkennung von Seitlichen Hindernissen installiert und in das Programm eingebunden.

    Die IR-Fernbedienung ist nur begrenzt funktionstüchtig. Man muss dem Fahrzeug hinterher laufen, da die Signale nicht richtig erkannt werden. Die Geschwindigkeitseintellung musste ich nach unten korrigieren, da mir das Gerät sonst zu schnell durch die Bude flitzt.


    Gruß Brocki

    Dateien

    • P1010059.JPG

      (98,29 kB, 14 Mal heruntergeladen, zuletzt: )
    • My_ROBBY.ino

      (10,6 kB, 10 Mal heruntergeladen, zuletzt: )
    • P1010060.JPG

      (94,64 kB, 17 Mal heruntergeladen, zuletzt: )
  • Hallo Brocki,


    sie sind mehr oder weniger kompatibel. Doch gerade im Bereich I2C gibt es Unterschiede. Hier ein Auszug aus der Dokumentation des Mega:


    • TWI: 20 (SDA) and 21 (SCL). Support TWI communication using the Wire library. Note that these pins are not in the same location as the TWI pins on the old Duemilanove or Diecimila Arduino boards.


    Auf dem Mega sind es also die digitalen Pins 20 und 21.


    Gruss

    René