You might wonder how precise the periodic execution of your safety system and control system is. Keep in mind that EEROS will run on systems with or without realtime capabilities. However, the latencies will greatly affect the precision of the periodic execution of the threads running the safety and control system.
In the EEROS library you will find a directory with examples. For this example see rtTest.cpp.
All examples using the executor will have to change thread priorities to make them realtime capable. You could run these examples with sudo, but it is preferable to give your current user the privilege to change scheduling parameters. Running with sudo can cause issues when using ROS2 and is not recommended due to security reasons. Edit the file /etc/security/limits.conf (on Ubuntu) and add the following lines:
your_username soft rtprio 99 your_username hard rtprio 99 your_username soft memlock unlimited your_username hard memlock unlimited
Log out and log back in in order for the changes to take effect.
Open a shell in the build directory of your EEROS library and run rtTest. This examples does:
You can start the program with the option -s passing a number of seconds after which the program stops.
$ ./examples/rtTest/rtTest -s 60 // run for a minute
The program will print out the cumulative runtime measurements of
once per second. A typical result would be:
2016-11-30 08:55:09 I: ss: period max: 0.00105021 period min: 0.000949614 period mean: 0.000999999
The maximum period during the runtime of the program was 1.050ms, the minimum period was 0.950ms. This figures will vary depending on your platform and operating system support. For a real-life test try to run other programs concurrently. E.g.
$ dd if=/dev/zero of=/dev/null // gives full 100% load with low priority