-
Notifications
You must be signed in to change notification settings - Fork 51
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
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.