-
Notifications
You must be signed in to change notification settings - Fork 364
Added parameters to handle the overruns behaviour and prints #2546
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
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #2546 +/- ##
==========================================
+ Coverage 89.43% 89.46% +0.02%
==========================================
Files 148 148
Lines 16723 16728 +5
Branches 1406 1406
==========================================
+ Hits 14957 14965 +8
+ Misses 1222 1220 -2
+ Partials 544 543 -1
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
Hi @saikishor , Maybe one more request/suggestion: Due to your new logging of names/cycle times and periodicity, we found out that our Master Controlller of the robot runs not perfectly a 1khz loop relativ to my notebook. Meaning, if the cycle time of ros2_control is tight to 1khz, the actual closed-loop-frequency should be/would be 1003 Hz (e.g. from yesterday). If there is a sleep, we can't run with optimal performance. Cheers, |
@AndreasKuhner Thank you!
That's weird and I'm not sure because it usually gets published in a nonRT thread and I'm successfully using that on a system with 2 kHz. Try compiling in release mode and test it again
I will discuss with others and let you know, but I don't think that is going to be done in this PR, and if agreed, it should be a separate parameter on its own. Additionally, it is not related to the overrun at all, and that's exactly how it is in Humble currently. With that setup, if someone disables the overruns management, then there is no one ensuring that the calls are happening at a certain frequency, instead, it will max out the CPUs. For that reason, I'm not comfortable doing it. |
All is tested in release mode :) I trust the periodicity of what you guys compute. If I didn't express myself correctly: I see the 1003 Hz if I disable the sleep. Aka it blocks within our read -> Then it can have 'any' frequency, just controlled by our blocking read and the frequency of the master controller (aka pc) of the robot.
I understand 🤔 Yet, the user would still set a target frequency. Hence, if you see that the value deviates too much from what you see during execution, you could also throw warnings..? |
@AndreasKuhner Sure, I can discuss and get back to you on adding a new parameter to disable the sleep. However, it won't be with the same parameter of the overruns. I get your explanation. Do you have the same issues with the sleep in Humble too? |
That makes totally sense.
We always noticed that we couldn't get the same stability with humble compared to our pure libfranka library and that some of the messages don't arrive/are too late/... Yet, it was stable enough to work on other priorities... |
Hello @AndreasKuhner! Thanks for testing the fix.
What do you mean?. Like it is not allowing you to declare it? |
I just sent to comment and 1 minute later, I got the infamous
Yes, I wanted to put |
Thank you. I'll check it :) |
@AndreasKuhner the issue is fixed now :) |
Nice, thanks :) Unfortunately, I am now in vacation for 3 weeks (:partying_face: ) but I guess this PR would be good to go from my side. Another step then would be about the toggle for the sleep... which would help us as well :) Cheers, |
@AndreasKuhner sure :) I'll keep you posted |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why don't you use generate parameters library for setting up the parameter?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because, I can't toggle the default value in the GPL. I want to enable it by default for general applications and at the same time disable it by default for simulations.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You do, but why not print only is managed here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because managed is part of the ros2_control_node
and not exactly the controller manager parameter. So, ideally, if we integrate controller_manager in a different way like in a simulation or a custom node, setting this parameter does nothing. So, I separated them
@AndreasKuhner whenever you are back or if someone else is happy to chime in from Franka, you guys could put up a PR with that toggle feature and let us know how measuring against that worked on your end 👍 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
(cherry picked from commit 1fcf10f)
Provides a way to fix: #2529. It also provides parameters to toggle the behaviours