User Tools

Site Tools


getting_started:overview

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
getting_started:overview [2015/09/23 15:47] – created grafgetting_started:overview [2021/04/01 14:04] (current) – [Hardware Abstraction Layer (HAL)] jonasfrei
Line 1: Line 1:
-====== Getting started ====== +====== Get An Overview of EEROS ======
- +
-Learn about various concepts, subsystems and a technical overview of EEROS, the Easy, Elegent, Reliable, Open and Safe Real-Time Robotics Framework. +
- +
-===== Get An Overview of EEROS =====+
  
 Robots are starting to be used in applications in which traditional industrial robot controls are not suitable. These applications require simple, manageable, reliable and safe control systems, which are more open, flexible and expandable than those of current industrial robots. EEROS implements industry-ready open source robotics software, which offers the flexibility of a universal and open platform, while remaining safe and easy to use. Robots are starting to be used in applications in which traditional industrial robot controls are not suitable. These applications require simple, manageable, reliable and safe control systems, which are more open, flexible and expandable than those of current industrial robots. EEROS implements industry-ready open source robotics software, which offers the flexibility of a universal and open platform, while remaining safe and easy to use.
  
-==== Concept ==== +===== Concept =====
 The EEROS architecture consists of three distinct yet closely coupled subsystems:  The EEROS architecture consists of three distinct yet closely coupled subsystems: 
  
Line 23: Line 18:
 The safety system is designed as a series of hierarchical security levels. It monitors critical inputs and outputs and ensures, for example, that a fall back to the safety level "Emergency" leads immediately and reliably to stopping the robot, no matter who or what invoked the emergency event. The safety system is designed as a series of hierarchical security levels. It monitors critical inputs and outputs and ensures, for example, that a fall back to the safety level "Emergency" leads immediately and reliably to stopping the robot, no matter who or what invoked the emergency event.
  
-{{ eeros-architecture.png?600 |}}+[{{ architecture.png?600 | // EEROS architecture//}}]
  
 It can be easily and clearly seen how the control engineer is supported by the structure of the framework. It reminds him of what needs to be initialized and defined and keeps a clear vision of the overall system. It can be easily and clearly seen how the control engineer is supported by the structure of the framework. It reminds him of what needs to be initialized and defined and keeps a clear vision of the overall system.
  
  
-==== Subsystems ====+===== Subsystems =====
  
-=== Control System ===+==== Control System ====
  
 The robot controller, defined in EEROS as the control system, is the real-time core of the application. In order to guarantee the modular and exchangeable nature of the software system, it is built from predefined blocks, which can alter the signals flowing through the blocks. Nesting and ordering of these blocks creates very clear hierarchical structures. Blocks can be assigned to real- or non-real-time domains. Additionally, all signals in EEROS have a standard set of information, which increases the semantics of this information.  The robot controller, defined in EEROS as the control system, is the real-time core of the application. In order to guarantee the modular and exchangeable nature of the software system, it is built from predefined blocks, which can alter the signals flowing through the blocks. Nesting and ordering of these blocks creates very clear hierarchical structures. Blocks can be assigned to real- or non-real-time domains. Additionally, all signals in EEROS have a standard set of information, which increases the semantics of this information. 
  
-Learn more about the control system [[:eeros_architecture:control_system:start |here]].+[[:eeros_architecture:control_system:start |Learn more about the control system]].
  
-{{ :eeros_architecture:control_system:signalfluss_1.jpg?600 |}}+[{{ :eeros_architecture:control_system:controlloopwithtwotimedomains.png?600 | //The control system is built from blocks running in time domains// }}]
  
-=== Safety System ===+==== Safety System ====
  
 Each system running EEROS contains exactly one safety system. The safety system has a predefined structure. It uses a system of safety levels to determine the 'safety' of the system, and the robots movements (outputs) are dependent on how safe the system currently is.   Each system running EEROS contains exactly one safety system. The safety system has a predefined structure. It uses a system of safety levels to determine the 'safety' of the system, and the robots movements (outputs) are dependent on how safe the system currently is.  
Line 44: Line 39:
 Each level reads the states from all safety-critical inputs and defines the states of all safety-critical outputs. There are no actions allowed during a transition between two safety levels, since this would be a hidden transition state. The safety system is functional from the very beginning of the development of a new robot control system. This ensures that no dangerous condition can arise even when a system is set up. Each level reads the states from all safety-critical inputs and defines the states of all safety-critical outputs. There are no actions allowed during a transition between two safety levels, since this would be a hidden transition state. The safety system is functional from the very beginning of the development of a new robot control system. This ensures that no dangerous condition can arise even when a system is set up.
  
-Learn more about the safety system [[:eeros_architecture:safety_system:start |here]].+[[:eeros_architecture:safety_system:start |Learn more about the safety system]].
  
-=== Sequencer ===+==== Sequencer ====
  
 Since robots have to execute a series of user-defined tasks, an additional component is needed. It can also be non-real-time, but it has to ensure the sequential execution of the tasks and has to be able to handle any possible exceptions. Since robots have to execute a series of user-defined tasks, an additional component is needed. It can also be non-real-time, but it has to ensure the sequential execution of the tasks and has to be able to handle any possible exceptions.
Line 52: Line 47:
 The robot's motions are defined as sequence of steps. The sequencer, which is an integral part of the EEROS Framework, has to be assigned one main sequence. Additionally, several subsequences may be defined and added to the sequencer. Each sequence may include many single steps which must run to completion (unless interrupted by the safety system). The robot's motions are defined as sequence of steps. The sequencer, which is an integral part of the EEROS Framework, has to be assigned one main sequence. Additionally, several subsequences may be defined and added to the sequencer. Each sequence may include many single steps which must run to completion (unless interrupted by the safety system).
  
-Learn more about the sequencer [[:eeros_architecture:sequencer:start |here]]. +[[:eeros_architecture:sequencer:start |Learn more about the sequencer]].
- +
-=== Hardware Abstraction Layer (HAL)=== +
- +
-The HAL provides an interface between the program and the robot. Any command in the program must pass through the HAL in order to be carried out. Additionally, any inputs from sensors have to use the HAL to interact with the program.  +
- +
-<box 100% green> +
-The safety system and the HAL are strongly coupled together. Make sure that all inputs and outputs in the HAL are handled by the safety system. +
-</box>+
  
-== Getting the HAL == +==== Hardware Abstraction Layer (HAL)====
-<code c> +
-  HAL& hal = HAL::instance()+
-</code>+
  
-== Inputs and Outputs == +The HAL provides an interface between the program and the robot. Any command in the program must pass through the HAL in order to be carried out. Additionally, any inputs from sensors have to use the HAL to interact with the programIn order to make eeros platform independent and runnable on any hardware systemconfiguration file is used to describe the physical properties of the inputs and outputs. Such an in- or output could be connected through a plethora of busses such as PCIe, SPI or EtherCAT.
-All input and output should be observed by the safety systemThe safety system decides if a in- or output can be applied or not+
  
-  * Define inputs and outputs: +[[eeros_architecture:hal:start|Learn more about the Hardware Abstraction Layer]].
-To access the digital I/O hardware within the comedi framework, you have to define the inputs and outputs and add them to the HAL. +
-<code c> +
-  ComediDevice* comedi0 = new ComediDevice("/dev/comedi0"); +
-  ComediDevice* comedi1 = new ComediDevice("/dev/comedi1"); +
-   +
-  hal.addSystemInput(new ComediFqd("q0", comedi0, 11, 8, 10, 9, 6.28318530718 / (4 * 4096.0), 0, 0));   +
-  hal.addSystemOutput(new ComediDigOut("watchdog", comedi1, 2, 22)); +
-  hal.addSystemOutput(new ComediDigOut("enable0", comedi0, 2, 24)); +
-  hal.addSystemOutput(new ComediDigOut("brake0", comedi1, 2, 4, true)); +
-</code>+
  
-  * **Note:** The class //SystemInput<T>// and //SystemOutput<T>// are template classes. If you define a input or an output as boolean or double, it should really be a boolean (on or off) or a double (e.g. voltage) on the hardware.  
  
  
Line 88: Line 60:
  
 To start working with EEROS, take a look at the tutorials:  To start working with EEROS, take a look at the tutorials: 
-[[getting_started:tutorials|EEROS Tutorials]]+[[getting_started:tutorials:start|EEROS Tutorials]]
  
getting_started/overview.1443016056.txt.gz · Last modified: 2015/09/23 15:47 by graf