RoboSoccer Gruppe A4 - WS 17/18: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(54 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:
== Einleitung ==
== Einleitung ==


In diesem Artikel möchte wir (Moritz Oberg, Alessio Cebeci, Lukas Kriete, Gruppe A4) euch, unsern Roboter "Bobby" vorstellen. Dieser Roboter ist das Endergebnis unseres Informatikpraktikums Wintersemester 17/18. Die Aufgabe in unserem Praktikum war es, einen Roboter zu konstruieren und zu programmieren, der einen Inferotball erkennt, zu ihm hinfährt, in greift und danach ihn Richtung Tor schießt. Am Ende des Praktikums wir ein Robosoccertunier veranstaltet, in dem unser Robotor seine Fähigkeiten unter Beweis stellen muss. Dieses Projekt findet im Rahmen des Informatikpraktikums unter der Aufsicht von Prof. Schneider statt.
In diesem Artikel möchte wir (Moritz Oberg, Alessio Cebeci, Lukas Kriete, Gruppe A4) euch, unseren Roboter "Bobby" vorstellen. Dieser Roboter ist das Endergebnis unseres Informatikpraktikums Wintersemester 17/18. Die Aufgabe in unserem Praktikum war es, einen Roboter zu konstruieren und zu programmieren, der einen Inferotball erkennt, zu ihm hinfährt, in greift und danach ihn Richtung Tor schießt. Am Ende des Praktikums wir ein Robosoccertunier veranstaltet, in dem unser Robotor seine Fähigkeiten unter Beweis stellen muss. Dieses Projekt findet im Rahmen des Informatikpraktikums unter der Aufsicht von Prof. Schneider statt.


=== Teammitglieder ===
=== Teammitglieder ===
Zeile 11: Zeile 11:


#[[Benutzer:Moritz Oberg|Moritz Oberg]]
#[[Benutzer:Moritz Oberg|Moritz Oberg]]
#*Entwicklung und programmieren mithilfe von BridxCC
#*Entwicklung und programmieren mithilfe von BricxCC
#*Film für Youtube
#*Film für Youtube
#[[Benutzer:Alessio Cebeci|Alessio Cebeci]]
#[[Benutzer:Alessio Cebeci|Alessio Cebeci]]
#*Entwicklung und programmieren mithilfe von BridxCC
#*Entwicklung und programmieren mithilfe von BricxCC
#*Konstruktion von Bobby in Lego Digital Designer
#*Konstruktion von Bobby in Lego Digital Designer
#*Bau des Roboters
#*Bau des Roboters
#[[Benutzer:Lukas Kriete|Lukas Kriete]]
#[[Benutzer:Lukas Kriete|Lukas Kriete]]
#*Bau des Roboters
#*Entwicklung einer Spielstrategie mithilfe von PAP-Designer
#*Entwicklung einer Spielstrategie mithilfe von PAP-Designer
#*Entwicklung und programmieren mithilfe von BridxCC
#*Artikel auf dem Wiki der HSHL
#*Artikel auf dem Wiki der HSHL
#*Erstellung des Werbeplaketes


== Hardware:==
== Hardware==
 
 
[[Datei:Fahrzeugmerkmale.png|300px|thumb|rechts|Fahrzeugmerkmale: Beschriftung]]




:1.''Schussarm/ Greifarm:''
[[Datei:Fahrzeugmerkmale.png|300px|thumb|rechts|Fahrzeugmerkmale: Beschriftung<ref> Eigenes Foto </ref>]]
::Der vordere Teil des Arms dient dazu den Ball festzuhalten. Auf der entgegengesetzten Seite befindet sich der Teil zum schießen. Der Motor 3
::ist für den Fang- / Schussarmzuständig. Durch genaue Winkeleinstellung, lässt sich die Schussvorrichtung auf ein Grad genau steuern.




 
=== 1. Unterkonstruktion ===
 
::Die Unterkonstruktion besteht aus 2 Motoren. Die Motoren können die Rotationen auf einen Grad genau bestimmen. Dabei ist die maximale Umdrehungen 160 Umdrehungen/ Minuten und das maximale Drehmoment ca. 0,2 Nm.  
:2.''Unterkonstruktion''
::Die Unterkonstruktion besteht aus zwei Servormotoren. An diesen sind extra große Reifen, wodurch es Bobby möglich ist, schnell zum Ball zu fahren oder sich zu drehen.
::Besteht aus 2 Motoren. Die Motoren können die Rotationen auf einen Grad genau bestimmen. Dabei ist die maximale Umdrehungen 160 Umdrehungen/ Minuten und das ::maximale Drehmoment ca. 0,2 Nm.  
::Außerdem haben wir beim Bau darauf geachten, die Unterkonstruktion möglichst tief zu bauen, da dadurch der Schwerpunkt von Bobby deutlich tiefer liegt.
::Die Unterkonstruktion besteht aus zwei Servormotoren. An den sind extra große Reifen, wodurch es Bobby möglich ist, schnelle zum Ball zu fahren oder sich zu drehen.
::Außerdem haben wir bei Bau darauf geachten die Unterkonstruktion möglichst tief zu bauen, da dadurch der Schwerpunkt von Bobby weiter unten ist.
::Das dritte Rad ist eine Kugel, wodurch sich Bobby sehr gut drehen kann.
::Das dritte Rad ist eine Kugel, wodurch sich Bobby sehr gut drehen kann.


=== 2. Schussarm/ Greifarm: ===
::Der vordere Teil des Arms dient dazu den Ball festzuhalten. Auf der entgegengesetzten Seite befindet sich der Teil zum schießen. Der Motor drei
::ist für den Fang- / Schussarmzuständig. Durch genaue Winkeleinstellung, lässt sich die Schussvorrichtung auf ein Grad genau steuern.


 
=== 3. NXT-Brick ===
:3.''NXT-Brick''
::Der NXT- Brick ist das "Gehirn" von den Bobby. Bei ihm werden alle Sensoren und Motoren angeschlossen.  
::Der NXT- Brick ist das "Gehirn" von den Bobby. Bei ihm werden alle Sensoren und Motoren angeschlossen.  




:3.''Infarot Sensor:''
=== 4. Infarot Sensor: ===
:::[[Datei:Infarotsensor.PNG|200px|thumb|links|Empfangsbereiche: Infarotsensor]]
:::[[Datei:Infarotsensor.PNG|200px|thumb|links|Empfangsbereiche: Infarotsensor<ref> Eigenes Foto </ref>]]


::Der Inferotsensor (IRSEEKERV2 )besitzt 5 Detektoren, die in einem Radius von 240 Grad, Inferotsignale erfassen können. Diese 5 Detektoren lassen sich in 9 Sektoren unterteilen um eine genauere Richtung des Inferotsignales zu bestimmen. Basierend auf dem pyroelektrischen Prinzip, lässt sich sogar die Intensität der Inferotstrahlen in den Detektoren bestimmen. Dadurch kann ein Abstand des Inferotball`s ermittelt werden.
::Der Infrarotsensor (IRSEEKERV2 )besitzt 5 Detektoren, die in einem Radius von 240 Grad, Infrarotsignale erfassen können. Diese 5 Detektoren lassen sich in 9 Sektoren unterteilen um eine genaue Richtung des Infrarotsignales zu bestimmen. Basierend auf dem pyroelektrischen Prinzip, lässt sich sogar die Intensität der Infrarotstrahlen in den Detektoren bestimmen. Dadurch kann ein Abstand des Infrarotball`s ermittelt werden.




Zeile 68: Zeile 62:




:4.''Tastsensor:''
=== 5. Tastsensor: ===
::Dieser Sensor hat die Funktion, zu erkennen ob sich ein Ball in der Schussvorrichtung befindet. Prallt der Ball gegen den Splint des Tastsensors, bekommt der NXT das Signal 1. Dieses Signal kann mit Hilfe ::des :Programmes weiter verarbeitet werden.
::Dieser Sensor hat die Funktion, zu erkennen ob sich ein Ball in der Schussvorrichtung befindet. Prallt der Ball gegen den Splint des Tastsensors, bekommt der NXT das Signal 1. Dieses Signal kann mit Hilfe des Programmes weiter verarbeitet werden.


:5.''Kompass:''
=== 6. Kompass: ===
::Der Sensor führt 100 Messungen pro Sekunde durch und übermittelt eine Zahl zwischen 0 und 359, die den Winkel zum Nordpol ausdrückt. Der Sensor verfügt über zwei Modi:
::Der Sensor führt 100 Messungen pro Sekunde durch und übermittelt eine Zahl zwischen 0 und 359, die den Winkel zum Nordpol ausdrückt. Der Sensor verfügt über zwei Modi:
#Im Lesemodus übermittelt der Sensor jedes Mal einen Wert, wenn er vom intelligenten Lego Mindstorms NXT-Stein einen Lesebefehl erhält.
#Im Lesemodus übermittelt der Sensor jedes Mal einen Wert, wenn er vom intelligenten Lego Mindstorms NXT-Stein einen Lesebefehl erhält.
Zeile 81: Zeile 75:


=== Hauptproramm ===
=== Hauptproramm ===
[[Datei:Hauptprogramm.PNG|120px|none|mini|Fahrzeugmerkmale: Hauptprogramm]]
[[Datei:Hauptprogramm.PNG|120px|none|mini|Fahrzeugmerkmale: Hauptprogramm<ref> Eigenes Foto </ref>]]
Das Hauptprogramm besteht im Wesendlichen aus einer Dauerschleife welche die beiden Fubnktionen „zuballfahren“ und „ball“ enthält. Diese werden so lange ausgeführt bis das Programm manuell abgebrochen wird.
Das Hauptprogramm besteht im Wesendlichen aus einer Dauerschleife welche die beiden Fubnktionen „zuballfahren“ und „ball“ enthält. Diese werden so lange ausgeführt bis das Programm manuell abgebrochen wird.


=== Zuballfahren===
=== Zuballfahren===
[[Datei:Zuballfahren.PNG|160px|none|mini|Fahrzeugmerkmale: Zuballfahren]]
[[Datei:Zuballfahren.PNG|160px|none|mini|Fahrzeugmerkmale: Zuballfahren<ref> Eigenes Foto </ref>]]
In der Funktion wird zunächst die Intensität des Infrarotsignals überprüft. Überschreitet die Intensität einen bestimmten Wert reduziert der Roboter seine Geschwindigkeit. Ansonsten fährt der Roboter mit voller Geschwindigkeit zum Ball während er seine Richtung immer anhand des direction-Wert des Infrarotsensors anpasst. Ist der Tastsensor des Roboters ausgelöst und die Intensität des Signals groß genug, gibt die Funktion keine weiteren Fahrbefehle und der Roboter hält an.
In der Funktion wird zunächst die Intensität des Infrarotsignals überprüft. Überschreitet die Intensität einen bestimmten Wert reduziert der Roboter seine Geschwindigkeit. Ansonsten fährt der Roboter mit voller Geschwindigkeit zum Ball während er seine Richtung immer anhand des direction-Wert des Infrarotsensors anpasst. Ist der Tastsensor des Roboters ausgelöst und die Intensität des Signals groß genug, gibt die Funktion keine weiteren Fahrbefehle und der Roboter hält an.


=== Ball===
=== Ball===
[[Datei:Ball.PNG|160px|none|mini|Fahrzeugmerkmale: Ball]]
[[Datei:Ball.PNG|160px|none|mini|Fahrzeugmerkmale: Ball<ref> Eigenes Foto </ref>]]
Die Funktion „ball“ schließt den vorhandenen Fang/Schuss-arm des Roboters sobald der Tastsensor eine Berührung registriert und ein bestimmter Infrarotwert überschritten wird. Wenn nach schließen des Arms der Tastsensor nicht gedrückt und das Infrarotsignal abgefallen ist, öffnet er den Arm wieder und bringt ihr in die Ausgangssituation. Ist der Ball gefangen ruft die Funktion eine weitere Unterfunktion „torausrichten“ auf welche so lange läuft bis der Roboter richtig ausgerichtet ist. Ist dies geschehen schießt der Roboter den Ball und bringt den Arm nach einer kurzen Wartezeit wieder in die Ausgangslage.
Die Funktion „ball“ schließt den vorhandenen Fang/Schuss-arm des Roboters sobald der Tastsensor eine Berührung registriert und ein bestimmter Infrarotwert überschritten wird. Wenn nach schließen des Arms der Tastsensor nicht gedrückt und das Infrarotsignal abgefallen ist, öffnet er den Arm wieder und bringt ihr in die Ausgangssituation. Ist der Ball gefangen ruft die Funktion eine weitere Unterfunktion „torausrichten“ auf welche so lange läuft bis der Roboter richtig ausgerichtet ist. Ist dies geschehen schießt der Roboter den Ball und bringt den Arm nach einer kurzen Wartezeit wieder in die Ausgangslage.


=== Torausrichten ===
=== Torausrichten ===
[[Datei:Torausrichten.PNG|120px|none|mini|Fahrzeugmerkmale: Torausrichten]]
[[Datei:Torausrichten.PNG|120px|none|mini|Fahrzeugmerkmale: Torausrichten<ref> Eigenes Foto </ref>]]
Die Funktion richtet den Roboter zum Tor aus indem sie sich am Kompasssensor orientiert und den Roboter in die Richtung dreht, in die die wenigsten Grad zu drehen sind. Gibt der Kompass den geforderten Wert zurück, stoppt die Funktion.
Die Funktion richtet den Roboter zum Tor aus indem sie sich am Kompasssensor orientiert und den Roboter in die Richtung dreht, in die die wenigsten Grad zu drehen sind. Gibt der Kompass den geforderten Wert zurück, stoppt die Funktion.


== Ansteuerung der Aktoren ==
== Ansteuerung der Aktoren ==


Als Aktuatoren haben wir nur die Motoren von NXT. Die nachfolgenden Befehle, beziehen sich auf die Möglichkeiten der Ansteuerung der Motoren:
Als Aktuatoren haben wir nur die Motoren von NXT. Die nachfolgenden Befehle, beziehen sich auf die Möglichkeiten der Ansteuerung der Motoren


 
#* ''OnFwd()'' oder ''OnRev()''
 
#*''RotateMotor()''
#*OnFwd() oder OnRev()  
#*''OnFwdReg()'' oder ''OnRevReg()''
#*RotateMotor()  
#*''OnFwdSync()'' oder ''OnRevSync()''
#*OnFwdReg()  oder OnRevReg()  
#*''Off()'' oder ''Float()''
#*OnFwdSync() oder OnRevSync()  
#*Off() oder Float()  




Zeile 120: Zeile 104:


::'''Motor fährt geradeaus mit einer angegeben Geschwindigkeit'''  
::'''Motor fährt geradeaus mit einer angegeben Geschwindigkeit'''  
::OnFwd(Ausgang_Motor, Leistung);     
::''OnFwd(Ausgang_Motor, Leistung);''      
    
    


::'''Motor fährt rückwärts mit einer angegeben Geschwindigkeit'''   
::'''Motor fährt rückwärts mit einer angegeben Geschwindigkeit'''   
::OnRev(Ausgang_Motor, Leistung);     
::''OnRev(Ausgang_Motor, Leistung);''      
   
   


::'''Motor rotiert mit einer angegeben Geschwindigkeit bis zu dem angegebenen Winkel'''   
::'''Motor rotiert mit einer angegeben Geschwindigkeit bis zu dem angegebenen Winkel'''   
::RotateMotor(Ausgang_Motor, Leistung, Winkel);       
::''RotateMotor(Ausgang_Motor, Leistung, Winkel);''        
   
   


::'''Regulierungsmodus, zum synchronen Motorenlauf in Fahrtrichtung Vorwärts'''  
::'''Regulierungsmodus, zum synchronen Motorenlauf in Fahrtrichtung Vorwärts'''  
::OnFwdReg(Ausgang_Motor, Leistung, REGMODE);  
::''OnFwdReg(Ausgang_Motor, Leistung, REGMODE);''
   
   


::'''Regulierungsmodus, zum synchronen Motorenlauf in Fahrtrichtung Rückwärts'''  
::'''Regulierungsmodus, zum synchronen Motorenlauf in Fahrtrichtung Rückwärts'''  
::OnRevReg(Ausgang_Motor, Leistung, REGMODE);  
::''OnRevReg(Ausgang_Motor, Leistung, REGMODE);''


   
   
::'''Automatisches fahren einer Kurve durch Angaben eines Radius in Fahrtrichtung Vorwärts'''  
::'''Automatisches fahren einer Kurve durch Angaben eines Radius in Fahrtrichtung Vorwärts'''  
::OnFwdSync(Ausgang_Motor, Leistung, Radius);  
::''OnFwdSync(Ausgang_Motor, Leistung, Radius);''
   
   


::'''Automatisches fahren einer Kurve durch Angaben eines Radius in Fahrtrichtung Rückwärts'''  
::'''Automatisches fahren einer Kurve durch Angaben eines Radius in Fahrtrichtung Rückwärts'''  
::OnRevSync(Ausgang_Motor, Leistung, Radius);  
::''OnRevSync(Ausgang_Motor, Leistung, Radius);''




::'''Motor bremst sofort ab'''  
::'''Motor bremst sofort ab'''  
::Off(Ausgang_Motor);  
::''Off(Ausgang_Motor);''
   
   


::'''Motor läuft aus'''  
::'''Motor läuft aus'''  
::Float (Ausgang_Motor);  
::''Float (Ausgang_Motor);''
   
   


::'''Begriffe''':  
::'''Begriffe''':  
::On = An; Fwd = Vorwärts; Rev = Rückwärts; Rotate = rotieren; Reg = Regulation; Off = Aus; Flout =    gleiten
::''On'' = An; ''Fwd'' = Vorwärts; ''Rev'' = Rückwärts; ''Rotate'' = rotieren; ''Reg'' = Regulation; ''Off'' = Aus; ''Flout'' =    gleiten
 
==Spielfeld==
 
 
 
[[Datei:Spielfeld.png|800px|thumb|rechts|Fahrzeugmerkmale: Zuballfahren]]
:::::::::::::::::::::::::::::::::Breite Spielfeld : 183cm
:::::::::::::::::::::::::::::::::Länge Spielfeld : 122cm
:::::::::::::::::::::::::::::::::Länge 11-Meter-Raum :30cm
:::::::::::::::::::::::::::::::::Breite 11-Meter-Raum : 74cm
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


== Ansteuerung der Sensor ==


::'''Tastsensor:'''
::Der Eingang X wird der Funktion des Sensors zugewiesen.
::''SetSensorTouch(IN_X)''


::Mit dieser Funktion, wird der Zustand (1/0) des Tastsensors ausgelesen.
::''Sensor(IN_X)''




::'''Kompasssensor:'''
::Mit diesem Befehl wird der Kompass mit dem Eingang X verbunden
::''#define COMPASS IN_X''


::Mit der Funktion wird der Kompass ausgelesen und gibt einen Wert zwischen 0 und 359 raus
::''SensorHTCompass(IN_2)''




::'''Infarotsensor:'''
::Mit diesem Befehl wir der Inferotsensor mit dem Eingang X verbunden
::''#define IRSEEKER IN_X''




::Mit der Funktion wird der Inferotsensor ausgelesen
::''ReadSensorHTIRSeeker2AC(IRSEEKER, dir, s1, s2, s3, s4, s5);''








==Spielfeld==








[[Datei:Spielfeld.png|250px|thumb|rechts|Fahrzeugmerkmale: Zuballfahren<ref> Eigenes Foto </ref>]]
:::::::Breite Spielfeld : 183cm
:::::::Länge Spielfeld : 122cm
:::::::Länge 11-Meter-Raum :30cm
:::::::Breite 11-Meter-Raum : 74cm




Zeile 227: Zeile 203:




== Werbebanner ==




Zeile 232: Zeile 209:




[[Datei:Bobby_Werbeplakat.jpg|none|mini|Werbebanner]]


== Link zum Video ==
Um unseren Booby in Action zu sehen und um uns kurz vorzustellen klicke auf den [http://youtube.com/watch?v=uenqrz7zReg&feature=youtu.de/ Link]


== Was haben wir gelernt? ==
== Was haben wir gelernt? ==
Zeile 245: Zeile 225:
#Erstellung eines Filmes und eines Werbeposters
#Erstellung eines Filmes und eines Werbeposters


== Werbebanner ==




== Link zum Video ==
== Link zu unserem svn-Ordner==
Um unseren Booby in Action zu sehen und um uns kurz vorzustellen klicke auf den [http://youtube.com/watch?v=uenqrz7zReg&feature=youtu.de/ Link]
 
Hier befindet sich unser [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/ svn-Ordner]


== Regelwerk ==
== Literaturverzeichnis ==
<references />




→ zurück zum Hauptartikel: [[RoboSoccer_WS_17/18|Informatikpraktikum WS 17/18]]
→ zurück zum Hauptartikel: [[RoboSoccer_WS_17/18|Informatikpraktikum WS 17/18]]

Aktuelle Version vom 25. Januar 2018, 10:10 Uhr

Autor: Lukas Kriete


Einleitung

In diesem Artikel möchte wir (Moritz Oberg, Alessio Cebeci, Lukas Kriete, Gruppe A4) euch, unseren Roboter "Bobby" vorstellen. Dieser Roboter ist das Endergebnis unseres Informatikpraktikums Wintersemester 17/18. Die Aufgabe in unserem Praktikum war es, einen Roboter zu konstruieren und zu programmieren, der einen Inferotball erkennt, zu ihm hinfährt, in greift und danach ihn Richtung Tor schießt. Am Ende des Praktikums wir ein Robosoccertunier veranstaltet, in dem unser Robotor seine Fähigkeiten unter Beweis stellen muss. Dieses Projekt findet im Rahmen des Informatikpraktikums unter der Aufsicht von Prof. Schneider statt.

Teammitglieder

Im folgenden werden die Teammitglieder und ihre Aufgaben kurz vorgestellt.

  1. Moritz Oberg
    • Entwicklung und programmieren mithilfe von BricxCC
    • Film für Youtube
  2. Alessio Cebeci
    • Entwicklung und programmieren mithilfe von BricxCC
    • Konstruktion von Bobby in Lego Digital Designer
    • Bau des Roboters
  3. Lukas Kriete
    • Entwicklung einer Spielstrategie mithilfe von PAP-Designer
    • Artikel auf dem Wiki der HSHL
    • Erstellung des Werbeplaketes

Hardware

Fahrzeugmerkmale: Beschriftung[1]


1. Unterkonstruktion

Die Unterkonstruktion besteht aus 2 Motoren. Die Motoren können die Rotationen auf einen Grad genau bestimmen. Dabei ist die maximale Umdrehungen 160 Umdrehungen/ Minuten und das maximale Drehmoment ca. 0,2 Nm.
Die Unterkonstruktion besteht aus zwei Servormotoren. An diesen sind extra große Reifen, wodurch es Bobby möglich ist, schnell zum Ball zu fahren oder sich zu drehen.
Außerdem haben wir beim Bau darauf geachten, die Unterkonstruktion möglichst tief zu bauen, da dadurch der Schwerpunkt von Bobby deutlich tiefer liegt.
Das dritte Rad ist eine Kugel, wodurch sich Bobby sehr gut drehen kann.

2. Schussarm/ Greifarm:

Der vordere Teil des Arms dient dazu den Ball festzuhalten. Auf der entgegengesetzten Seite befindet sich der Teil zum schießen. Der Motor drei
ist für den Fang- / Schussarmzuständig. Durch genaue Winkeleinstellung, lässt sich die Schussvorrichtung auf ein Grad genau steuern.

3. NXT-Brick

Der NXT- Brick ist das "Gehirn" von den Bobby. Bei ihm werden alle Sensoren und Motoren angeschlossen.


4. Infarot Sensor:

Empfangsbereiche: Infarotsensor[2]
Der Infrarotsensor (IRSEEKERV2 )besitzt 5 Detektoren, die in einem Radius von 240 Grad, Infrarotsignale erfassen können. Diese 5 Detektoren lassen sich in 9 Sektoren unterteilen um eine genaue Richtung des Infrarotsignales zu bestimmen. Basierend auf dem pyroelektrischen Prinzip, lässt sich sogar die Intensität der Infrarotstrahlen in den Detektoren bestimmen. Dadurch kann ein Abstand des Infrarotball`s ermittelt werden.









5. Tastsensor:

Dieser Sensor hat die Funktion, zu erkennen ob sich ein Ball in der Schussvorrichtung befindet. Prallt der Ball gegen den Splint des Tastsensors, bekommt der NXT das Signal 1. Dieses Signal kann mit Hilfe des Programmes weiter verarbeitet werden.

6. Kompass:

Der Sensor führt 100 Messungen pro Sekunde durch und übermittelt eine Zahl zwischen 0 und 359, die den Winkel zum Nordpol ausdrückt. Der Sensor verfügt über zwei Modi:
  1. Im Lesemodus übermittelt der Sensor jedes Mal einen Wert, wenn er vom intelligenten Lego Mindstorms NXT-Stein einen Lesebefehl erhält.
  2. Im Kalibriermodus kann der Sensor so eingestellt werden, dass er störende Magnetfelderdes Roboter-Elektromotors, der Batterien usw. neutralisiert.
Die Werte können als relative oder absolute Werte angezeigt werden. Das erleichtert die Programmierung, wenn der Roboter einer bestimmten Richtung folgen soll.

Spielstrategie: PAP

Hauptproramm

Fahrzeugmerkmale: Hauptprogramm[3]

Das Hauptprogramm besteht im Wesendlichen aus einer Dauerschleife welche die beiden Fubnktionen „zuballfahren“ und „ball“ enthält. Diese werden so lange ausgeführt bis das Programm manuell abgebrochen wird.

Zuballfahren

Fahrzeugmerkmale: Zuballfahren[4]

In der Funktion wird zunächst die Intensität des Infrarotsignals überprüft. Überschreitet die Intensität einen bestimmten Wert reduziert der Roboter seine Geschwindigkeit. Ansonsten fährt der Roboter mit voller Geschwindigkeit zum Ball während er seine Richtung immer anhand des direction-Wert des Infrarotsensors anpasst. Ist der Tastsensor des Roboters ausgelöst und die Intensität des Signals groß genug, gibt die Funktion keine weiteren Fahrbefehle und der Roboter hält an.

Ball

Fahrzeugmerkmale: Ball[5]

Die Funktion „ball“ schließt den vorhandenen Fang/Schuss-arm des Roboters sobald der Tastsensor eine Berührung registriert und ein bestimmter Infrarotwert überschritten wird. Wenn nach schließen des Arms der Tastsensor nicht gedrückt und das Infrarotsignal abgefallen ist, öffnet er den Arm wieder und bringt ihr in die Ausgangssituation. Ist der Ball gefangen ruft die Funktion eine weitere Unterfunktion „torausrichten“ auf welche so lange läuft bis der Roboter richtig ausgerichtet ist. Ist dies geschehen schießt der Roboter den Ball und bringt den Arm nach einer kurzen Wartezeit wieder in die Ausgangslage.

Torausrichten

Fahrzeugmerkmale: Torausrichten[6]

Die Funktion richtet den Roboter zum Tor aus indem sie sich am Kompasssensor orientiert und den Roboter in die Richtung dreht, in die die wenigsten Grad zu drehen sind. Gibt der Kompass den geforderten Wert zurück, stoppt die Funktion.

Ansteuerung der Aktoren

Als Aktuatoren haben wir nur die Motoren von NXT. Die nachfolgenden Befehle, beziehen sich auf die Möglichkeiten der Ansteuerung der Motoren

    • OnFwd() oder OnRev()
    • RotateMotor()
    • OnFwdReg() oder OnRevReg()
    • OnFwdSync() oder OnRevSync()
    • Off() oder Float()



Motor fährt geradeaus mit einer angegeben Geschwindigkeit
OnFwd(Ausgang_Motor, Leistung);


Motor fährt rückwärts mit einer angegeben Geschwindigkeit
OnRev(Ausgang_Motor, Leistung);


Motor rotiert mit einer angegeben Geschwindigkeit bis zu dem angegebenen Winkel
RotateMotor(Ausgang_Motor, Leistung, Winkel);


Regulierungsmodus, zum synchronen Motorenlauf in Fahrtrichtung Vorwärts
OnFwdReg(Ausgang_Motor, Leistung, REGMODE);


Regulierungsmodus, zum synchronen Motorenlauf in Fahrtrichtung Rückwärts
OnRevReg(Ausgang_Motor, Leistung, REGMODE);


Automatisches fahren einer Kurve durch Angaben eines Radius in Fahrtrichtung Vorwärts
OnFwdSync(Ausgang_Motor, Leistung, Radius);


Automatisches fahren einer Kurve durch Angaben eines Radius in Fahrtrichtung Rückwärts
OnRevSync(Ausgang_Motor, Leistung, Radius);


Motor bremst sofort ab
Off(Ausgang_Motor);


Motor läuft aus
Float (Ausgang_Motor);


Begriffe:
On = An; Fwd = Vorwärts; Rev = Rückwärts; Rotate = rotieren; Reg = Regulation; Off = Aus; Flout = gleiten

Ansteuerung der Sensor

Tastsensor:
Der Eingang X wird der Funktion des Sensors zugewiesen.
SetSensorTouch(IN_X)
Mit dieser Funktion, wird der Zustand (1/0) des Tastsensors ausgelesen.
Sensor(IN_X)


Kompasssensor:
Mit diesem Befehl wird der Kompass mit dem Eingang X verbunden
#define COMPASS IN_X
Mit der Funktion wird der Kompass ausgelesen und gibt einen Wert zwischen 0 und 359 raus
SensorHTCompass(IN_2)


Infarotsensor:
Mit diesem Befehl wir der Inferotsensor mit dem Eingang X verbunden
#define IRSEEKER IN_X


Mit der Funktion wird der Inferotsensor ausgelesen
ReadSensorHTIRSeeker2AC(IRSEEKER, dir, s1, s2, s3, s4, s5);



Spielfeld

Fahrzeugmerkmale: Zuballfahren[7]
Breite Spielfeld : 183cm
Länge Spielfeld : 122cm
Länge 11-Meter-Raum :30cm
Breite 11-Meter-Raum : 74cm












Werbebanner

Werbebanner

Link zum Video

Um unseren Booby in Action zu sehen und um uns kurz vorzustellen klicke auf den Link

Was haben wir gelernt?

  1. Grafische Programmierung mithilfe von NXT 2.1
  2. Praktische Anwendung der Programmierkenntnisse in der Sprache C
  3. Umgang mit SVN
  4. Sensoren und ihre Funktionsweise
  5. Teamarbeit und Aufgabenverteilung
  6. Nachvollziehabre Dokumentation im Quellcode
  7. Erstellung eines Filmes und eines Werbeposters


Link zu unserem svn-Ordner

Hier befindet sich unser svn-Ordner

Literaturverzeichnis

  1. Eigenes Foto
  2. Eigenes Foto
  3. Eigenes Foto
  4. Eigenes Foto
  5. Eigenes Foto
  6. Eigenes Foto
  7. Eigenes Foto


→ zurück zum Hauptartikel: Informatikpraktikum WS 17/18