-
Notifications
You must be signed in to change notification settings - Fork 26
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
Maximum size of action server goal (guestimate)? #258
Comments
Some details about DDS-XRCE. DATA sub-messages are exchanged between the client and the agent in order to transmit DDS payloads from the client to the agent (in publishers, requesters, and repliers) or from the agent to the client (when dealing with subscriptions, requesters, and repliers). This DDS-XRCE DATA sub-message has a When dealing with fragmentation, the same happens because the whole DDS-XRCE DATA sub-message (subheader + payload) will be chopped into smaller fragments. That means that the maximum payload is still about 65 kB even if the fragmentation is used. What happens when a micro-ROS client tries to publish a big message? It depends:
What happens when a micro-ROS Agent tries to send a DATA payload to micro-ROS client:
Headers are not taken into account in the above formulas, so they are not literal. Just a reference. As we can see there is a couple of problems here:
Answering your question @gavanderhoorn, the agent won't send a DATA payload (fragmented or not) to the client if it greater than 2^16 B because of standard limitation. |
Thanks for the extensive info @pablogs9. I'd understood max payload is 64K, also based on our use of UDPv4 in the client. But the intricacies of how MTU and the other variables interact were beyond my current understanding. Thanks again
will you open an issue for this, or would you want me to open one?
This may be something we could change (ie: enable dynamic memory). But for something like a Would something like the continuous publication, but then for subscription be possible? Deserialisation would perhaps be difficult to implement, and not all messages would be compatible (dependencies between fields), but it could help overcome these problems. |
Feel free to open an issue.
This solution may be possible, but currently, there are no plans for implementing any solution in that sense. |
which tracker should I open this issue on? The Micro-ROS-Agent repository? I believe you have a better insight into what the actual issue is. I'd be willing to open one, but my summary of the issue would probably be "messages larger than a certain size seem to 'disappear'". |
That's enough micro-ROS Agent is a good place. Mention this issue as related. Thanks! |
I've opened micro-ROS/micro-ROS-Agent#143. |
Can we close this in favor of the new one @gavanderhoorn ? |
Yep. thanks for the guidance. |
(this is more a Q&A than an actual issue, but Discussions are not enabled, so my apologies for posting it as an issue)
Would you happen to know, off the top of your head, what the maximum size would be for an action goal to still make it to a Client, via an Agent? I'm specifically referring to an action goal here, but as that's transmitted via services, that'd also be OK I believe.
This is related to #217 and #247, as while we've been able to get everything to work with your advice, we're trying to determine the limits to various things, and notice action goals for which the Micro-ROS Agent prints
[==>> DDS <<==] [...] len: 67776 [...]
don't make it to the Client (aFollowJointTrajectory
action goal in this specific case).There is no warning or error printed AFAICT, the messages just seem to vanish. No traffic to the Client either (Wireshark).
Before diving into the various packages, I thought I'd ask, as you may already be able to point us in a certain direction.
Context: UDPv4 Client,
UCLIENT_TWEAK_XRCE_WRITE_LIMIT=OFF
,UCLIENT_UDP_TRANSPORT_MTU=2048
,RMW_UXRCE_MAX_HISTORY=4
andRMW_UXRCE_STREAM_HISTORY=32
.thanks
Edit: the Client application should have been given ample space to receive the goal (by configuring a
micro_ros_utilities_memory_conf_t
with values forsize
higher than the goal being sent uses/needs).The text was updated successfully, but these errors were encountered: