-
Notifications
You must be signed in to change notification settings - Fork 196
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
Point streaming queue has reached max allowed elements #420
Comments
I would suggest to configure your See Console Output Formatting on the ROS wiki. Some expectation management: the code you're using was never merged into the mainline driver and has therefore not seen the same level of use and debugging. It's possible there are issues which have not been addressed. As to the error: the queue on the MotoROS side is 'emptied' based on whether segments have been executed. If your edit:
and if you've merged it with current |
Thanks @gavanderhoorn. Do you know if there's equivalent point streaming functionality in the mainline driver? @tdl-ua I believe you wrote this point streaming code? Any ideas on whether this issue was present in the branch originally? @ted-miller @EricMarcil Do you know of any significant changes to the motoman driver which may not play nicely with this point streaming code? |
no, there isn't.
no, that was @boneil (#37). @tdl-ua updated it in #215. Edit: with an updated Edit 2: seems to be here: https://github.com/ros-industrial/motoman/pull/215/files#diff-91823845753e4d8172e7046fdee7dda955aab677ff8965435d4820933a0f960eR269. |
@aa-tom, @gavanderhoorn is correct that I only updated the point streaming interface from two other previous commits that did the heavy lifting. But I'm fairly certain (it's been over 3 years) that you have to send the trajectory points at 40Hz exactly because that is the rate at which they are processed and executed by the controller. I vaguely remember having a similar issue when using the wrong publishing rate. See here for a working usage example of #215. |
I did a brief comparison of the MotoPlus code. Here are the top things that jumped out to me:
|
Yeah, that's the place
Thanks for the advice. I'll try setting the publishing rate to 40Hz and see if that fixes the issue, although I'd expect that the queue would fill up almost immediately if that were the case? What we're seeing is that the point streamer works fine at a rate of 150Hz for a few minutes before suddenly hitting the issue. I've also added some extra info statements including queue size and thread timing info to support debugging, so I'll get back with those results when I get a chance to test |
To add to what tom said about the publishing rate: We then tested the point streamer at 200Hz (to match 4ms) but reached max queue elements within a minute. If this was caused by mismatched rates then I would expect to see the queue fill almost immediately as a mismatch of 1Hz would fill the 20 element queue in 20 seconds; if it is the internal queue that is the problem then I would at least expect consistent times before overflows. Very confusing! |
To help in diagnosing this, please make a wireshark capture of the traffic between the controller and Since the streaming extension is using regular simple messages, we can try to see whether something is not working correctly on that level. |
@aa-tom @DavidAlatorreAA: any luck with the wireshark trace? |
@gavanderhoorn Normally we would have sent this Wireshark capture immediately, but a few unrelated issues cropped up, so apologies for the delay. Attached is the capture and some notes are:
|
Thanks for the capture. It seems to start somewhere in the middle of an ongoing session though. Could you capture from the beginning (ie: include drives enablement, etc)?
a packet nr reference is easier to find in a capture :) |
Here's the capture from the beginning. Packet nr 791435; true that is a lot easier than the UTC goose chase. |
Even from this capture it's clear the ROS side is stopping the motion, not MotoROS. Specifically, this line triggers
which the controller then acknowledges. I'd suggest to add some debug messages which show how/when the That could perhaps give you some insight into the behaviour of the queue and when its size starts to approach The rest of the SimpleMessage traffic looks pretty normal to me (with the exception of course that the trajectory never ends). |
That's not entirely true: your capture shows some missing TCP segments. I'm not sure this is not a red herring, but fi packet 7390 and 7391 (in your full capture) imply something went wrong during transmission of a packet. That would indicate TCP packet loss. It happens a few more times. There are |
@ted-miller: I just noticed that MotoROS does not seem to copy over the It's set to
If the sequence number would be copied into the outgoing ack, we could track packet transmission and acknowledgement more easily. |
@gavanderhoorn We are trying to print
I ran a few tests at 120 Hz (stable) and 200 Hz (unstable) and we get the same behaviour albeit at a lower rate. The queue we are exceeding has a size of 20 and we receive more than 20 TCP missing segments messages, without the queue size error occuring. Perhaps this is a result of running the controller at 4 Hz instead of the default 10 Hz or some of the other |
I would expect you'd have to configure your Or just add I would also suggest to use named loggers, instead of the anonymous versions. Would save you a few all-capital sentences, as you could just filter for that specific logger.
I'm not sure which controller you are referring to here. I'm not aware of anything running "at 10 Hz" by default. Edit: I'm not sure I understand the changes you linked to. How would you track the nr of elements in the queue over time? |
Typo I meant 4 ms and 10 ms. And I'm talking about the Yaskawa Motoman YRC1000micro controller. We have the MotoPlus SDK and modified the default Thanks for the other |
That would be the period then. |
Still having some problems outputting those extra
|
I can only guess you're either:
|
@robertjbush @DavidAlatorreAA: what's the status here? Have you been able to make any progress? |
@gavanderhoorn You beat me to it! I was just in the process of responding today. We did some refactoring of our code base and we've been running the ROS master on our fastest PC at 150 Hz consistently without problems. At 200 Hz, although we do sometimes get the max queue error, the robot is able to continue moving. Setting real-time flags to the I was not able to get the extra |
I'm a bit confused: the
You mean starting the process with |
We are also confused as to why this made a difference; but it did (note the
Correct. |
For now I'll assume that's correlation and not causation then. Unless you're re-creating your publishers every loop or something similar. Then I could see this having an influence. |
I'm going to close this. We don't officially support point streaming in the current version of |
@rr-robert and @rr-david-alatorre:
could you confirm you're not doing this? I wouldn't understand what effect it would have on the queue overflowing, but would give some clue as to why |
Hi,
I'm currently attempting to use the point streamer through the joint command topic to publish commands to the driver, however, I am getting the following error messages:
The second error only ever appears after the first, so I think the max queue error is the root of the problem. I'm publishing commands at a rate of 100 Hz, so I don't think I should be pushing the driver to any kind of limit. I've tried searching through the code but have been unable to find where abouts the error is raised.
Any help would be much appreciated!
The text was updated successfully, but these errors were encountered: