Frequently Asked Questions
- Are there any functions to deal with angle conversions and that kind of operations?
- What happens when two agents access reciprocaly the remote repository?
- Which is the overhead of OpenRDK when accessing to the repositoy?
- Is it possible to have OpenRDK in real-time??
- Is there any template to write new RDataTypes??
- How can I write console messages using the fancy colored format of OpenRDK?
- Why OpenRDK??, why not ORCA, Player ...
- Does it work on MacOS?
- Does it work on Windows?
- Please explain the relationship between world reference system and metric grid maps (
- I correctly installed OpenRDK on MacOSX, but
rconsoleqt does not pop up any window
Are there any functions to deal with angle conversions and that kind of operations?
There are many functions for angles! and for point transformation, quaternions, etc. You can find them in
You are encouraged to use them (especially
angNorm* functions), in order to have consistency in your code.
What happens when two agents access reciprocally the remote repository?
You mean what happens at run-time if two agents have properties linked like this:
If you run first
agentA, it will say "Property not set" when it tries to read
rdk://agentB/moduleB/out/pipo; the same will happen if you run first
agentB. Is there anyway to make wait that all the agents have already started?
Actually, this does not seem to be a problem: if you run something that needs something else that is still not available, the first agent simply waits. "Waits" means that in the beginning there will be some Exception thrown, until everything is up and running.
Which is the overhead of OpenRDK when accessing to the repositoy?
The overhead when accessing OpenRDK repository is mainly two things:
- find a string in an ordered list of strings, i.e., O(log(n)) (but string comparisons on modern computers are very fast);
- wait on a mutex: this, of course, depends upon who is locking that mutex (i.e., using that property) and how long does it take to release it (but it's module overhead, not OpenRDK overhead).
This is actually a very short overhead, with respect to its benefits. Anyway, my advice is to get all properties/parameters in the beginning of the
exec function, just to avoid unnecessary computation and locking/unlocking.
Is it possible to have OpenRDK in real-time??
NO. Or, at least, not yet (someone is working on this). Anyway, it depends upon what you mean with "real-time"... do you have any modules that need to be run at more than 30Hz ?? and, more important: how do you think to deal with concurrency (i.e., mutex locking) ?
Is there any template to write new RDataTypes??
Unfortunately there is not... anyway you can copy and edit
libraries/rdk2/rprimitive/rstring.h). We are working in doing a template and a bash script to create directory,
CMakeLists.txt and files.
How can I write console messages using the fancy colored format of OpenRDK?
You should use the logging macros provided by
RDK_DEBUG_STREAM, etc. There is a tutorial page about this topic.
Why OpenRDK??, why not ORCA, Player ...
Why C++ and not Java, Python or Ruby? There is not a final answer (otherwise, everybody should use the same language).
OpenRDK has some unique features that are not "the best", but we feel comfortable with them. Some comparisons:
- ORCA uses processes: sharing maps or images among processes is not so fast, if you do not use a shared memory (and ORCA doesn't)
- OROCOS is much more into real-time issues: but you need a deep understanding in what a real-time application is, how to use it, how to assure that your functions follow real-time constraints, and so on; with OpenRDK you just write some code in a thread: fast enough for 99% of applications
- Player/Stage: have you tried to write a module INSIDE the player process? OpenRDK has FULL support to multi-threading/concurrency
- Microsoft Robotics Studio: are you kidding? :-D
OpenRDK is not the best solution for all problems... but we like it!
Does it work on MacOS?
YES it does. OpenRDK compiles and both RAgent and RConsole can be run on it. You can look for detailed instructions about how to build and install OpenRDK on a MacOS. Anyway, OpenRDK will receive few support on MacOS, most part of the support will concentrate on Linux distributions.
MacOS supported versions are Tiger (10.4) and Leopard (10.5).
Does it work on Windows?
Short answer: NO. Long answer: OpenRDK can compile and an RAgent can run on Cygwin framework on a Windows machine. You can look for detailed instructions about how to build and install OpenRDK on Cygwin. Anyway, OpenRDK is not designed for Windows systems, so you should avoid to use it under Windows/Cygwin unless you do not have any different choice.
RConsole on Windows/Cygwin is not supported.
Please explain the relationship between world reference system and metric grid maps (
See the paragraph "OpenRDK reference system" in Conventions and coding style section.
I correctly installed OpenRDK on MacOSX, but
rconsoleqt does not pop up any window
The answer is: did you launch Apple's X11 environment? Remember that, under MacOSX,
rconsoleqt must be executed using the X11's shell and NOT using the Apple's Terminal.