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

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:

    [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