======Jack the Mate====== entwickelt von Celine Reichel und Franziska Seibusch ===== Einführung ===== ==== Idee ==== **Jack the Mate** der neue, komfortable Hilfsroboter für jeder Mann. Hierbei handelt es sich um einen motorisierten Roboter, der Personen zu tragende Dinge (eine Tasche, Bücher, einen Laptop etc.) abnehmen kann und diese für den Eigentümer, durch Fahrbewegung, transportieren soll. Während der Fahrt soll es zu keiner Kollision mit Gegenständen oder Personen kommen, so dass es Jack erlaubt ist, durch die Hilfe eines Ultraschallmoduls, die Umgebung "abzuscannen" und, wenn nötig, auszuweichen. ===== Umsetzung ===== ==== Physis ==== {{:projektewise1718:jackthemate:abbildung.1.jpg?direct&300|}} {{:projektewise1718:jackthemate:10.03.2018.jpg?direct&300|}} {{:projektewise1718:jackthemate:abbildung.3.jpg?direct&300|}} **Abbildungen 1-3:** Physis Jack the Mate (zur Detailansicht auf Bildlink klicken) Das Grundgerüst des Roboters besteht aus einer quadratischen **Holzkonstruktion**, welche die Maße von **29,5 cm x 28 cm x 40 cm** besitzt und die **Basis** (Grundplatte) für die weitere Technik darstellt, sowie den Transportraum für Gegenstände bildet. Die Entscheidung hierbei zu Holz zu greifen, fiel uns leicht, da dieses leicht in Form zu bringen ist und nicht zu viel Gewicht mit sich bringt. {{ :projektewise1718:jackthemate:20180203_180540.jpg?nolink&300 |}} **Abbildung 4:** Acrylglasklappe Auf der Oberseite der Konstruktion befindet sich eine transparente **Acrylglasklappe** (Maße: 25cm x 34cm), welche sich mit hilfe von zwei (hinten angebrachten) Metallscharnieren und einem flachen Holzgriff (Durchmesser: 4,5 cm) öffnen lässt und somit die **Einlage- und Herausnahmemöglichkeit** bildet. Damit die Acrylglasplatte nicht in die Kontruktion absinkt, wird sie im vorderen Bereich jeweils auf der rechten und linken Seite von einem Metalldübel (Durchmesser: 0,6 cm) gehalten. Hierbei entschieden wir uns für Acrylglas, da dieses kaum Gewicht mit sich bringt, gut zu bearbeiten ist und man, durch die Transparenz der Klappe, in den Roboter blicken kann und sehen kann, ob der Roboterplatz belegt ist. Innerhalb des Roboters befindet sich eine weitere, kleinere Holzkonstruktion - eine **Abdeckung**, welche aus zwei Holzplatten, die im 90° Winkel miteinander verschraubt sind, besteht ( Maße : 26cm x 15,5cm x 19,5cm). Diese dient in erster Hinsicht zum **Schutz** der darunter liegenden Technik, vor Feuchtigkeit oder Beschädigungen und bildet gleichzeitig eine **Ablagemöglichkeit** innerhalb des Transportraums, z.B. für ein Buch. === Materialien: === * Holz * Schrauben * Muttern * Acrylglasplatte * zwei Scharniere * Holzdübel * zwei Metalldübel ==== Elektronik ==== {{ :projektewise1718:jackthemate:untitled_sketch_steckplatine.jpg?direct&300 |}} **Abbildung 5:** Verbindung der Komponenten,[[http://fritzing.org/home/ | Fritzing]] (zur Detailansicht auf Bildlink klicken) Die vorhandene Elektronik mit der Jack the Mate angetrieben wird, setzt sich aus den beiden Getriebemotoren auf der Unterseite der Konstruktion, den beiden Abstandsmessungssensoren (Infrarotsensor und Ultraschallsensor) auf der Vorderseite, sowie dem Arduino Nano + Evaluationsplatine, einem Motortreiber und einem Lipo-Akkupack zusammen. Detaillierte Erklärungen in den einzelnen Kapiteln: [[https://www.mintgruen.tu-berlin.de/robotikWiki/doku.php?id=projektewise1718:jackthemate:doku#raeder_und_getriebemotoren|Räder und Getriebemotoren]] [[https://www.mintgruen.tu-berlin.de/robotikWiki/doku.php?id=projektewise1718:jackthemate:doku#infrarotsender_led_und_infrarotempfaenger|Infrarotsender LED und - empfänger]] [[https://www.mintgruen.tu-berlin.de/robotikWiki/doku.php?id=projektewise1718:jackthemate:doku#ultraschallmodul|Ultraschallmodul]] ==== Räder und Getriebemotoren ==== Zur Fortbewegung des Roboters sind auf der Unterseite der Holzkonstruktion drei Räder angebracht. Das vordere, mittig angebrachte Rad (Durchmesser: 3,8 cm) dient als freibewegliches, stabilisierendes **Stützrad**, während die beiden hinteren, motorisierbaren Räder (Durchmesser: 11 cm) jeweils durch einen Getriebemotor betrieben werden und für die Aufgaben der **Fortbewegung** und **Lenkung** verantwortlich sind. Die beiden Getriebemotoren haben eine Umsetzung von 1 zu 75 und werden mit hilfe eines **Motortreibers** und einem **Lipo-[[https://www.conrad.de/de/modellbau-akkupack-lipo-74-v-4200-mah-zellen-zahl-2-20-c-conrad-energy-hardcase-t-buchse-1414159.html| Akkupack]]** mit 7,4 Volt betrieben. Der **linke Getriebemotor** ist über den Motortreiber an die digitalen Pins 9 und 10 mit dem Arduino Nano verbunden: const int IN1 = 9; const int IN2 = 10; Während der **rechte Getriebemotor** über den Motortreiber die digitalen Pins 5 und 6 am Arduino Nano einnimmt: const int IN3 = 5; const int IN4 = 6; Hierbei ist zu beachten, dass die digitalen Pins 9 und 5 zur **Geschwindigkeitsbestimmung** (PWM = Pulsweitenmodulation) benötigt werden und mit dem Befehl ''analogWrite ()'' angesteuert werden, während die Pins 10 und 6 zur Bestimmung der **Lenkrichtung** dienen und mit dem Befehl ''digitalWrite()'' im Setup angesteuert werden. analogWrite(IN1, pwm); digitalWrite(IN2, LOW); analogWrite(IN3, pwm); digitalWrite(IN4, LOW); Jack the Mate besitzt insgesamt **vier Lenkrichtungen**, welche er im späteren Vorgang abrufen kann: **Vorwärts, rückwärts, vorwärts rechts** und **vorwärts links.** {{:projektewise1718:jackthemate:snapchat-369706660_001_001.mp4|}} **Videoaufnahme 1:** Erster Durchlauf, Ansteuerung der Motoren Hierbei haben wir bewusst auf die Links- und Rechtsbewegung während der Rückwärtsfahrt verzichtet, da ein **Ausweichmanöver** durch Zurücksetzen und Richtungswechsel nach vorn bewerkstelligt werden kann. Jede Richtung, in welche sich der Roboter bewegen soll, wird je durch eine einzelne Funktion bestimmt. Diese **Richtungsangaben** und **Richtungsänderungen** gelingen durch das gezielte Ansteuern der einzelnen Bewegungs-Pins der Getriebemotoren. : Vorwärts: int moveforward(int pwm); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(IN2, pwm); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(IN4, pwm); Vorwärts links: int moveforwardleft(int pwm); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(IN2, pwm); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(IN4, 0); Vorwärts rechts: int moveforwardright(int pwm); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(IN2, 0); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(IN4, pwm); Rückwärts: int movebackward(int pwm); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); analogWrite(IN2, pwm); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(IN4, pwm); Die Lenkrichtung, sowie die Geschwindigkeit der Fortbewegung sollen mit hilfe des Ultraschallmoduls und Infrarotmoduls bestimmt. === Materialien: === * zwei Getriebemotoren * zwei motorisierte Räder * freibewegliches Stützrad * Motortreiber * Lipo - Akku 7,4 Volt * Arduino Nano * Arduino Evaluationsplatine * Kabel ==== Infrarotsender LED und Infrarotempfänger ==== Jack the Mate benötigt zum Ausführen seiner Tätigkeit eine/n **Bezugspunkt/-person**, um sich orientieren und Fahrt aufnehmen zu können. Dies gelingt durch eine **Infrarotsender LED - Infrarotempfänger** [[https://www.funduinoshop.com/Infrarot-Empfaenger-Infrarot-Sender-LED|Modul]]. Hierbei ist die "Bezugsperson" im Besitz der Infrarotsender LED, welche an einem zweiten Arduino Nano, durch die Pins 12 (digital) und Ground (GND) betrieben wird. Jedoch muss hier darauf geachtet werden, dass in der Schaltung ein **Wiederstand** eingebaut wird, da die Infrarot-LED sonst in der Gefahr läuft durchzubrennen. {{ :projektewise1718:jackthemate:led.jpg?direct&200 |}} **Abbildung 6:** Infrarotsender LED - Anschluss, [[http://fritzing.org/home/ | Fritzing]] (zur Detailansicht auf Bildlink klicken) Sobald der digitale Pin 12 im Setup in Betrieb genommen wurde, ist es nun möglich, ein infrarotes Licht mit einer Frequenz von **38.000 Hertz (Hz)**, durch den Loop, mit der Infrarotsender-LED zu erzeugen. pinMode (12, HIGH); tone (12, 38000); Damit dieses infrarote Licht nun empfangen werden kann und ein Nutzen aus diesem gezogen werden kann, ist auf der Vorderseite des Roboters der passende Infrarotempfänger angebracht. {{ :projektewise1718:jackthemate:ir-empfaenger.jpg?direct&200 |}} **Abbildung 7:** Infrarotempfänger - Anschluss, [[http://fritzing.org/home/ | Fritzing]] (zur Detailansicht auf Bildlink klicken) Dieser Empfänger wird durch die Arduino Pins 3 (digital), Ground (GND) und 5 Volt (5V) angetrieben und läuft in einer **Infrarot-[[https://github.com/cyborg5/IRLib2|Bibliothek]]**. Zudem wird eine Variable benötigt, die zum späteren Zeitpunkt die Möglichkeit gibt, den Empfänger auslesen bzw. decodieren zu können. Der sogenannte **"Decoder"**. Dieser entspringt einer Klasse, welche von der Infrarotbibliothek zur Verfügung gestellt wird und uns durch die Funktion ''decode()'' das Auslesen der Daten ermöglicht.: #include "IRLibAll.h" //Infrarot Bibliothek IRrecvPCI myReceiver(3); IRdecode myDecoder; Um nun die infrarote Strahlung einzufangen, wird der Infrarot-"Receiver" gestartet, sodass daraufhin dann die Decoder-Funktion die Frequenzwerte auslesen kann und der Vorgang von vorne beginnen kann. void setup() { Serial.begin(9600); myReceiver.enableIRIn(); } void loop() { if (myReceiver.getResults()) { myDecoder.decode(); myDecoder.dumpResults(true); myReceiver.enableIRIn(); Serial.println("detected"); } } Damit nun die Verfolgung einer Person aufgenommen werden kann und, für diese, Dinge transportiert werden können, sollen der Sourcecode des Infrarotmoduls und der Sourcecode der Bewegung in Verbindung gebracht werden. === Materialien: === * Infrarotsender LED * Infrarotempfänger * zwei Arduino Nano * zwei Arduino Evaluationsplatinen * Akku (Powerbank) * Wiederstand * Kabel ==== Ultraschallmodul ==== Damit Jack the Mate keine Schäden aus seinem Nutzen zieht und keine Berührungen mit anderen Hindernissen entstehen ("**Kollisionsschutz**"), befindet sich auf der Vorderseite der Holzkonstruktion ein **Ultraschallsensor/-modul** ([[http://www.mikrocontroller-elektronik.de/ultraschallsensor-hc-sr04/|HC-SR04]]), durch welches eine **berührungslose Abstandsmessung** bewerkstelligt werden kann. {{ :projektewise1718:jackthemate:ultraschall_steckplatine.jpg?direct&200 |}} **Abbildung 8:** Ultraschallmodul - Anschluss, [[http://fritzing.org/home/ | Fritzing]] (zur Detailansicht auf Bildlink klicken) Dieser Ultraschallsensor besitzt einen **Trigger-Pin** (Ausgang, bei uns am digitalen Pin = 11), einen **Echo-Pin** (Eingang, bei uns am digitalen Pin = 12),beide Pins werden im Setup angesteuert/aktiviert, sowie einen **Ground-Pin** und einen **VCC-Pin** (5V). Mit hilfe des Trigger-Pins erzeugen wir im Loop zunächst die Möglichkeit auf ein rauschfreies Signal, in dem für fünf Millisekunden die Spannung genommen wird und erst daraufhin die **Ultraschallwelle** mit einer Dauer von zehn Millisekunden erzeugt wird. Diese Ultraschallwelle wird dann beendet, wobei der Echo-Pin nun, kombiniert mit dem **Befehl ''pulseIn()''**, die Zeit (in Mikrosekunden) bis zum Zeitpunkt des Eintreffen, vom zurückgegebenen Schall, zählt. digitalWrite(trigger, LOW); delay(5); digitalWrite(trigger, HIGH); delay(10); digitalWrite(trigger, LOW); dauer = pulseIn(echo, HIGH); Um nun aus den gezählten Mikrosekunden einen genauen **Abstand in Zentimetern** zu bestimmen, wird die empfangene Zeit durch zwei geteilt (zwei, weil nur eine Strecke berechnet werden muss) und mit der Schallgeschwindigkeit (cm/ms) multipliziert. entfernung = (dauer / 2) * 0.03432; Damit **Kollisionen** vermieden werden können, besitzt Jack the Made in seinem Sourcecode die Funktion, bei zu geringem Abstand zu stoppen und sich abzuwenden. Dies soll durch die Verbindung des Ultraschallmoduls mit der Lenkbewegung und der Geschwindigkeitsregelung von Jack the Mate bewerkstelligt werden. === Materialien: === * Ultraschallmodul * Arduino Nano * Arduino Evaluationsplatine * Kabel ===== Code und Rohdaten ===== ==== Sourcecode ==== {{:projektewise1718:jackthemate:jackthemate.zip|}} {{:projektewise1718:jackthemate:jackthemateinfrarotled.zip|}} ==== Pinbelegungstabelle ==== ^ Bauelement ^ Pins ^ | Getriebemotor A | 9 + 10 | | Getriebemotor B | 5 + 6 | | Motortreiber | GND + 5V | | Ultraschallsensor Trig + Echo | 11 + 12 | | Ultraschallsensor | GND + 5V | | Infrarotempfänger | 3 + GND + 5V | | Andere Evaluationsplatine mit zweitem Arduino | | Infrarotsender LED | 12 + GND | **Tabelle 1:** Pinbelegung ==== Materialliste (insgesamt) ==== ^ Material ^ Kosten (in €) ^ Quelle ^ | Holz | 8 | Privat (Bauhaus) | | Schrauben | 5 | Privat (Bauhaus) | | Muttern + Unterlegscheiben | 5 | Privat (Bauhaus) | | Metallscharniere | 2,50 | Privat (Bauhaus) | | Dübel | 2,50 | Privat (Bauhaus) | | Holzgriff | 1 | Privat (Bauhaus) | | Acrylplatte | 2,50 | Privat (Bauhaus) | | Kabel | 5 | Robotiklabor | | Getriebemotoren | 80 | Robotiklabor | | Motortreiber | 70 (Conrad) | Robotiklabor | | motorisierbare Geländeräder | 20 | Robotiklabor | | Stützrad | 0,80 | Privat (Bauhaus) | | Lipo - Guard 7,4 Volt | 40 | Privat (Conrad Electronic) | | 2 Arduino Nano | 60 (Conrad) | Robotiklabor | | 2 Arduino Evaluationsplatine | 20 (RS Online) | Robotiklabor | | Ultraschallmodul | 4 | Privat (Eckstein) | | Infrarotsender / -empfänger | 1 (Funduino) | Robotiklabor | | | | | | Insgesamt: | ~ 327,50€ | | **Tabelle 2 :** Materialliste und Kosten ===== Ergebnis ===== Nach Beendigung des Projekts **Jack the Mate** können wir sagen, dass wir als Team fast alles geschafft haben, was wir uns zu Beginn des Projekts vorgenommen haben. Jack the Mate erfüllt an sich die **einzelnen Aufgaben** und kann Gegenstände für seinen Besitzer transportieren, während er einen vorgegebenen Weg fährt. Durch die Hilfe des Ultraschallsensor bleiben Kollisionen mit anderen Gegenständen/Personen aus. Die **Konstruktion** machte uns keine Probleme, war schnell, leicht und stabil gebaut, und hält, wenn nötig, auch kleinere Kollisionen aus. Die **Elektronik** bzw. Technik, im Innenraum, konnte übersichtlich und simpel zusammengesetzt/angeschlossen werden und wird durch die Innenkonstruktion geschützt und gleichzeitig gehalten. Am meisten **Probleme** bereitet/e uns der Sourcecode, welcher innerhalb der einzelnen Komponenten (Funktion und Auslesen des Ultraschallsensor + Infrarotsensor und Bewegung der Motoren in verschiedene Richtungen) perfekt funktionierte, jedoch nach dem Zusammensetzen Probleme bei den **Schnittstellen** aufwies und immer noch aufweist. Eventuelle **Ausarbeitungsmöglichkeiten** könnten zum Beispiel ein **Display** auf der Vorderseite der Konstruktion sein, durch welches der Besitzer in Empfang genommen wird. In Verbindung mit einer **Infrarotschranke** im Inneren des Roboters, könnten auch Informationen über den Transportraum ausgegeben werden (besetzt/nicht besetzt). Des Weiteren könnte man mithilfe eines **Bewegungssensors** und einem Servo-Motor, auf der Oberseite der Konstruktion, die Acrylglasklappe automatisch öffnen und schließen lassen. Ebenfalls sehr hilfreich wäre ein **An- und Ausschalter**, damit Jack the Mate bei bestehender **Stromversorgung** nicht direkt los fährt, sowie ein beweglicher Ultraschallsensor auf der Vorderseite bzw. Sensoren an den Seiten, damit direkt andere "freie" Richtungen gefunden werden können. {{ :projektewise1718:jackthemate:20180203_181053.jpg?nolink|}} **Abbildung 9:** "Jack the Mate"