ASF Gruppe A4 - SoSe18: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(80 dazwischenliegende Versionen von 3 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 ==
Die Aufgabe bestand darin einen Lego Mindstorms NXT Robosoccer zu konstruieren und zu programmieren,sodass er nach den gegebenen Regelwerk Fußball spielen kann. Dies geschieht im Rahmen des Informatikpraktikum I, WS 17/18 mit Professor Ulrich Schneider. Weitere Informationen unter [[RoboSoccer_WS_17/18|Informatikpraktikum WS 17/18]] (hier ist auch die genaue Aufgabenstellung zu finden) und [[Regelwerk_RoboSoccer_2018|Regelwerk RoboSoccer 2018]].
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 ==
== Gruppenmitglieder und ihre Aufgaben ==
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 ==
* [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 Spielstrategie)
* [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 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 36: Zeile 39:
* LEGO MINDSTORMS NXT Education (Set 9797)<ref> http://robotsquare.com/2012/02/18/understanding-nxt-versions/</ref>
* LEGO MINDSTORMS NXT Education (Set 9797)<ref> http://robotsquare.com/2012/02/18/understanding-nxt-versions/</ref>
* LEGO Education Resource Set (Set 9695)<ref> http://www.nxtprograms.com/help/parts/9797.html</ref>
* LEGO Education Resource Set (Set 9695)<ref> http://www.nxtprograms.com/help/parts/9797.html</ref>
* NXTCam-v4, Vision Subsystem - Camera for NXT or EV3<ref> http://www.mindsensors.com/ev3-and-nxt/14-vision-subsystem-camera-for-nxt-or-ev3-nxtcam-v4</ref>


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.


BEARBEITEN
 
Die genaue Zusammensetzung der Hardware ist der Bauanleitung und dem Modell (öffnen mit LEGO Digital Designer 4.3) zu entnehmen: [[Datei:A5_Bauanleitung.pdf|Bauanleitung]], [[Datei:A5 Modell.zip|Modell]].<br /> <br />
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
* Direkt angetriebene Lenkachse
* Direkt angetriebene Lenkachse
* Kleinere Räder an der Front für bessere Beweglichkeit
* Verstellbare Kamerahalterung   
* Verstellbare Kamerahalterung   
* Leichte Anschließbarkeit
* Leichte Anschließbarkeit


ANIMATION?
<br/>
 
{| class="wikitable"
|-
! 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°
|}
 
 


BOLDERGALLERIE?
<gallery widths="250" heights="150" perrow="3" class="float-right">
<gallery widths="250" heights="150" perrow="3" class="float-right">
Datei:A5 11.jpg|Erste Version des Roboters
Datei:SS18 A4 Foto1.jpg|Seitenansicht des Roboters
Datei:A5 1.jpg|Detailansicht des HiTechnic NXT IRSeekers im Einbau
Datei:SS18 A4 Foto2.jpg|Detailansicht mit Kamera
Datei:A5 2.jpg|Seitenansicht
Datei:SS18 A4 Foto3.jpg|Vorderansicht
Datei:A5 3.jpg|Seitenansicht im Detail
Datei:SS18 A4 Foto4.jpg|Draufsicht im Detail
Datei:A5 4.jpg|Greifarme
Datei:SS18 A4 Foto5.jpg|Seitenansicht
</gallery>
</gallery>
<br />
<br />
<br />
[[Datei:A5 Textbild.JPG|center|800px|thumb|Übersicht der Position der Sensoren und der Aktoren]]


== Fahrstrategie ==
== Fahrstrategie ==
Bei der Entwicklung der Spielstrategie standen folgende Punkte in Vordergrund:
Bei der Entwicklung der Fahrstrategie standen folgende Punkte in Vordergrund:
* Dynamische Fahrt zum Ball
* Geregelte Querlenkung
* Schnellst mögliches Erkennen der unmittelbaren Ballnähe
* Fahrgeschwindigkeit an Lenkung angepasst
* Sicheres Greifen des Balls, mit mehrmaliger Überprüfung und Absicherung
* Einhalten der StVO
* Kürzester Ausrichtungsweg zum gegnerischen Tor
* Sicherer und schneller Schuss in Richtung des gegnerischen Tors
* Erkennung einer Blockade
 
=== PAP Diagramme ===  
=== PAP Diagramme ===  
Motor A, Motor B: Antriebsmotoren <br />
Motor A: Lenkmotor <br />
Motor C: Fang- und Schussmotor
Motor B: Antriebsmotor
<gallery widths="450" heights="350" perrow="3" class="float-right">
<gallery widths="450" heights="350" perrow="3" class="float-right">
Datei:A5 6.jpg|Hauptprogramm
Datei:SS18 A4 main.png|Hauptprogramm
Datei:A5 7.jpg|Unterprogramm Suchen
Datei:SS18 A4 Laengsregelung.png|Unterprogramm Längsregelung
Datei:A5 8.jpg|Unterprogramm Ballfang
Datei:SS18 A4 Querregelung.png|Unterprogramm Querregelung
Datei:A5 9.jpg|Unterprogramm Zuruecksetzen
Datei:SS18 A4 Camera.png|Unterprogramm Camera
Datei:A5 10.jpg|Unterprogramm Torschuss
</gallery>
</gallery>


=== Umsetzung in NXC ===  
=== 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 [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.
 
NXT spezifische MATLAB-Befehle siehe [https://de.mathworks.com/hardware-support/lego-mindstorms-matlab.html LEGO MINDSTORMS NXT Support from MATLAB<ref> LEGO MINDSTORMS NXT Support from MATLAB - https://de.mathworks.com/hardware-support/lego-mindstorms-matlab.html </ref>], [http://www.mindstorms.rwth-aachen.de/trac/wiki/Documentation RWTH - Mindstorms NXT Toolbox for MATLAB - Toolbox Documentation<ref> RWTH - Mindstorms NXT Toolbox for MATLAB - Toolbox Documentation - http://www.mindstorms.rwth-aachen.de/trac/wiki/Documentation </ref>] und interne Hilfefunktion der Toolbox.
NXC-Befehle siehe [http://www.brgkepler.at/~robotik/home/documents/BRG_Kepler_Tutorial_NXC.pdf Einführung in die Programmierung mit NXC<ref> Einführung in die Programmierung mit NXC - http://www.brgkepler.at/~robotik/home/documents/BRG_Kepler_Tutorial_NXC.pdf </ref>], [https://www.daniel-braun.com/buch/roboter-programmieren-mit-nxc/ Buch „Roboter programmieren mit NXC für LEGO Mindstorms NXT“<ref> Buch "Roboter programmieren mit NXC für LEGO Mindstorms NXT" - https://www.daniel-braun.com/buch/roboter-programmieren-mit-nxc/ </ref>],  
NXC-Befehle siehe [http://www.brgkepler.at/~robotik/home/documents/BRG_Kepler_Tutorial_NXC.pdf Einführung in die Programmierung mit NXC<ref> Einführung in die Programmierung mit NXC - http://www.brgkepler.at/~robotik/home/documents/BRG_Kepler_Tutorial_NXC.pdf </ref>], [https://www.daniel-braun.com/buch/roboter-programmieren-mit-nxc/ Buch „Roboter programmieren mit NXC für LEGO Mindstorms NXT“<ref> Buch "Roboter programmieren mit NXC für LEGO Mindstorms NXT" - https://www.daniel-braun.com/buch/roboter-programmieren-mit-nxc/ </ref>],  
[https://gym-leibnitz.lima-city.de/robotik/wp-content/uploads/2016/01/NXC_Tutorial_DE.pdf Programmierung LEGO NXT Roboter mit NXC <ref> Programmierung LEGO NXT Roboter mit NXC - https://gym-leibnitz.lima-city.de/robotik/wp-content/uploads/2016/01/NXC_Tutorial_DE.pdf </ref>] und [http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html NXC Programmer's Guide <ref> NXC Programmer's Guide  - http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html </ref>]. (In diesen Dokumenten befindet sich auch eine Übersicht der Sensoren und Aktoren). <br />
[https://gym-leibnitz.lima-city.de/robotik/wp-content/uploads/2016/01/NXC_Tutorial_DE.pdf Programmierung LEGO NXT Roboter mit NXC <ref> Programmierung LEGO NXT Roboter mit NXC - https://gym-leibnitz.lima-city.de/robotik/wp-content/uploads/2016/01/NXC_Tutorial_DE.pdf </ref>] und [http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html NXC Programmer's Guide <ref> NXC Programmer's Guide  - http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html </ref>]. (In diesen Dokumenten befindet sich auch eine Übersicht der Sensoren und Aktoren). <br />


Main-Funktion aus dem Quellcode:
MATLAB-Quellcode aus Praktikumstermin 1, Aufgabe 1.5:
<pre>motor1 = NXTMotor(motor);
motor1.SpeedRegulation  = false;
motor1.Power            = geschwindigkeit;
motor1.TachoLimit        = laenge;
motor1.ActionAtTachoLimit = 'Brake';


<pre> task main()
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'); </pre>
 
NXC-Quellcode aus Praktikumstermin 5 , Aufgabe 5.3 :
<pre>
const byte camPort  =  IN_1;
 
#define CAMADDR    0x02
#include "nxtcamlib-default.nxc"
 
task main ()
{
{
  SetSensorLowspeed(IN_4);
int cam;
   SetSensorLowspeed(IN_2);
Wait(100);
   SetSensorTouch(S1);
 
   TextOut(0, LCD_LINE1, "Links  - Osten");
  // Camera initialisieren
   TextOut(0, LCD_LINE2, "Rechts - Westen");
   cam = NXTCam_Init(camPort, CAMADDR);
   do{                                        //Linker oder Rechter Kopf zur Torwahl
   Wait(100);
    if(ButtonPressed(BTNLEFT, true))
   //Line Tracking Modus
    {tor=0; starten=true;}
  NXTCam_SendCommand(camPort, CAMADDR,'L');
    if(ButtonPressed(BTNRIGHT, true))
   Wait(100);
    {tor=1; starten=true;}
   //Tracking einschlaten
  }while(starten==false)
  NXTCam_SendCommand(camPort, CAMADDR,'E');
  while(true)                                //Endlosschleife
  Wait(100);
  {
    Suchen();
  }
} </pre>


  //LCD-Anzeige leeren
  ClearScreen();
  //Text ausgeben
  TextOut(0, LCD_LINE1, "Verbindung aktiv" );
  TextOut(40, LCD_LINE2, "..." );
  Wait(5000);
  }
}
</pre>


== YouTube-Video ==
== YouTube-Video ==


<gallery widths="350" heights="200">
<gallery widths="350" heights="200">
A5 V.jpg | verweis=https://youtu.be/ayIwBw-KpMo
SS18 A4 VFoto.jpg | verweis=https://youtu.be/6-3ndXZcRbw
</gallery>
</gallery>
Video zum Roboter "Robo Fighter"
Video zum Roboter der Gruppe A4
<br />
<br />


Zeile 120: Zeile 207:
''Herausgeber:'' Rina Muçaj, Levin Baumeister und Jan Pinter <br />
''Herausgeber:'' Rina Muçaj, Levin Baumeister und Jan Pinter <br />
''Hochschule:'' Hochschule Hamm-Lippstadt <br />
''Hochschule:'' Hochschule Hamm-Lippstadt <br />
''Studiengang:'' Mechatronik 1. Semester <br />
''Studiengang:'' Mechatronik 2. Semester <br />
''Projektkurs:'' Informatikpraktikum I (Gruppe A5) <br />
''Projektkurs:'' Informatikpraktikum II (Gruppe A4) <br />
''Betreuer:'' Prof. Dr. Ing.-Schneider <br />
''Betreuer:'' Prof. Dr. Ing.-Schneider <br />
''Musik:'' [https://www.bensound.com/royalty-free-music/track/epic Epic - Royalty Free Music<ref> Epic - Royalty Free Music - https://www.bensound.com/royalty-free-music/track/epic</ref>]                                                                                                                  <br />
''Musik:'' [https://www.bensound.com/royalty-free-music/track/epic Epic - Royalty Free Music<ref> Epic - Royalty Free Music - https://www.bensound.com/royalty-free-music/track/epic</ref>]                                                                                                                  <br />
''Praktikumsziel:'' Konstruktion und Programmierung eines LEGO-Mindstorm zur autonomen Spurführung in der Programmiersprache NXC und MatLab
''Praktikumsziel:'' Konstruktion und Programmierung eines LEGO-Mindstorms zur autonomen Spurführung in den Programmiersprachen NXC und MATLAB


== Zusammenfassung ==
== Zusammenfassung ==
=== Lerneffekt ===
=== Lerneffekt ===
* Programmierung eines mechatronischen Systems
* Programmierung eines mechatronischen Systems
* Vertiefung der Programmierkenntnisse mit der Sprache C und Matlab
* Vertiefung der Programmierkenntnisse mit der Sprache C und MATLAB
* Zusammenhänge zwischen den Bauteilen (Sensoren, Aktoren) verstehen
* Zusammenhänge zwischen den Bauteilen (Sensoren, Aktoren) verstehen
* Erfahrungen mit dem Einsatz von verschiedenen Filtern
* Erfahrungen mit dem Einsatz von verschiedenen digitalen Filtern
* Erfahrung mit Bild- und Videobearbeitungsprogrammen
* Erfahrung mit Bild- und Videobearbeitungsprogrammen


== Ausblick ==
== Erfolg ==
Der Roboter...
Der Roboter hat erfolgreich am Praktikum teilgenommen, er hat die zweitgrößte Distanz zurückgelegt.


== Literaturverzeichnis ==
== Literaturverzeichnis ==
Zeile 142: Zeile 229:




→ zurück zum Hauptartikel: [Autonomes Fahren SoSe17|Informatikpraktikum 2 SoSe17]
→ zurück zum Hauptartikel: [[Autonomes Fahren SoSe18|Informatikpraktikum 2 SoSe18]]

Aktuelle Version vom 27. Juli 2018, 18:24 Uhr

Autoren und Gruppenmitglieder: Rina Muçaj, Jan Pinter und Levin Baumeister

Name des Roboters

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

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.

Animation des Zusammenbaus
Animation des Zusammenbaus

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°


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

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

  1. MATLAB - https://de.mathworks.com/products/matlab.html
  2. RWTH - Mindstorms NXT Toolbox for MATLAB - http://www.mindstorms.rwth-aachen.de/
  3. Bricx Command Center - http://bricxcc.sourceforge.net/
  4. NXC - https://de.wikipedia.org/wiki/Not_eXactly_C
  5. LEGO Digital Designer 4.3 - http://ldd.lego.com/de-de
  6. PapDesigner - http://friedrich-folkmann.de/papdesigner/Hauptseite.html/
  7. muvee Reveal Encore 2018 - https://www.muvee.com/
  8. Captura Version 6.0.1 - http://mathewsachin.github.io//
  9. Hilfeseite des Wikimedia-Projekts - http://meta.wikimedia.org/wiki/Help:Editing/de
  10. http://robotsquare.com/2012/02/18/understanding-nxt-versions/
  11. http://www.nxtprograms.com/help/parts/9797.html
  12. http://www.mindsensors.com/ev3-and-nxt/14-vision-subsystem-camera-for-nxt-or-ev3-nxtcam-v4
  13. MATLAB Courses - https://matlabacademy.mathworks.com/?s_cid=learn_MLacad_ban
  14. LEGO MINDSTORMS NXT Support from MATLAB - https://de.mathworks.com/hardware-support/lego-mindstorms-matlab.html
  15. RWTH - Mindstorms NXT Toolbox for MATLAB - Toolbox Documentation - http://www.mindstorms.rwth-aachen.de/trac/wiki/Documentation
  16. Einführung in die Programmierung mit NXC - http://www.brgkepler.at/~robotik/home/documents/BRG_Kepler_Tutorial_NXC.pdf
  17. Buch "Roboter programmieren mit NXC für LEGO Mindstorms NXT" - https://www.daniel-braun.com/buch/roboter-programmieren-mit-nxc/
  18. Programmierung LEGO NXT Roboter mit NXC - https://gym-leibnitz.lima-city.de/robotik/wp-content/uploads/2016/01/NXC_Tutorial_DE.pdf
  19. NXC Programmer's Guide - http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html
  20. 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