ASF Gruppe A4 - SoSe18: Unterschied zwischen den Versionen
(42 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
'''Autoren und Gruppenmitglieder:''' [[Benutzer:Rina_Mucaj|Rina Muçaj]], [[Benutzer:Jan_Pinter|Jan Pinter]] und [[Benutzer:Levin_Baumeister|Levin Baumeister]] | '''Autoren und Gruppenmitglieder:''' [[Benutzer:Rina_Mucaj|Rina Muçaj]], [[Benutzer:Jan_Pinter|Jan Pinter]] und [[Benutzer:Levin_Baumeister|Levin Baumeister]] | ||
[[Datei:SS18 A4 FotoName.png|600px|right|thumb|Name des Roboters]] | |||
== Einleitung == | == Einleitung == | ||
Zeile 16: | Zeile 17: | ||
=== [[Benutzer:Jan_Pinter|Jan Pinter]] === | === [[Benutzer:Jan_Pinter|Jan Pinter]] === | ||
* Konstruktion des Roboters | * Konstruktion des Roboters | ||
* Entwicklung der Fahrstrategie | * Entwicklung der Fahrstrategie mit PAP-Designer | ||
* Umsetzung der Fahrstrategie in Quellcode | * Umsetzung der Fahrstrategie in Quellcode | ||
* Erstellung des Videos | * Erstellung des Videos | ||
=== [[Benutzer:Levin_Baumeister|Levin Baumeister]] === | === [[Benutzer:Levin_Baumeister|Levin Baumeister]] === | ||
* Konstruktion des Roboters | * Konstruktion des Roboters | ||
* Entwicklung der Fahrstrategie | * Entwicklung der Fahrstrategie mit PAP-Designer | ||
* Erstellung des Bauplans | * Erstellung des Bauplans | ||
* Verfassen des HSHL-Wiki-Artikels | * Verfassen des HSHL-Wiki-Artikels | ||
== Verwendete Softwaretools == | == Verwendete Softwaretools == | ||
* [https://de.mathworks.com/products/matlab.html MATLAB<ref> MATLAB - https://de.mathworks.com/products/matlab.html </ref>] in Kombination mit der [http://www.mindstorms.rwth-aachen.de/ RWTH - Mindstorms NXT Toolbox for MATLAB<ref> RWTH - Mindstorms NXT Toolbox for MATLAB - http://www.mindstorms.rwth-aachen.de/ </ref>] | * [https://de.mathworks.com/products/matlab.html MATLAB<ref> MATLAB - https://de.mathworks.com/products/matlab.html </ref>] in Kombination mit der [http://www.mindstorms.rwth-aachen.de/ RWTH - Mindstorms NXT Toolbox for MATLAB<ref> RWTH - Mindstorms NXT Toolbox for MATLAB - http://www.mindstorms.rwth-aachen.de/ </ref>] (für die Programmierung der Fahrstrategie zu Beginn des Praktikums) | ||
* [http://bricxcc.sourceforge.net/ Bricx Command Center<ref> Bricx Command Center - http://bricxcc.sourceforge.net/ </ref>] mit der Programmiersprache [https://de.wikipedia.org/wiki/Not_eXactly_C NXC<ref> NXC - https://de.wikipedia.org/wiki/Not_eXactly_C </ref>] (Not eXactly C, für die Programmierung der | * [http://bricxcc.sourceforge.net/ Bricx Command Center<ref> Bricx Command Center - http://bricxcc.sourceforge.net/ </ref>] mit der Programmiersprache [https://de.wikipedia.org/wiki/Not_eXactly_C NXC<ref> NXC - https://de.wikipedia.org/wiki/Not_eXactly_C </ref>] (Not eXactly C, für die Programmierung der Fahrstrategie) | ||
* [http://ldd.lego.com/de-de LEGO Digital Designer 4.3<ref> LEGO Digital Designer 4.3 - http://ldd.lego.com/de-de </ref>] (zur Erstellung des Bauplans des Roboters) | * [http://ldd.lego.com/de-de LEGO Digital Designer 4.3<ref> LEGO Digital Designer 4.3 - http://ldd.lego.com/de-de </ref>] (zur Erstellung des Bauplans des Roboters) | ||
* [http://friedrich-folkmann.de/papdesigner/Hauptseite.html PapDesigner<ref> PapDesigner - http://friedrich-folkmann.de/papdesigner/Hauptseite.html/</ref>] (zur Erstellung des Programmablaufplans nach DIN 66001) | * [http://friedrich-folkmann.de/papdesigner/Hauptseite.html PapDesigner<ref> PapDesigner - http://friedrich-folkmann.de/papdesigner/Hauptseite.html/</ref>] (zur Erstellung des Programmablaufplans nach DIN 66001) | ||
Zeile 41: | Zeile 43: | ||
Das Lego Set 9797 bildet zusammen mit dem Lego Set 9695 die Grundlage des Roboters, inklusive der Motoren, der Steuerungseinheit (NXT Brick) und der Basis-Sensoren (Tastsensor). Damit der Roboter jedoch in der Lage ist autonom zu fahren, wird die NXTCam-v4 (Vision Subsystem - Camera for NXT or EV3) verwendet. | Das Lego Set 9797 bildet zusammen mit dem Lego Set 9695 die Grundlage des Roboters, inklusive der Motoren, der Steuerungseinheit (NXT Brick) und der Basis-Sensoren (Tastsensor). Damit der Roboter jedoch in der Lage ist autonom zu fahren, wird die NXTCam-v4 (Vision Subsystem - Camera for NXT or EV3) verwendet. | ||
Die genaue Zusammensetzung der Hardware ist der Bauanleitung und dem Modell (öffnen mit LEGO Digital Designer 4.3) zu entnehmen: [[Datei: | Die genaue Zusammensetzung der Hardware ist der Bauanleitung und dem Modell (zu öffnen mit LEGO Digital Designer 4.3, enthalten ist ebenfalls eine Bauanleitung) zu entnehmen: [[Datei:SS18_A4_Anleitung.pdf|Bauanleitung]], [[Datei:SS18_A4_Modell.zip|Modell]].<br /> <br /> | ||
[[Datei:SS18_A4_Modell_Animation.gif|right|Animation des Zusammenbaus]] | |||
Bei der Entwicklung der Hardwarezusammensetzung standen folgende Punkte im Vordergrund: | Bei der Entwicklung der Hardwarezusammensetzung standen folgende Punkte im Vordergrund: | ||
* Leicht zu wartende und solide Bauweise | * Leicht zu wartende und solide Bauweise | ||
Zeile 50: | Zeile 53: | ||
* Leichte Anschließbarkeit | * Leichte Anschließbarkeit | ||
<br/> | <br/> | ||
Zeile 59: | Zeile 61: | ||
| Fahrzeuglänge || 390 mm | | Fahrzeuglänge || 390 mm | ||
|- | |- | ||
| Fahrzeugbreite || | | Fahrzeugbreite || 175 mm | ||
|- | |||
| Spurweite vorne || 130 mm | |||
|- | |- | ||
| Spurweite | | Spurweite hinten || 160 mm | ||
|- | |- | ||
| Achsabstand || 200 mm | | Achsabstand || 200 mm | ||
Zeile 69: | Zeile 73: | ||
<gallery widths="250" heights="150" perrow="3" class="float-right"> | <gallery widths="250" heights="150" perrow="3" class="float-right"> | ||
Datei: | Datei:SS18 A4 Foto1.jpg|Seitenansicht des Roboters | ||
Datei: | Datei:SS18 A4 Foto2.jpg|Detailansicht mit Kamera | ||
Datei: | Datei:SS18 A4 Foto3.jpg|Vorderansicht | ||
Datei: | Datei:SS18 A4 Foto4.jpg|Draufsicht im Detail | ||
Datei: | Datei:SS18 A4 Foto5.jpg|Seitenansicht | ||
</gallery> | </gallery> | ||
== Fahrstrategie == | == Fahrstrategie == | ||
Bei der Entwicklung der | Bei der Entwicklung der Fahrstrategie standen folgende Punkte in Vordergrund: | ||
* | * Geregelte Querlenkung | ||
* | * Fahrgeschwindigkeit an Lenkung angepasst | ||
* | * Einhalten der StVO | ||
=== PAP Diagramme === | === PAP Diagramme === | ||
Motor A | Motor A: Lenkmotor <br /> | ||
Motor | Motor B: Antriebsmotor | ||
<gallery widths="450" heights="350" perrow="3" class="float-right"> | <gallery widths="450" heights="350" perrow="3" class="float-right"> | ||
Datei: | Datei:SS18 A4 main.png|Hauptprogramm | ||
Datei: | Datei:SS18 A4 Laengsregelung.png|Unterprogramm Längsregelung | ||
Datei: | Datei:SS18 A4 Querregelung.png|Unterprogramm Querregelung | ||
Datei: | Datei:SS18 A4 Camera.png|Unterprogramm Camera | ||
</gallery> | </gallery> | ||
=== Umsetzung in NXC und MATLAB=== | === Umsetzung in NXC und MATLAB=== | ||
Die Implementierung der ersten Praktikumsaufgaben wurde in MATLAB umgesetzt, später wurde, wie auch schon im Informatikpraktikum I - WS17/18, NXC verwendet. | Die Implementierung der ersten Praktikumsaufgaben wurde in MATLAB umgesetzt, später wurde, wie auch schon im Informatikpraktikum I - WS17/18, NXC verwendet, da mit dieser Programmiersprache eine einfache Einbindung der Kamera möglich ist und keine konstante Verbindung zu einem PC mit MATLAB benötigt wird. | ||
Die grundsätzliche MATLAB-Befehle wurden den MATLAB-Tutorials [https://matlabacademy.mathworks.com/?s_cid=learn_MLacad_ban MATLAB Courses<ref> MATLAB Courses - https://matlabacademy.mathworks.com/?s_cid=learn_MLacad_ban </ref>] entnommen. | Die grundsätzliche MATLAB-Befehle wurden den MATLAB-Tutorials [https://matlabacademy.mathworks.com/?s_cid=learn_MLacad_ban MATLAB Courses<ref> MATLAB Courses - https://matlabacademy.mathworks.com/?s_cid=learn_MLacad_ban </ref>] entnommen. | ||
Zeile 148: | Zeile 141: | ||
if Strecke(i) > 2000 | if Strecke(i) > 2000 | ||
motor1.Stop('off'); | |||
break; | break; | ||
end; | end; | ||
Zeile 180: | Zeile 173: | ||
task main () | task main () | ||
{ | { | ||
int cam; | int cam; | ||
Wait(100); | |||
// Camera initialisieren | // Camera initialisieren | ||
cam = NXTCam_Init(camPort, CAMADDR); | cam = NXTCam_Init(camPort, CAMADDR); | ||
Zeile 207: | Zeile 199: | ||
<gallery widths="350" heights="200"> | <gallery widths="350" heights="200"> | ||
SS18 A4 VFoto.jpg | verweis=https://youtu.be/6-3ndXZcRbw | |||
</gallery> | </gallery> | ||
Video zum Roboter | Video zum Roboter der Gruppe A4 | ||
<br /> | <br /> | ||
Zeile 229: | Zeile 221: | ||
* Erfahrung mit Bild- und Videobearbeitungsprogrammen | * Erfahrung mit Bild- und Videobearbeitungsprogrammen | ||
== | == Erfolg == | ||
Der Roboter | Der Roboter hat erfolgreich am Praktikum teilgenommen, er hat die zweitgrößte Distanz zurückgelegt. | ||
== Literaturverzeichnis == | == Literaturverzeichnis == |
Aktuelle Version vom 27. Juli 2018, 19:24 Uhr
Autoren und Gruppenmitglieder: Rina Muçaj, Jan Pinter und Levin Baumeister
Einleitung
Die Aufgabe bestand darin ein Lego Mindstorms NXT Fahrzeug zu konstruieren und zu programmieren, sodass dieses nach dem gegebenen Regelwerk in der Lage ist autonom einer Fahrspur auf dem Boden zu folgen. Dies geschieht im Rahmen des Informatikpraktikum II, SS 18 mit Professor Ulrich Schneider. Weitere Informationen unter Autonomes Fahren SoSe18.
Gruppenmitglieder und ihre Aufgaben
Rina Muçaj
- Konstruktion des Roboters
- Bearbeitung der inhaltlichen Fragen der jeweiligen Praktikumstermine
- Erstellung des Videos
- Verfassen des HSHL-Wiki-Artikels
Jan Pinter
- Konstruktion des Roboters
- Entwicklung der Fahrstrategie mit PAP-Designer
- Umsetzung der Fahrstrategie in Quellcode
- Erstellung des Videos
Levin Baumeister
- Konstruktion des Roboters
- Entwicklung der Fahrstrategie mit PAP-Designer
- Erstellung des Bauplans
- Verfassen des HSHL-Wiki-Artikels
Verwendete Softwaretools
- MATLAB[1] in Kombination mit der RWTH - Mindstorms NXT Toolbox for MATLAB[2] (für die Programmierung der Fahrstrategie zu Beginn des Praktikums)
- Bricx Command Center[3] mit der Programmiersprache NXC[4] (Not eXactly C, für die Programmierung der Fahrstrategie)
- LEGO Digital Designer 4.3[5] (zur Erstellung des Bauplans des Roboters)
- PapDesigner[6] (zur Erstellung des Programmablaufplans nach DIN 66001)
- muvee Reveal Encore 2018[7] (zur Erstellung des YouTube-Videos)
- Captura Version 6.0.1[8] (zur Erstellung des YouTube-Videos)
- Hilfeseite des Wikimedia-Projekts[9] (Hilfe bei der Erstellung des Wiki-Artikels)
Verwendete Hardware
- LEGO MINDSTORMS NXT Education (Set 9797)[10]
- LEGO Education Resource Set (Set 9695)[11]
- NXTCam-v4, Vision Subsystem - Camera for NXT or EV3[12]
Das Lego Set 9797 bildet zusammen mit dem Lego Set 9695 die Grundlage des Roboters, inklusive der Motoren, der Steuerungseinheit (NXT Brick) und der Basis-Sensoren (Tastsensor). Damit der Roboter jedoch in der Lage ist autonom zu fahren, wird die NXTCam-v4 (Vision Subsystem - Camera for NXT or EV3) verwendet.
Die genaue Zusammensetzung der Hardware ist der Bauanleitung und dem Modell (zu öffnen mit LEGO Digital Designer 4.3, enthalten ist ebenfalls eine Bauanleitung) zu entnehmen: Datei:SS18 A4 Anleitung.pdf, Datei:SS18 A4 Modell.zip.
Bei der Entwicklung der Hardwarezusammensetzung standen folgende Punkte im Vordergrund:
- Leicht zu wartende und solide Bauweise
- Direkt angetriebene Lenkachse
- Kleinere Räder an der Front für bessere Beweglichkeit
- Verstellbare Kamerahalterung
- Leichte Anschließbarkeit
Parameter | Wert |
---|---|
Fahrzeuglänge | 390 mm |
Fahrzeugbreite | 175 mm |
Spurweite vorne | 130 mm |
Spurweite hinten | 160 mm |
Achsabstand | 200 mm |
Max. Radeinschlagswinkel links/ rechts | 40° |
-
Seitenansicht des Roboters
-
Detailansicht mit Kamera
-
Vorderansicht
-
Draufsicht im Detail
-
Seitenansicht
Fahrstrategie
Bei der Entwicklung der Fahrstrategie standen folgende Punkte in Vordergrund:
- Geregelte Querlenkung
- Fahrgeschwindigkeit an Lenkung angepasst
- Einhalten der StVO
PAP Diagramme
Motor A: Lenkmotor
Motor B: Antriebsmotor
-
Hauptprogramm
-
Unterprogramm Längsregelung
-
Unterprogramm Querregelung
-
Unterprogramm Camera
Umsetzung in NXC und MATLAB
Die Implementierung der ersten Praktikumsaufgaben wurde in MATLAB umgesetzt, später wurde, wie auch schon im Informatikpraktikum I - WS17/18, NXC verwendet, da mit dieser Programmiersprache eine einfache Einbindung der Kamera möglich ist und keine konstante Verbindung zu einem PC mit MATLAB benötigt wird.
Die grundsätzliche MATLAB-Befehle wurden den MATLAB-Tutorials MATLAB Courses[13] entnommen.
NXT spezifische MATLAB-Befehle siehe LEGO MINDSTORMS NXT Support from MATLAB[14], RWTH - Mindstorms NXT Toolbox for MATLAB - Toolbox Documentation[15] und interne Hilfefunktion der Toolbox.
NXC-Befehle siehe Einführung in die Programmierung mit NXC[16], Buch „Roboter programmieren mit NXC für LEGO Mindstorms NXT“[17],
Programmierung LEGO NXT Roboter mit NXC [18] und NXC Programmer's Guide [19]. (In diesen Dokumenten befindet sich auch eine Übersicht der Sensoren und Aktoren).
MATLAB-Quellcode aus Praktikumstermin 1, Aufgabe 1.5:
motor1 = NXTMotor(motor); motor1.SpeedRegulation = false; motor1.Power = geschwindigkeit; motor1.TachoLimit = laenge; motor1.ActionAtTachoLimit = 'Brake'; motor1.SendToNXT(); disp('Berechnung beendet'); fprintf('\n'); tacho=0; strecke=0; tic; i=0; % monitor during movement data = motor1.ReadFromNXT(); while(1) i=i+1; data = motor1.ReadFromNXT(); % refresh Zeit(i)=toc; tacho=-data.TachoCount; Strecke(i)=tacho*1 if i>1 dt = Zeit(i)-Zeit(i-1); ds = Strecke(i)-Strecke(i-1); Geschwindigkeit(i)=ds/dt; else Geschwindigkeit(i)=0; end if Strecke(i) > 2000 motor1.Stop('off'); break; end; end %% Plot erstellen %Fenster wird erstellt figure(1); subplot 211 plot(Zeit,Strecke,'r.-'); title('s-t-Diagramm'); xlabel('Zeit in Sekunden'); ylabel('Strecke in cm'); subplot 212 plot(Zeit,Geschwindigkeit,'b.-'); % Grafiküberschrift title('123'); % x-Achse Beschriftung xlabel('456'); % y-Achse Beschriftung ylabel('789');
NXC-Quellcode aus Praktikumstermin 5 , Aufgabe 5.3 :
const byte camPort = IN_1; #define CAMADDR 0x02 #include "nxtcamlib-default.nxc" task main () { int cam; Wait(100); // Camera initialisieren cam = NXTCam_Init(camPort, CAMADDR); Wait(100); //Line Tracking Modus NXTCam_SendCommand(camPort, CAMADDR,'L'); Wait(100); //Tracking einschlaten NXTCam_SendCommand(camPort, CAMADDR,'E'); Wait(100); //LCD-Anzeige leeren ClearScreen(); //Text ausgeben TextOut(0, LCD_LINE1, "Verbindung aktiv" ); TextOut(40, LCD_LINE2, "..." ); Wait(5000); } }
YouTube-Video
Video zum Roboter der Gruppe A4
Video-Beschreibung:
Herausgeber: Rina Muçaj, Levin Baumeister und Jan Pinter
Hochschule: Hochschule Hamm-Lippstadt
Studiengang: Mechatronik 2. Semester
Projektkurs: Informatikpraktikum II (Gruppe A4)
Betreuer: Prof. Dr. Ing.-Schneider
Musik: Epic - Royalty Free Music[20]
Praktikumsziel: Konstruktion und Programmierung eines LEGO-Mindstorms zur autonomen Spurführung in den Programmiersprachen NXC und MATLAB
Zusammenfassung
Lerneffekt
- Programmierung eines mechatronischen Systems
- Vertiefung der Programmierkenntnisse mit der Sprache C und MATLAB
- Zusammenhänge zwischen den Bauteilen (Sensoren, Aktoren) verstehen
- Erfahrungen mit dem Einsatz von verschiedenen digitalen Filtern
- Erfahrung mit Bild- und Videobearbeitungsprogrammen
Erfolg
Der Roboter hat erfolgreich am Praktikum teilgenommen, er hat die zweitgrößte Distanz zurückgelegt.
Literaturverzeichnis
- ↑ MATLAB - https://de.mathworks.com/products/matlab.html
- ↑ RWTH - Mindstorms NXT Toolbox for MATLAB - http://www.mindstorms.rwth-aachen.de/
- ↑ Bricx Command Center - http://bricxcc.sourceforge.net/
- ↑ NXC - https://de.wikipedia.org/wiki/Not_eXactly_C
- ↑ LEGO Digital Designer 4.3 - http://ldd.lego.com/de-de
- ↑ PapDesigner - http://friedrich-folkmann.de/papdesigner/Hauptseite.html/
- ↑ muvee Reveal Encore 2018 - https://www.muvee.com/
- ↑ Captura Version 6.0.1 - http://mathewsachin.github.io//
- ↑ Hilfeseite des Wikimedia-Projekts - http://meta.wikimedia.org/wiki/Help:Editing/de
- ↑ http://robotsquare.com/2012/02/18/understanding-nxt-versions/
- ↑ http://www.nxtprograms.com/help/parts/9797.html
- ↑ http://www.mindsensors.com/ev3-and-nxt/14-vision-subsystem-camera-for-nxt-or-ev3-nxtcam-v4
- ↑ MATLAB Courses - https://matlabacademy.mathworks.com/?s_cid=learn_MLacad_ban
- ↑ LEGO MINDSTORMS NXT Support from MATLAB - https://de.mathworks.com/hardware-support/lego-mindstorms-matlab.html
- ↑ RWTH - Mindstorms NXT Toolbox for MATLAB - Toolbox Documentation - http://www.mindstorms.rwth-aachen.de/trac/wiki/Documentation
- ↑ Einführung in die Programmierung mit NXC - http://www.brgkepler.at/~robotik/home/documents/BRG_Kepler_Tutorial_NXC.pdf
- ↑ Buch "Roboter programmieren mit NXC für LEGO Mindstorms NXT" - https://www.daniel-braun.com/buch/roboter-programmieren-mit-nxc/
- ↑ Programmierung LEGO NXT Roboter mit NXC - https://gym-leibnitz.lima-city.de/robotik/wp-content/uploads/2016/01/NXC_Tutorial_DE.pdf
- ↑ NXC Programmer's Guide - http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html
- ↑ Epic - Royalty Free Music - https://www.bensound.com/royalty-free-music/track/epic
Alle verwendeten Bildmaterialien auf dieser Seite wurden eigenständig erstellt.
→ zurück zum Hauptartikel: Informatikpraktikum 2 SoSe18