Skip to content

Instantly share code, notes, and snippets.

@kraeml
Created June 10, 2025 05:08
Show Gist options
  • Select an option

  • Save kraeml/ea9b3797c82303396e430010465dc37a to your computer and use it in GitHub Desktop.

Select an option

Save kraeml/ea9b3797c82303396e430010465dc37a to your computer and use it in GitHub Desktop.
Zwei Controller teilen Aufgaben: Hauptcontroller komplex, Nebencontroller zeitkritisch, effizient, modular.

Dual-Controller-Architektur (Robotik)

Die Dual-Controller-Architektur ist ein Konstruktionsprinzip in der mobilen Robotik, bei dem zwei unterschiedliche Rechnereinheiten – meist ein leistungsfähiger Hauptcontroller und ein spezialisierter Nebencontroller – gemeinsam zur Steuerung eines Roboters eingesetzt werden. Dieses Konzept wird häufig verwendet, um die Vorteile verschiedener Hardwareplattformen zu kombinieren und sowohl rechenintensive als auch zeitkritische Aufgaben effizient zu bewältigen.


Aufbau und Komponenten

Eine typische Dual-Controller-Architektur besteht aus folgenden Elementen:

  • Hauptcontroller:
    Ein Einplatinencomputer oder Embedded-PC (z. B. auf Basis von ARM oder x86), der komplexe Aufgaben wie Bildverarbeitung, Navigation, künstliche Intelligenz und Kommunikation übernimmt. Häufig werden Betriebssysteme wie Linux mit Robotik-Frameworks (z. B. ROS2) eingesetzt.

  • Nebencontroller:
    Ein Mikrocontroller (z. B. ESP32, Arduino, STM32), der für zeitkritische Steuerungs- und Überwachungsaufgaben verantwortlich ist. Dazu zählen die Ansteuerung von Motoren, das Auslesen von Sensoren und die Durchführung von Regelungsalgorithmen.

  • Kommunikationsschnittstelle:
    Die beiden Controller sind meist über serielle Schnittstellen (z. B. UART, SPI, I²C) oder drahtlose Protokolle miteinander verbunden.

  • Sensorik und Aktorik:
    Sensoren wie Kameras, Lidar, Ultraschallsensoren und Encoder liefern Informationen über die Umgebung und den Zustand des Roboters. Aktoren, insbesondere Motoren, werden direkt oder indirekt vom Nebencontroller angesteuert.


Systemarchitektur und Aufgabenverteilung

Die Dual-Controller-Architektur zeichnet sich durch eine klare Aufgabenverteilung aus:

  • Hauptcontroller:

    • Verarbeitung großer Datenmengen (z. B. von Kameras oder Lidar)
    • Planung und Navigation
    • Benutzerinteraktion und Netzwerkkommunikation
    • Ausführung komplexer Softwarepakete und Algorithmen
  • Nebencontroller:

    • Motorsteuerung und Regelung
    • Erfassung und Vorverarbeitung von Sensordaten
    • Ausführung zeitkritischer und deterministischer Aufgaben

Die Kommunikation zwischen den Controllern erfolgt meist über definierte Protokolle und ermöglicht eine effiziente Zusammenarbeit.


Vorteile

  • Effizienz:
    Die Aufgabenteilung erlaubt eine optimale Nutzung der jeweiligen Hardwarefähigkeiten.
  • Zuverlässigkeit:
    Zeitkritische Steuerungen laufen unabhängig von potenziellen Verzögerungen im Hauptsystem.
  • Modularität:
    Komponenten können unabhängig voneinander entwickelt, getestet und ausgetauscht werden.
  • Skalierbarkeit:
    Die Architektur kann leicht an unterschiedliche Anforderungen angepasst werden.

Nachteile und Herausforderungen

  • Komplexität:
    Die Entwicklung und Wartung zweier unterschiedlicher Softwaresysteme erhöht den Aufwand.
  • Kommunikationsaufwand:
    Die Synchronisation und Fehlerbehandlung zwischen den Controllern erfordert sorgfältiges Design.
  • Ressourcenbedarf:
    Der Einsatz zusätzlicher Hardware kann Kosten und Energieverbrauch erhöhen.

Anwendungsgebiete

Dual-Controller-Architekturen finden sich in vielen mobilen Robotern, insbesondere in:

  • Forschungsplattformen
  • Lehrrobotern
  • autonomen Fahrzeugen
  • industriellen Servicerobotern

Literatur

  • Siciliano, B., Sciavicco, L., Villani, L., & Oriolo, G.: Robotics: Modelling, Planning and Control. Springer, 2010.
  • Quigley, M., Gerkey, B., & Smart, W. D.: Programming Robots with ROS. O’Reilly, 2015.

Kategorien

  • Kategorie:Robotik
  • Kategorie:Steuerungstechnik
  • Kategorie:Embedded Systems
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment