-
Notifications
You must be signed in to change notification settings - Fork 62
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
Messages (and svcs and action goals) larger than a certain size seem to 'disappear' #143
Comments
And just to give it the visibility it deserves, @pablogs9's micro-ROS/rmw_microxrcedds#258 (comment) on micro-ROS/rmw_microxrcedds#258:
|
Friendly ping. Would you already have some idea on how to address:
perhaps? It's more than logical a resource constraint device is resource constrained, but without a way to detect messages which are too large don't get transferred, making robust applications is rather difficult. |
Sorry @gavanderhoorn we do not have enough bandwidth for looking at this. I'll keep it open and check it later. |
As a data point (perhaps as input for prioritising): a Micro-ROS application doesn't have (complete) control over the sizes of messages potential ROS 2 publishers/clients send it. IIUC, right now, messages which are too large will disappear, without the sending entity being notified of this. The best we can do is to ask users to "not send messages which are 'too large'". This makes it a rather brittle setup, as users are bound to send messages which are "too large" sooner or later (even if by mistake).
|
This tweak is for sending from the client to the agent payloads bigger than 64 kB, not for receiving them. |
Ah, ok. Could the same tweak be used in the other direction? |
Not really, because it relies on dynamic memory on the agent side to store an arbitrary amount of fragments. We cannot do such a thing on the client-side... |
Could making clients responsible for allocating memory and then registering that buffer with the RMW be an option? Would remove the responsibility from the XRCE-DDS Client library. This might only delay the problem described in the OP and your #143 (comment), but could allow for messages larger than the 16-bit limit if I understand you correctly? |
That should be possible but implies rearchitecting Micro XRCE-DDS Client |
Describe the bug
Agents do not appear to forward messages coming in from the "ROS 2 side" that are larger than a certain size.
Increasing the verboseness of the Agent, DDS messages with
len: 67776
for instance just disappear. There are no warnings or errors printed by the Agent, and the Client doesn't appear to receive anything, nor does it notify the Agent of any error.For reference, this was also discussed in micro-ROS/rmw_microxrcedds#258.
To Reproduce
Steps to reproduce the behaviour:
Not exactly steps, but at a high level:
rclcpp
orrclpy
publisher which publishes instances of this messageAlternatively: create a server service and client, or an action server and client, which exchange the described message (as one of the fields fi).
Service invocations and action goal submissions will silently start to fail for messages "too large".
Expected behaviour
Ideally: messages of all sizes (even large ones) get forwarded successfully.
Realistically (as unlimited memory doesn't exist): the Agent prints a warning or error, clearly showing it's impossible to forward a message.
If possible: in case of svcs and actions: notify the client the invocation failed -- due to RMW-level failures (so not the invocation itself, but the request didn't even arrive at the server).
System information (please complete the following information):
20.04
, but same happens on other OSmicroros/micro-ros-agent
/5e93b1fa5608
)The text was updated successfully, but these errors were encountered: