-
Notifications
You must be signed in to change notification settings - Fork 336
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
[Jazzy] JTC fails with - Caught exception in callback for transition 10 #1389
Comments
I just did some more testing:
|
I am one step further: I can configure and activate a JTC now by disabling locked memory for the controller manager:
@saikishor I think you added the memlock - perhaps you have some insights ? |
Can you share the output of |
And on my host:
I am using rootless podman. |
The max locked memory should be unlimited. You can set it on your system. You can check online the requirements and setup to have the lock memory |
Ideally, if you configure your ros2_control_node as a privileged process, the |
I also tried "--ulimit memlock=-1:-1" as argument for podman. This improved the situation so that loading some controllers works fine.
I will try that tomorrow and let you know. Just as a comment from my side: I have a default Ubuntu 24.04 installation. I am wondering if a default ubuntu installation doesn't play well with the default parameters of ros2control it might be a good idea to have |
You are right. It might make sense to have it false by default for this case. Can you test it tomorrow increasing the limit and see if this solves your issue? |
@saikishor I increased my locked memory limit not to unlimited by 64GB and it seems to work fine now.
I also made sure that I removed the configuration entry from my controllers.yaml |
@firesurfer do you mind reviewing the PR on the ros2_control side and approve it. If it looks good to you |
Already at it. What still puzzles me is the error I got there.
Which corresponds to: From my understanding the only thing that could fail due to not enough locked memory is a some memory allocation: |
Yeah, that is weird. |
I found the explanation: Apparently EAGAIN comes from mmap which is apparently called in case malloc fails. |
Thank you so much! it's really useful, works on my system! |
Thank you all. I met the same problem on a raspberry pi 5 8G RAM. add lock_memory: false to ros2_control.yaml under config folder did fix the problem. |
Hello @TonyInvent! We have changed the logic in ros-controls/ros2_control#1896, such that if the realtime system is properly setup, this parameter will be true, else it would be false. So, you won't be having to deal with it. Thanks for reporting that it solved your issue. |
Describe the bug
Loading and activating a JTC fails with:
From my
controllers.yaml
Everything was working mostly with a jazzy binary installation before updating it to the latest jazzy release with only this issue occurring from time to time: ros-controls/ros2_control#1883
Environment (please complete the following information):
EDIT:
I did a bit of additional research. Looks like:
Resource temporarily unavailable
is usually issued by the operating system.But even after reading quite a bit of code I have no clue why this error should occur in the configure method of a controller.
I am running the system with mocked hardware at the moment.
The text was updated successfully, but these errors were encountered: