<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.eeros.org/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.eeros.org/feed.php">
        <title>Real-Time Robotics Framework getting_started:practical_problems</title>
        <description></description>
        <link>https://wiki.eeros.org/</link>
        <image rdf:resource="https://wiki.eeros.org/_media/favicon.ico" />
       <dc:date>2026-04-11T23:56:56+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/abort?rev=1708067775&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/add_saf_level?rev=1527765966&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/auto_switch?rev=1506263676&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/faults_cs?rev=1527771106&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/hidden_states?rev=1506263362&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/monitor?rev=1527760934&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/no_log?rev=1527766150&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/realtime?rev=1527756528&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/rem_unused_blocks?rev=1506263542&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/seq_endless?rev=1708069420&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/signal_checking?rev=1506263266&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.eeros.org/getting_started/practical_problems/start?rev=1523969686&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.eeros.org/_media/favicon.ico">
        <title>Real-Time Robotics Framework</title>
        <link>https://wiki.eeros.org/</link>
        <url>https://wiki.eeros.org/_media/favicon.ico</url>
    </image>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/abort?rev=1708067775&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-16T08:16:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Shutting down a System Properly</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/abort?rev=1708067775&amp;do=diff</link>
        <description>Shutting down a System Properly

How does a robot control system properly shut down? In general it does never stop. Pressing an emergency button might switch to a emergency safety level. From there it might restart again after certain steps are taken.</description>
    </item>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/add_saf_level?rev=1527765966&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-05-31T13:26:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Comparisons of Safety Level do not Work</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/add_saf_level?rev=1527765966&amp;do=diff</link>
        <description>Comparisons of Safety Level do not Work

If you compare the actual safety level to a given level and the the comparison seemingly yields wrong results, you should check if you added these levels to the safety system with addLevel. If you forget to add some levels the safety system cannot logically order them and comparisons do not properly work, see</description>
    </item>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/auto_switch?rev=1506263676&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-09-24T16:34:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Switch Block Switches Automatically</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/auto_switch?rev=1506263676&amp;do=diff</link>
        <description>Switch Block Switches Automatically

There are cases were a switch block has to switch to a certain input under given conditions. While it might be possible to use the safety system to check this condition it might be preferable if the switch block itself switches when a certain condition is met. To use the sequencer for this purpose is generally not advisable as realtime cannot be met there.</description>
    </item>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/faults_cs?rev=1527771106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-05-31T14:51:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Handle Faults in the Control System</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/faults_cs?rev=1527771106&amp;do=diff</link>
        <description>Handle Faults in the Control System

When a time domain runs, it can encounter two main obstacles. It could try to read from an unconnected input or it could try to write the value of nan to an output. If either of this happens a fault is thrown. Such a fault will cause the application to stop unless it is properly handled in the control system, e.g. by changing into a safe level, see</description>
    </item>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/hidden_states?rev=1506263362&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-09-24T16:29:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Avoid Hidden States in the Safety System</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/hidden_states?rev=1506263362&amp;do=diff</link>
        <description>Avoid Hidden States in the Safety System

It might be tempting to define elaborate actions in a certain safety level. However, in order to keep the safety system clean and simple avoid such practises. Do not define different states in a safety level. If you need to stay a certain amount of time in a safety level use the field</description>
    </item>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/monitor?rev=1527760934&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-05-31T12:02:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Determine the Realtime Performance of your Application</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/monitor?rev=1527760934&amp;do=diff</link>
        <description>Determine the Realtime Performance of your Application

It is of general interest to know whether your system fulfills your realtime requirements. As soon as a control system does not run reliably the question is in the room if your control algorithm has a bug or whether your underlying system does not perform as it is intended.</description>
    </item>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/no_log?rev=1527766150&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-05-31T13:29:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Log Messages not Visible</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/no_log?rev=1527766150&amp;do=diff</link>
        <description>Log Messages not Visible

The logger outputs messages onto the console or into a file only if the log level of the message is equal or higher than the log level of the logger, see Logging. Default level of any logger is INFO. TRACE messages will not show in this case.</description>
    </item>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/realtime?rev=1527756528&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-05-31T10:48:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Run Programs with Root Privileges</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/realtime?rev=1527756528&amp;do=diff</link>
        <description>Run Programs with Root Privileges

On a realtime system, you have to use root priviledges to run an application. This is for the fact that the Executor tries to change thread priorities and the scheduling principle to realtime characteristics. 

If you run your EEROS application without root priviledges you will get a warning that this change could not happen and your application will most probably violate your realtime criteria.</description>
    </item>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/rem_unused_blocks?rev=1506263542&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-09-24T16:32:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Remove Blocks when no longer used</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/rem_unused_blocks?rev=1506263542&amp;do=diff</link>
        <description>Remove Blocks when no longer used

Blocks have to be added to a time domain and will then be run by this. If you have blocks which are used only for a certain task such as initialization, you can remove them after this task has finished in order to safe processing power, see</description>
    </item>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/seq_endless?rev=1708069420&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-16T08:43:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Do not use Endless Loops in Sequences</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/seq_endless?rev=1708069420&amp;do=diff</link>
        <description>Do not use Endless Loops in Sequences

Though a sequence might run endlessly - or at least as long as a robot is powered - it should be avoided to write something like


public:
  int action() {
    while (true) step1();
  }


when defining the method action of the sequence. Due to some extraordinary condition such as a fault or stopping the application prematurely the sequence should stop as soon as the sequencer itself stops together with all its associated sequences. For this purpose the corr…</description>
    </item>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/signal_checking?rev=1506263266&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-09-24T16:27:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Trigger Safety Event from Control System</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/signal_checking?rev=1506263266&amp;do=diff</link>
        <description>Trigger Safety Event from Control System

It is not advisable to use the safety system to check signals of the control system. This causes unnecessary confusion and blows up the safety system. Rather insert a Signal Checker into your control system and let it trigger a safety event from there.</description>
    </item>
    <item rdf:about="https://wiki.eeros.org/getting_started/practical_problems/start?rev=1523969686&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-04-17T14:54:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Practical Problems</title>
        <link>https://wiki.eeros.org/getting_started/practical_problems/start?rev=1523969686&amp;do=diff</link>
        <description>Practical Problems

Every EEROS system consists of a control system, a safety system, and a sequencer. In order to guarantee maximum stability we strongly recommend that you adhere to a strict set of design rules as given below.

Do&#039;s

	*  Trigger Safety Event from Control System
	*  Remove Blocks when no longer used
	*</description>
    </item>
</rdf:RDF>
