-
Notifications
You must be signed in to change notification settings - Fork 103
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
Handling large action request gets failed #1145
Comments
It works If I comment out the publisher implementation from the code and change the handle to 1.
So why the publisher (or timer?) does cause the issue? |
Consider adding an sleep on your
Did you modify anything else? What is the output of your serial debug port? |
Reducing the sleep ( I have not modified the code besides the above-mentioned changes. The serial debug output prints the I think the timer callback interrupts the message receiving process from the DDS. What is the default serial baud rate to connect to the agent? Would increasing the baud rate help? How can we change it? |
From the agent help:
You can modify the baudrate using the flag Anyway, we just discovered a bug regarding services reliability on the agent side. This directly affects action server communication, will keep you updated when the fix is ready. |
@metanav The fix is added, could you update your agent and test this again? |
Hi @Acuadros95, I have updated the agent and tested it but it does not fix the issue. |
Hi @Acuadros95, Is there any way to pause/stop the timer when a goal request comes in and resume/start after the goal is completed? |
It seems working after increasing RMW_UXRCE_STREAM_HISTORY and regenerating precompiled library. |
@metanav I've run into the same issue. You mentioned earlier on that you tried 32 for the RMW_UXRCE_STREAM HISTORY and it didn't seem to have an effect, but your last post said you increased it AND regenerated the precompiled library. Did you stick with 32 and it didn't take effect until you regenerated the precompiled library, or did you end up going beyond 32, or both? |
To answer my own question, yes, both need to be done. Only make sure if you are using platform.io that you do not use a tab when editing or creating custom meta files as it will result in the meta file being ignored when you manage to force micro-ros to be rebuilt... as I discovered over the last 6 hours. |
@madgrizzle I do not remember exactly but I guess it worked after doing both. By the way which manipulator/microcontroller are you using? |
Yeah, both are needed as well as a meta file without tabs in it :) I'm using a teensy 4.1 and was able to get well over 100 points sent with 8 joints per point. That part works well at least now. |
Yeah, Teensy 4.1 has larger memory to handle it. I was working with Nano RP2040 Connect which has only 1/4 that of Teensy's. But I was able to test up to 60 points which was enough for my case (5 DOF). |
I am trying to create a follow_joint_trajectory action server with a joint_states publisher. I am able to publish to the join_states topic. Also, I can receive trajectory goal at the follow_joint_trajectory server. But It seems the action server cannot handle large goal request. The Arduino Nano RP2040 Connect has 264KB memory so I believe it can handle large messages around 10 to 20 KB easily.
Successful request:
Unsuccessful goal request:
After executing the command below, it hangs with the error code = 1.
The library was built with the modified configuration file colcon_verylowmem.meta (target: cortex_m0)
There are 6 services for 2 action servers but only one is implemented in the current code. The
RMW_UXRCE_STREAM_HISTORY
is set to 32 for large message buffer but seems not effective.I have tried to set
UCLIENT_SERIAL_TRANSPORT_MTU
= 1024 but it didn't help so I removed it from the current config.Please see the code below where memory allocation for the action server goal request is configured.
I have configured it for maximum 10 goal.trajectory.points but the goal request gets failed above 5 goal.trajectory.points. I am expecting 30 or more goal.trajectory.points in a real application.
The text was updated successfully, but these errors were encountered: