Luos is a simple and lightweight distributed operating system dedicated to embedded systems enabling microservices architecture for electronics. It's a powerful tool using modularity to simplify and link any hardware component or application code together as a single system image.
This guide contains all the basic notions you will need to use, create and understand Luos technology.
Luos is a low-level software technology uploaded into every board's (nodeHardware element (MCU) hosting and running Luos and hosting one or several modules.) of a device. You can use Luos as a bare metal lib or as a driver into your embedded OS.
Luos is composed as well of code subdivisions called modulesSoftware element run by Luos that can communicate with other modules. Can be driver or app.. Modules are distributed into every nodes in a network.
A node is a physical component (hardware) running Luos and hosting one or several modules. In a Luos network, nodes are all connected together using RobusCore communication bus used by Luos to detect and communicate with modules in a network., the Luos communication technology.
In other words, a node is a microcontroler connected to other microcontrolers running Luos. In the Luos philosophy, each node has to carry the necessary programs (modules) allowing it to manage its boards and features.
Nodes can have capacities such as measuring the core temperature, sending the processor's unique ID or input voltage. A node's capacities are commonly shared by all the modules hosted into it and are accessible through each of them.
A module is a block of code which is able to communicate with any other modules through the Luos network. Each module provides an API allowing to manage a motor, handle a laser range finder, or compute an inverse-kinematics, for example. Each module is hosted in a single node, but a node can handle several modules at the same time and manage communication between them and between other modules hosted in other nodes, using the same interface.
For example, the Dynamixel board provided by Luos can dynamically create and manage Dynamixel modules depending on the number of Dynamixel motors linked to it. Any Dynamixel modules can get or set values to other Dynamixel modules on the same node or to any other modules in any other nodes in the network.
All modules can share and receive datas using messages.
A routing table is a "service" managed by the Luos network and available for any modules in any nodes. This service lists all the modules and allows to any modules to get and use basic information of any other modules. The routing table's data can be loaded or auto-generated during detection.
The module detection assigns IDs to modules depending on their node's physical position in the network, and generates a routing table.
IDs are assigned from the nearest to the furthest node branch by branch, from the point of view of the module running the detection. Following this logic, the module running the detection will have the ID 1, the next one will have the ID 2, etc.
Note: Multiple detection by different modules at the same time is not allowed.
It's possible to detect the network frequently in order to dynamically discover included or excluded modules while running. Go to Routing table page for more informations.