Files
HandoverMobileBaseStation/robot/ReadMe.md
T
2026-02-22 23:30:15 +01:00

154 lines
4.1 KiB
Markdown

# Robot
## Cam-stream
Files:
- cam_stream.py
### Ziel
Kamera läuft und schickt Bilder via seriell an den ESP.
### Voraussetzung
- Die Kamera 🤡
- ESP am Serial-Port `/dev/ttyACM1` (115200 Baud)
### Umsetzung
In Endlosschleife wird ein 640x480-Graustufen-Frame von der Kamera gelesen und als JPEG komprimiert bis die Größe unter 1200 Bytes liegt.\
Danach wird der Frame in JSON-Format über seriell an den ESP gesendet.\
Sollte es zu einem Verbindungsabbruch zwischen Pi und ESP kommen wird automatisch so lange eine Neuverbindung versucht, bis diese Verbindung wieder steht.
### Probleme während der Bearbeitung und ihre Lösungen
Die Kamera wurde nicht konstant erkannt (beim Suchen der Kamera wurde sie manchmal gefunden und manchmal nicht, meistens nicht).\
Eine Neuinstallation von Raspbian hat das Problem gelöst, allerdings wurde diesmal die full-version installiert.
-----------------------
## Line follow
Files:
- AlphaBot2.py
- TRSensors.py
- line_follow.py
### Ziel
Roboter soll in der Lage sein einer Linie auf dem Boden zu folgen,
ohne diesen zu verlieren
### Voraussetzung
Linienbreite deckt 3 der 5 Sensoren ab (die mittleren), äußeren Sensoren müssen den boden sehen.
### Umsetzung
#### erste Idee: (Verworfen)
Von 5 Sensoren müssen die mittleren 3 immer die Linie sehen.\
Mithilfe der äußeren Sensoren werden Korrekturen durchgeführt, damit der Roboter auf der Linie bleibt.
#### zweite Idee:
Es müssen wieder die mittleren 3 Sensoren auf der Linie sein.\
Diesmal wird die Korrektur aber von Sensor 1 und Sensor 3 durchgeführt (Index beginnt bei 0).\
Mithilfe der äußeren Sensoren, soll entschieden werden, ob eine Abzweigung existiert und falls sie existiert wird eine stärkere Korrektur durchgeführt damit der Roboter sich richtig dreht.
### Probleme während der Bearbeitung und ihre Lösungen
#### erste Idee:
Der Roboter hat zu sehr gezappelt und es war schwer zu unterscheiden ob nur leicht korrigiert werden musste oder ob die Linie die Richtung gewechselt hat.
Das Problem sollte durch die zweite Idee gelöst werden.
#### zweite Idee: (Idee wurde vereinfacht auf nur starke Kurven = Roboter muss eine 90° Drehung machen um zu folgen)
Der Roboter interpretiert, je nach Untergrund, Kurven falsch.\
Obwohl keine Kurve vorhanden ist biegt er doch ab.\
Wenn eine Kurve vorhanden ist nimmt er diese nicht korrekt war und bleibt am Ende der Linie stehen.
-------------------
## remote steering
Files:
- AlphaBot2.py
- IRremote.py
### Ziel
Steuerung des kompletten Roboters über Fernbedienung.
Möglich machen:
- Roboter bewegen
- Linienfolgen starten und stoppen + Kalibrierung manuell starten
- (Kameraausrichtung ermöglichen)
### Voraussetzung
Die Fernbedienung 🤡
### Umsetzung Buttons
- play/pause = starten bzw. stoppen des line follows
- 2 = geradeaus fahren
- 4 = nach links drehen um die eigene Achse
- 6 = nach rechts drehen um die eigene Achse
- 8 = rückwärts fahren
### Probleme während der Bearbeitung und ihre Lösungen
Keine Probleme
-------------------
## Daemon
Files: Kein
### Ziel
Automatisches starten des Kamerastreams,
sowie die Steuerung über eine Fernbedienung.
### Umsetzung
1. **Service-Datei anlegen**
Erstelle unter `/etc/systemd/system/` eine Datei namens `<service_name>.service` mit folgendem Inhalt:
```ini
[Unit]
Description=<Kurzbeschreibung des Dienstes>
After=network.target
[Service]
Type=simple
User=<system_user>
WorkingDirectory=<Arbeitsverzeichnis>
ExecStart=<Pfad zu Interpreter> <Pfad zum Skript>
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
```
2. **Systemd neu einlesen**
``sudo systemctl daemon-reload``
3. **Dienst aktivierten (Boot-Start)**
``sudo systemctl enable <service_name>.service``
4. **Dienst sofort starten**
``sudo systemctl start <service_name>.service``
5. **Status und Logs prüfen**
- Status anzeigen:
``sudo systemctl status <service_name>.service``
- Live-Logs:
``sudo journalctl -u <service_name>.service -f``
### Probleme während der Bearbeitung und ihre Lösungen