Komponenten

 

helyOS® Core
 

Der helyOS® Core, bestehend aus einer Postgres-Datenbank und einem NodeJs Server, ist ein sofort einsatzbereites Backend für Anwendungen in der Betriebshofautomatisierung. Er ist die Hauptkomponente des Frameworks und umschließt die Geschäftslogik sowie die Orchestrierung der Dienste und Aufgaben. Der helyOS® Core hat sechs Aufgaben:

 

  1. Automatisierte Konfiguration des RabbitMQ Servers, der als Message Broker zum Einsatz kommt.
  2. Authentifizierung der Anwendungen, die mit dem Hofautomatisierungssystem verbunden werden.
  3. Erhebung der Betriebshofdaten (Hindernisse, Karte, IDs und Positionen der Agenten, etc.).
  4. Bereitstellung einer API-Schnittstelle für externe Anwendungen zur Erstellung von Missionen, zum Senden von Nachrichten an den Agenten und zum Aufruf der Betriebshofdaten.
  5. Orchestrierung der Missionsaufgaben, die den Agenten via RabbitMQ zugesendet werden. Es ist wichtig zu betonen, dass die »Orchestrierung« die Reservierung/Freigabe der Agenten sowie die geordnete Zuweisung von Aufgaben an die einzelnen Agenten beinhaltet.
  6. Orchestrierung der Microservices, die für die Berechnung der Daten in den einzelnen Aufgaben verwendet werden.

 

Der helyOS® Core überträgt und empfängt Nachrichten über einen RabbitMQ Server. Die Konfiguration des RabbitMQ Servers wird automatisch durch den helyOS® Core ausgeführt und beinhaltet auch die Registrierung neuer Agenten. Der RabbitMQ Server ist zuständig für die Authntifizierung der vernetzten Agenten.

Microservices

 

Der Begriff »Microservice« bezieht sich auf die »Microservice-Architektur«. Bei dem Microservice-Ansatz werden die Softwarefunktionen durch kleine, unabhängige Dienste gewährleistet. Dadurch wird die Entkopplung maximiert und die weiterentwicklung spezieller Domänen erleichtert.

Die Vorteile der Verwendung einer Microservice-Architektur sind vielfältig:

Skalierbarkeit: Microservices erlauben eine horizontale Skalierbarkeit. Das bedeutet, dass jeder Dienst unabhängig von den anderen und auf Grundlage seiner eigenen speziellen Anforderungen skaliert werden kann.

Modularität und Wartungsfreundlichkeit: Da jeder Microservice sich auf ein anderes Gebiet der Business Capability konzentriert, wird das Gesamtsystem modular und einfacher zu warten.

Fehlerisolation: Durch die Einteilung des Systems in kleinere, unabhängige Dienste treten Fehler und Konflikte isoliert auf und beeinträchtigen nicht das Gesamtsystem.

Heterogenität der Technologien: Microservices erlauben die Verwendung verschiedener Technologien und Programmiersprachen für die unterschiedlichen Dienste. Dadurch ist es möglich, die am besten geeigneten Tools und Technologien individuell für jeden Dienst auszuwählen, anstatt an nur eine Technologieplattform gebunden zu sein.

Verbesserte Teamautonomie: Jeder Microservice kann von einem eigenen Team weiterentwickelt und gewartet werden, was die Existenz kleiner, spezialiserter Teams innerhalb einer Organisation begünstigt.

Einfache Integration: Microservices kommunizieren miteinander über klar definierte APIs, wodurch es einfacher wird, sie mit anderen Diensten oder Systemen von Drittanbietern zu integrieren. Dieser Aspekt erleichtert den Innovationsprozess, die Interoperabilität und die Unterstützung externer Dienste.

Externe Anwendungen
 

Als externe Anwendungen werden alle Anwendungen oder Module bezeichnet, die mit dem helyOS® Core über HTTP und das Web Socket Protocol interagieren. Die Kommunikation verwendet die GraphQL-API, die Programmierer mit der komplette Kontrolle über die Anwendungsdaten ausstattet. Das bedeutet, dass die Programmierer mühelos auf Daten zugreifen und diese verändern können, sodass sie präzide den Anforderungen ihrer Anwendungen entsprechen.

Sie können die helyOS®-Datenbank durchsuchen, Missionen anfordern oder abbrechen, sowie Agenten, Ressourcen und Krateninformationen managen.

Externe Anwendungen können z. B. Benutzerschnittstellen sein, oder auch Schnittstellen zu größeren Management- oder Logistiksystemen.

Erfahren Sie hier mehr: https://helyos-manual.readthedocs.io/en/latest/3-helyos-and-client-apps/application-accounts.html

JavaScript-SDK
 

Web-Applikationen sind eine besondere Kategorie innerhalb der externen Anwendungen und normalerweise in JavaScript geschrieben. Um die Programmierung dieser Apps zu beschleunigen, können Frontend-Programmierer unsere JavaScript-SDK, helyosjs_sdk, verwenden. Sie verpackt die gängigsten GraphQL-Kommandos in komfortable TypeScript-Modellklassen und CRUD-Funktionen (erstellen, lesen, updaten, löschen).  


Install:

$ npm i helyosjs-sdk  --save

 

Quellcode: https://github.com/helyOSFramework/helyos_agent_sdk

Dokumentation: https://github.com/helyOSFramework/helyos-javascript-sdk

Agenten (Fahrzeuge und Sensoren)
 

Das helyOS®-Framework hat eine sehr breite Auffassung von Agenten. Im Prinzip ist jedes Gerät oder Software-Modul, das mit dem helyOS® Core über RabbitMQ und das MQTT- oder AMQP-Protokoll kommuniziert, ein Agent.

Das können z. B. Sensoren sein, die lediglich Daten weitergeben, oder auch Einheiten, die Aufgaben und Kommandos empfangen, wie Fahrzeuge, Kameras, Ampeln, usw. Eine weitere wichtige Kategorie von Agenten ist die der Smart Control Units. Dies bezeichnet Software-Module, die Missionen anfordern oder Kommandos geben können, mit denen sie andere Agenten in der Ausführung ihrer Aufgaben unterstützen. 

Erfahren Sie hier mehr: https://helyos-manual.readthedocs.io/en/latest/5-communication-between-helyos-and-agents/5-index.html

Agent-SDK
 

The Python-Paket mit dem Namen helyos-agent-sdk enthält Methoden und Datenstrukturdefinitionen, die die Verbindung zum helyOS® Core über RabbitMQ erleichtern.

 

Eigenschaften

  • RabbitMQ-Client zur Kommunikation mit helyOS®
  • AMQP- und MQTT-Protokoll
  • SSL-Verbindung
  • Definitionen der Agenten- und Aufgabenstatus
  • einfacher Zugang zu helyOS®-Aufgaben via Callbacks
  • Verschlüsselung auf Anwendungsebene


Install:

pip install helyos_agent_sdk

 

Quellcode: https://github.com/helyOSFramework/helyos_agent_sdk

Dokumentation: https://fraunhoferivi.github.io/helyOS-agent-sdk/build/html/index.html

ROS wrapper
 

Das Python-Paket mit dem Namen helyos_agent_ros_wrapper eröffnet eine Schnittstelle zu helyos_agent_sdk, die die Integration von ROS-Agenten erleichtert.

In Verbindung mit dem helyos_agent_sdk-Paket ermöglicht der ROS-Wrapper die nahtlose Vernetzung und Interaktion zwischen ROS und dem Message Broker RabbitMQ. Er verknüpft die ROS Topic Channels mit den passenden RabbitMQ-Weiterleitungen gemäß den von helyOS® vorgegebenen Definitionen.

 

Anwendungsbeispiel:

rosrun helyos_agent_ros_wrapper helyos_agent_ros_wrapper [param_name]:=[new_value]