Replies: 2 comments 3 replies
-
|
I'm pretty much fine with points 2, 3, and 4 as they seem to be minor. Point 1 appears to be somewhat more critical as it looks breaking from YARP-3.5 to any YARP-3.x with x<5 in case The condition YARP-3.5 -> YARP-3.x is not unusual as it happens when a user keeps his PC updated and connects it to the robot, which instead tends to receive updates less often. No clue about the likelihood of cc @traversaro |
Beta Was this translation helpful? Give feedback.
-
PS (unrelated) I think http://www.yarp.it/ has not been updated in a while. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello all,
while writing the NWC/NWS for the cameras, we hit a few issues, and we are now considering a few breaking changes in the Image/Camera interfaces and I'd like to discuss this before we do the changes.
Currently, the
topIsLowinformation is not forwarded on the network. This is a bug, and it implies that it is not possible to have this information on the NWC. This information should be sent together with theImageNetworkHeaderwhich is written in a binary mode, usingappendBlock/expectBlock, assuming that the length of the block is the size of the structure. I was originally going to propose to change the size of this structure, but this would break the protocol compatibility between YARP 3.4 and 3.5. Instead, I realized that there are a few fields that are "oversized" for what they transport, and we just need to add a boolean somewhere. For example thequantumfield is a 32 bit integer (little endian), and we can resize it to a 16 bit integer, and add thetopIsLowinformation in the 16 bit saved by this. This would ensure compatibility, but we just have to pay a little attention, because the 2 bytes below are zeros, and the default for topIsLow istrue. The only problem will rise if an image is sent from YARP 3.5, and received from YARP 3.4. In this case, if any bit of thetopIsLowfield is set, thequantumwill be wrong on the receiving side. I propose to fix this with a patch in the YARP 3.4 branch (and probably an extra release). In this way you won't have the issue if you are using the latest 3.4 release.In the
IFrameGrabberImageinterface, I would like to change thegetImageCropto passverticesby reference instead of by value. This shouldn't be a big issue for anyone, unless someone is implementing this method outside YARP:In the
IFrameGrabberImageinterface, I would like to make thegetImageandgetImageCropmethodsconst. This is a bit more complicated, because it also implies that wherever this interface is used, it does not modify the internal state, and probably this is not the case in a few places.The
remote_grabber/grabberDualnetwork protocol for theIFrameGrabberImageinterface, currently implements onlygetImageCrop. The reply to this call returns[VOCAB_CROP] [VOCAB_IS] <width> <height> <raw image as pointer>. This information is not enough be sure to properly restore the image. In the NWC/NWS, I'm planning to change this to[VOCAB_CROP] [VOCAB_IS] <properly serialized image>. This will break the compatibility between NWC andgrabberDual, and betweenremote_grabberand NWS, but only for thisgetImageCropmethod, everything else would be fine.What do you think of these changes? Do you think we should wait for one (or more) of these changes?
CC @lornat75 @randaz81 @traversaro @pattacini @vtikha @Nicogene @triccyx @ste93 @elandini84 @S-Dafarra @PeterBowman
Beta Was this translation helpful? Give feedback.
All reactions