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.
-
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
topIsLow
information 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 theImageNetworkHeader
which 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 thequantum
field is a 32 bit integer (little endian), and we can resize it to a 16 bit integer, and add thetopIsLow
information 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 thetopIsLow
field is set, thequantum
will 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
IFrameGrabberImage
interface, I would like to change thegetImageCrop
to passvertices
by reference instead of by value. This shouldn't be a big issue for anyone, unless someone is implementing this method outside YARP:In the
IFrameGrabberImage
interface, I would like to make thegetImage
andgetImageCrop
methodsconst
. 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
/grabberDual
network protocol for theIFrameGrabberImage
interface, 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_grabber
and NWS, but only for thisgetImageCrop
method, 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