-
Notifications
You must be signed in to change notification settings - Fork 275
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
Maintain & expose tf2 Buffer in shared_ptr for tf #163
Conversation
- Adds a tf2_ros::Buffer via a public accessor method to expose to customers of Transformer - Maintains the tf2_ros::Buffer in a shared_ptr to safely share access to the Buffer object - As this is targeting Melodic, adds c++11 compile flags to grant access to std::shared_ptr's - Reorders the include_directories in the CMakeLists to ensure the headers exposed in this package are read *before* the system installed catkin_INCLUDE_DIRS (otherwise changes to tf source headers are never detected during a catkin_make on a system with ros-*-geometry installed)
Thanks this looks good. I'm going to need to fork and retarget this for melodic. I'll do that shortly and get a release out. |
Based on the new API changes to the TF Transformer Library, that allows for access to a shared pointer into the internal tf2_ros::Buffer object: ros/geometry#163
Based on the new API changes to the TF Transformer Library, that allows for access to a shared pointer into the internal tf2_ros::Buffer object: ros/geometry#163
Thanks @IanTheEngineer, I was just about to push on this myself, do you need help with the rviz integration or is that already in flight on your end? |
Or I guess you don't need to change |
Change required due to changes in upstream dependencies: ros/geometry#163: "Maintain & expose tf2 Buffer in shared_ptr for tf" fixes ros-planning#717 (for compile errors at least.)
Change required due to changes in upstream dependencies: ros/geometry#163: "Maintain & expose tf2 Buffer in shared_ptr for tf" fixes ros-planning#717 (for compile errors at least.)
Based on the new API changes to the TF Transformer Library, that allows for access to a shared pointer into the internal tf2_ros::Buffer object: ros/geometry#163
- All type conversions now depend on geometry2 ROS packages, rather than geometry (see ros/geometry2#292 and ros/geometry2#294 for details of the new conversions) - Removes all boost::shared_ptr<tf::TransformListener> from the API, and replaced them with std::shared_ptr<tf2_ros::Buffer>'s - Piped tf2_ros::Buffer's everywhere where tf::TransformListeners were used - Utilizes the new tf2 API in the tf::Transformer library to access the internal tf2::Buffer object used by RViz (see ros/geometry#163 for details of the new API) - Removes the prepending of forward slashes ('/') for Transforms frames as this is deprecated in tf2
migration from tf to tf2 API, resolves issue #745 - All type conversions now depend on geometry2 ROS packages, rather than geometry (see ros/geometry2#292 and ros/geometry2#294 for details of the new conversions) - Removes all boost::shared_ptr<tf::TransformListener> from the API, and replaced them with std::shared_ptr<tf2_ros::Buffer>'s - Utilize new tf2 API in the tf::Transformer library to access the internal tf2::Buffer of RViz (see ros/geometry#163 for details of the new API) - Removes prepending of forward slashes ('/') for transforms frames as this is deprecated in tf2 - Replaced deprecated tf2 _getLatestCommonTime
@tfoote and @wjwwood do you see any way this PR can be backported to Kinetic? The other MoveIt Maintainers have requested that that our This commit doesn't break API, but it does introduce the usage of C++11 |
This definitely breaks the ABI due to memory layout changes. The c++11 isms would be ok in Kinetic if used internally, but this is also in the public interface so it would have to export c++11 which we chose not to do in Kinetic. And there's also not a fork for separate indigo and kinetic development yet. With all that combined I'm generally not in favor of backporting this to kinetic. Melodic and Kinetic are targeting two different LTS Ubuntus, which is something that we have learned is generally quite hard to do with a single code base. |
This PR is an implementation of the Melodic API discussed in ros-visualization/rviz#1215 (comment) which would make the RViz PR ros-visualization/rviz#1224 obsolete. With this change added to
tf
, no (or minimal) modifications torviz
are necessary in order to accomplish tf2 migration for MoveitAdds a
tf2_ros::Buffer
via a public accessormethod to expose to customers of Transformer
Maintains the
tf2_ros::Buffer
in ashared_ptr
to safely share access to the Buffer object
As this is targeting Melodic, adds
c++11
compileflags to grant access to
std::shared_ptr
'sReorders the
include_directories
in the CMakeListsto ensure the headers exposed in this package are
read before the system installed
catkin_INCLUDE_DIRS
(otherwise changes to tf source headers are never detected
during a catkin_make on a system with
ros-*-geometry
installed)