-
Notifications
You must be signed in to change notification settings - Fork 383
Add tf prefix helper and test #2803
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
base: master
Are you sure you want to change the base?
Conversation
| if (!tf_prefix_enabled) | ||
| { | ||
| return std::string{}; | ||
| } |
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.
Do we need to have this arg here? Can't we condition it outside whoever is using this code?
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.
IMHO, the helper methods shouldn't condition things, they do some standard operation and the users adapt to their usecases
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.
this refers to my comment here: ros-controls/ros2_controllers#1997 (comment)
The current state feels a bit unconvenient. If !tf_prefix_enabled then it is just the given odom frame without adding something. How would you design this?
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.
How about something like this
If the tf_prefix is empty, then return empty
If the tf_prefix is ~, then then the node namespace
If the tr_pedix is anything else, then return that
Obviously, trimming the /'s
What do you think about it?
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.
IMO, the previous version -helper without the prefix enable arg- was causing clutter when called with the ternary operator. It was still a one liner but looked more complicated then it is. I can remove it again regardless so it can comply the standard:
the helper methods shouldn't condition things
The decision is yours.
If the tf_prefix is empty, then return empty
If the tf_prefix is ~, then then the node namespace
If the tr_pedix is anything else, then return that
Not clear about this second one, do you mean i take node namespace if the user inputs the tilde character specifically or is it a result of some operation I am not aware?
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.
Yes, if the user inputs tilde, you replace that part with node namespace. Wouldn't that work?. This way you wouldn't need the parameter of tf_prefix_enable or not right?
For the conditioning part, the part you say complicated. I need to check that part of the code and get back to you.
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.
Previous one I tested here
Thanks for the reference. My question is do we really need tf_frame_prefix_enable parameter? If so, why?
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.
I am simply using it because we have it. But it makes sense to ignore it regardless and apply this
If the tf_prefix is empty, then return empty
If the tf_prefix is ~, then then the node namespace
If the tr_pedix is anything else, then return that
If the user does input a prefix name, an extra enable flag seems redundant imo.
How shall i proceed?
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.
I agree, the extra parameter flag seems to be superfluous.
christophfroehlich
left a comment
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.
Thanks. Could you please update the diff_drive PR, so that we see the final usage?
| { | ||
| if (prefix.empty()) | ||
| { | ||
| return std::string{}; |
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.
| return std::string{}; | |
| return ""; |
Won't this work?. Just a curious question
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.
Its the same result but thats string literal and my return type is std::string so its an extra implicit conversion done by compiler. I can change anyway if you think looks simpler
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.
please do, let the compiler to the job for us and we keep it more readable
| return std::string{}; | ||
| } | ||
|
|
||
| std::string nprefix = prefix == "~" ? node_ns : prefix; |
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.
| std::string nprefix = prefix == "~" ? node_ns : prefix; | |
| std::string nprefix = prefix; | |
| size_t pos = nprefix.find("~"); | |
| if (pos != std::string::npos) { | |
| original.replace(pos, 1, node_ns); | |
| } |
Will something like this work?
Just thinking of cases, if users wants to add a prefix like ~/robot_base or something like that
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.
We can also get back to this in future, if needed.
Just nitpicks.
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.
Makes sense, I'll add this.
Edit: just realized you have suggested it for future reference but I went ahead and added it. And tested it with diff drive controller. I can revert back to previous one if you prefer
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #2803 +/- ##
==========================================
- Coverage 89.64% 89.63% -0.02%
==========================================
Files 152 155 +3
Lines 17815 17834 +19
Branches 1455 1459 +4
==========================================
+ Hits 15971 15985 +14
- Misses 1260 1263 +3
- Partials 584 586 +2
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
saikishor
left a comment
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.
Approving as it serves the purpose.
Adding some nitpicks for future reference
cbd3730
| interface_type_list.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.
I know it's extreme nitpick but could this be moved to a new file instead please?
I wanted to rename this file already to be something like hardware_interface_helpers or similar
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 is this helper related to hardware interface? don't we have a different helper file there already?
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.
see that's why I haven't renamed it yet, because I couldn't come up with a better name :D
the initial point stands: could this function please go to a new file called tf_prefix.hpp please?
Added the tf prefix helper here instead of control_toolbox. Prefix enabler flag re-added and frame removed from input arguments.
Related PR