... | @@ -92,7 +92,8 @@ Wenn das Interface erweitert werden soll, zum Beispiel durch die Integration ein |
... | @@ -92,7 +92,8 @@ Wenn das Interface erweitert werden soll, zum Beispiel durch die Integration ein |
|
|
|
|
|
## Benutzerdefinierte Erweiterungen
|
|
## Benutzerdefinierte Erweiterungen
|
|
|
|
|
|
<details><summary>Erweiterung der `train.py` Klasse </summary>
|
|
<details><summary>Erweiterung der train.py Klasse </summary>
|
|
|
|
|
|
Die Klasse `Train.py` bildet das zentrale Element des Zuges. Sie wird in die jeweils verwendete Node integriert und ihre Methoden werden aufgerufen, um mit dem Zug zu interagieren. Diese Architektur ermöglicht eine modulare und flexible Steuerung der Zugfunktionen, indem sie eine klare Schnittstelle für die Kommunikation mit anderen Komponenten bereitstellt.
|
|
Die Klasse `Train.py` bildet das zentrale Element des Zuges. Sie wird in die jeweils verwendete Node integriert und ihre Methoden werden aufgerufen, um mit dem Zug zu interagieren. Diese Architektur ermöglicht eine modulare und flexible Steuerung der Zugfunktionen, indem sie eine klare Schnittstelle für die Kommunikation mit anderen Komponenten bereitstellt.
|
|
|
|
|
|
<br/>
|
|
<br/>
|
... | @@ -144,15 +145,28 @@ Die Klasse `Train.py` bildet das zentrale Element des Zuges. Sie wird in die jew |
... | @@ -144,15 +145,28 @@ Die Klasse `Train.py` bildet das zentrale Element des Zuges. Sie wird in die jew |
|
<details><summary>Erweiterung einer Control-Node </summary>
|
|
<details><summary>Erweiterung einer Control-Node </summary>
|
|
Eine `Control-Node` erbt von oder enthält eine Instanz der Klasse Train.py. Durch die Eingaben der `Control-Node` werden die Methoden der `train.py`-Klasse aufgerufen, um den Zug zu steuern. Diese Architektur ermöglicht eine strukturierte und modulare Implementierung, wobei die `Control-Node` als Schnittstelle fungiert, die Benutzereingaben verarbeitet und die entsprechenden Steuerbefehle an die Zug-Logik weitergibt. Dies fördert die Trennung von Verantwortlichkeiten und verbessert die Wartbarkeit des Systems.
|
|
Eine `Control-Node` erbt von oder enthält eine Instanz der Klasse Train.py. Durch die Eingaben der `Control-Node` werden die Methoden der `train.py`-Klasse aufgerufen, um den Zug zu steuern. Diese Architektur ermöglicht eine strukturierte und modulare Implementierung, wobei die `Control-Node` als Schnittstelle fungiert, die Benutzereingaben verarbeitet und die entsprechenden Steuerbefehle an die Zug-Logik weitergibt. Dies fördert die Trennung von Verantwortlichkeiten und verbessert die Wartbarkeit des Systems.
|
|
|
|
|
|
|
|
<br/>
|
|
|
|
<br/>
|
|
|
|
|
|
|
|
Zur Verbesserung der Übersichtlichkeit wurde für jede Control-Node eine eigene Klasse erstellt, in der die entsprechenden Methoden und Parameter definiert und initialisiert sind. Diese Klassenstruktur fördert die Modularität und Wiederverwendbarkeit des Codes. Durch die Kapselung von Funktionen und Attributen innerhalb der Klassen wird die Wartbarkeit und Lesbarkeit des Systems erhöht, was zu einer effizienteren Entwicklung und Implementierung beiträgt.
|
|
|
|
|
|
<br/> <br/>
|
|
<br/> <br/>
|
|
|
|
|
|
1. **Einbindung einer neuen Methode in eine /`include/x_control.py`**
|
|
|
|
Beispiel für die Erweiterung der `aruco_control.py`:
|
|
Beispiel für die Erweiterung der `aruco_control.py`:
|
|
|
|
1. **Einbindung einer neuen Methode in eine `/include/aruco_original.py`**
|
|
|
|
|
|
```python
|
|
```python
|
|
|
|
def __init__(self, **kwargs):
|
|
self.specific_tag = 42
|
|
self.specific_tag = 42
|
|
def toggle_horn_tag(self, msg):
|
|
|
|
|
|
def toggle_horn_by_tag(self, msg):
|
|
if msg.id == self.specific_tag:
|
|
if msg.id == self.specific_tag:
|
|
self.train.horn_activate()
|
|
self.train.horn_activate()
|
|
```
|
|
```
|
|
|
|
2. **Aufruf der Methode in `aruco_control.py`**
|
|
|
|
|
|
|
|
```python
|
|
|
|
def marker_array_callback(self, msg):
|
|
|
|
self.toggle_horn_by_tag(msg) # Aufruf der neuen Methode
|
|
|
|
```
|
|
</details> |
|
</details> |