-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve device option docs, promote use of --verbose #49
Comments
Looks good! I'm going to be touching |
How to make this work on RF modules (e.g. transCoords app): int main()
{
MyMonitor monitor; // implements yarp::os::SearchMonitor
yarp::os::ResourceFinder rf;
// tweak 'rf', e.g. set default context and so on
rf.setMonitor(&monitor, "transCoords");
roboticslab::TransCoords mod;
mod.configure(rf); // check return value!
// at this point, retrieve options stored in 'monitor' and
// print them on stdout if --verbose was passed on
return mod.runModule(); // no need to configure again
} We'll need a class that implements |
Thanks a lot for this info! Always loved the behavior, but found the intrinsics quite cryptic, especially for modules. |
Bad thing is, YARP should have already provided an implementation, otherwise we are forced to write a tiny library only for this and replicate the same code in several places... This is what |
Maybe we could develop some kind of helper class that could be PR'ed directly into YARP? |
Sure, the sooner the better. I'm afraid of those |
Speaking of the yarp::os::Searchable class (see inheritance diagram, it has several implementations), prefer bool check(const ConstString &key, const ConstString &comment) const;
Bottle findGroup(const ConstString &key, const ConstString &comment) const; instead of check(const ConstString &key) const;
Bottle findGroup(const ConstString &key) const; The former generate a report that may be used by the monitor in verbose mode. Also, the following are available: bool check(const ConstString &key, Value *&result, const ConstString &comment="") const;
Value check(const ConstString &key, const Value &fallback, const ConstString &comment="") const; |
I'm going to list here all repos that have been improved by providing or expanding on option documentation (now passing appropriate defaults and description in
|
Thanks a lot for this! |
Sometimes, device options hide each other, like this: if (config.check("optionA"))
{
yarp::os::Value v = config.check("optionB", yarp::os::Value(MY_DEFAULT));
} The check for |
Or, since I like simplicity: if (config.check("optionA", "enables A (and additional options)"))
{
// ...
} Thus, users would be aware of the existence of hidden options (and how to enable them). |
Custom devices wrapped by |
Related upstream PR regarding |
All set but openrave-yarp-plugins. @jgvictores I'd really appreciate if you could take a look at existing device options and review/fill their description fields :) (low priority). |
Okay, it'll take a while, but I will find a moment to do it! |
yarp-devices still WIP due to roboticslab-uc3m/yarp-devices#175, marking as blocked. |
Note to self: use simpler unit notation and replace parens with square brackets. Example: |
- Document checks on YARP Searchable objects - Also Open of OpenRAVE - Origin: roboticslab-uc3m/questions-and-answers#49
Added some documentation on ORYP at roboticslab-uc3m/openrave-yarp-plugins@e0adfbc |
Applied to |
I'd rather close roboticslab-uc3m/yarp-devices#175 and track that bug here. To sum up, |
There is no simple way to sort this out on the upstream side without proposing a breaking change of the (undocumented) On our end, the CanBusControlboard device might hold a vector of |
IMHO, a big issue is too much being done on the CanbusControlboard. Things such as home should be done within Technosoft open or new method which is involved for all devices and each one implements their behavior via polymorphism. The only special case where I introduced the original ugly hackish code was connecting the CuiAbsolute to the TechnosoftIpos, but that (apart from different) could be done better. |
Merged into YARP's |
This issue has been stalled for too long, therefore...
I changed my mind (again) and opened roboticslab-uc3m/yarp-devices#207, in the only repo affected by said bug. The list #49 (comment) is done except for a few undocumented config options in openrave-yarp-plugins. @jgvictores could you please take a look? Apart from that, I need to check whether any new devices that have been added in the past year conform to these new standards. One last question: is the behavior of Regarding RFModule: either open an issue upstream considering #49 (comment), or forget. |
I have that repo pretty abandoned, but I'll take a look. Specifically, I had done advances on roboticslab-uc3m/openrave-yarp-plugins#82, raised its priority to get done with it.
My intuition behind |
There is not much to do at or-yp, anyway, just a few undocumented occurrences of
It's a pity we don't know the outcome of robotology/yarp#1473. Some thoughts:
|
To sum up:
Closing due to inactivity/too broad a scope/lack of interest on tedious subtasks. |
The
yarpdev
utility suggests using a--verbose
CLI parameter in order to list all available options, their description, default value, etc. This comes in handy when working with our own devices, which undergo frequent changes in their usage (or, simply put, are barely or not documented at all). Traditionally, we introduced the--help
parameter, but it's hard to maintain (needs hardcoding plus some care to keep it up to date).YARP offers its own mechanisms for such tasks, tightly bound to the
yarp::dev::PolyDriver
class: theYarpDevMonitor
utility (not shown in Doxygen generated docs nor even exported, check PolyDriver.cpp). Such instance is created by allPolyDriver
objects and can be propagated to subdevices (either wrapped devices, or devices opened by other devices in theirDeviceDriver::open
method). Example:Try this via
yarpdev --device ...
with and without--verbose
. Example:Some thoughts:
--help
actually made the device stop and exit (but remember:std::exit
is evil)check
calls and add missing comments/defaultsyarpdev
, but we'll surely want to achieve the same results with RF modulesThe text was updated successfully, but these errors were encountered: