-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Added support for inplace filters. #38
base: lunar-devel
Are you sure you want to change the base?
Conversation
As for linking to the concrete filter plugins, I'm not sure if |
There's another design option - making |
Thanks for contributing this. As it's an API changing update. Although it likely won't effect people we'll want to target this for a future distribution to be sure not to disrupt existing users and stay stable. So we'll want to retarget this to the rolling distribution. |
Is there a new ROS 1 distro coming? |
Friendly ping. If you're concerned about breaking the ABI/API, I can just rename the existing filters and create their inplace duplicates. Not really good from the code point of view, but it would do the job. |
There's not a new rosdistro coming in ROS 1. To land in noetic the creating new parallel classes would be a way to support a backport. There is in ROS 2 which is being developed off the ros2 branch. If you'd like to target this for future versions that could be useful. |
Okay, I've made the PR ABI compatible. The filters are now duplicated, but fortunately code can be shared. I also added a non-virtual Once the approach is approved, I'll finish documentation and tests. |
Solves #27.
I'll add tests later, but comments on the design are already welcome.
This changes both API and ABI of the defined filters (median, mean, increment, transfer_function), but as they are libraries nobody should link to, I think it could be doable. If this kind of breaks is not acceptable, there is a workaround solution - creating new filters (but I don't like this solution as it'd create another set of filters which differ only in the "flag" that they are inplace).
I also updated the filter_chain update functions so that they automatically detect inplace functions and call their inplace update methods whenever possible.