You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This significantly simplifies real-time robotics application development with ROS 2.
144
+
145
+
[ros2]: https://ros.org/
146
+
147
+
### Real-time-safe inter-thread communication
148
+
149
+
Passing messages between real-time and non-real-time threads is very common use
150
+
case in real-time applications. Yet, it is quite difficult to do this in a
151
+
real-time-safe manner. The simplest method, `std::mutex` is not even usable due
152
+
to [priority inversion](https://en.wikipedia.org/wiki/Priority_inversion).
153
+
cactus-rt solves this with a few different (yet non-exhaustive) approaches:
154
+
155
+
- The inclusion of `cactus_rt::mutex` which is a mutex that respects priority inheritance.
156
+
- Lockless data structures that allows for a single value to be shared between a
157
+
single non-real-time and a single real-time-thread under
158
+
`cactus_rt::experimental::lockless`.
159
+
- Some of these algorithms are developed by [Dave Rowland and Fabien Renn-Giles](https://www.youtube.com/watch?v=PoZAo2Vikbo). We also formally analyzed these algorithms with [TLA+](tla) which gives high confidence of their correctness.
160
+
161
+
Further, cactus-rt extensively uses and therefore links to
which is a SPSC lockless, allocation-free queue. This can also solve a number of
164
+
communication problems.
165
+
166
+
The integration of inter-thread communication APIs is designed to make life
167
+
easier as then developers no longer have to manually implement or include
168
+
libraries that do the same thing.
169
+
170
+
### Others and future work
171
+
172
+
There are some other utilities in cactus-rt other than the above, and there are always more ideas to allow for simpler real-time application development.
173
+
28
174
29
175
Examples
30
176
--------
@@ -156,7 +302,7 @@ compile your app in release mode.
156
302
LICENSE
157
303
-------
158
304
159
-
Open source projects and some commercial projects can use [MPL 2.0](https://www.mozilla.org/MPL/2.0/).
305
+
Open source projects and some commercial projects can use [MPL 2.0](https://www.mozilla.org/MPL/2.0/). Please note the license's section 6 and 7 where it is noted that the software is provided "as is" and is not liable for any damages (the license text supersedes this excerpt).
160
306
161
307
If you need commercial, closed-sourced modifications, please obtain a license from [Cactus Dynamics](https://cactusdynamics.com).
0 commit comments