[Documentation] [TitleIndex] [WordIndex

Migration guide

For ROS Melodic Morenia these packages have been changed and provide some form of migration notes or tutorials for users which depend on these packages.

Make sure to consult the ROS Lunar migrations page if you are coming from Kinetic or older: lunar/Migration

C++14

As noted on the target platforms document, Melodic is the first version of ROS to utilize C++14 over C++11. This can cause compatibility issues for some C++ projects when attempting to migrate between versions.

class_loader

Header deprecation

In an effort to bring class_loader closer to multiplatform support and its ROS 2 counterpart, class_loader's headers have been renamed and the previous ones have been deprecated ros/class_loader#81. A migration script has been provided and PRs will be opened for all released ROS packages in previous ROS distributions.

kdl_parser

The kdl_parser package (https://github.com/ros/kdl_parser) has now deprecated a method that uses tinyxml (which is itself deprecated):

bool treeFromXml(TiXmlDocument * xml_doc, KDL::Tree & tree)

Code should be ported to use the tinyxml2 replacement:

bool treeFromXml(const tinyxml2::XMLDocument * xml_doc, KDL::Tree & tree)

The deprecated tinyxml API will be removed in N-Turtle.

opencv

For standardization we are going to use the system version of opencv with a minimum version of 3.2. If you were using the opencv3 package in lunar you should switch to libopencv-dev rosdep rule

pluginlib

Header deprecation

In an effort to bring pluginlib closer to multiplatform support and its ROS 2 counterpart, pluginlib's headers have been renamed and the previous ones have been deprecated ros/pluginlib#79. A migration script has been provided and PRs will be opened for all released ROS packages in previous ROS distributions.

Remove deprecated plugin_tool

Tool not fully working and unmaintained for years has been removed from melodic. Discussion and PRhere

rosconsole

The rosconsole packages has been extracted from the ros_comm repository. See this ticket for more details. In short: it allows packages in ros_comm to use pluginlib. As a consequence pluginlib and class_loader have been moved from the "ros_base" metapackage to the "ros_core" one.

rviz

tf API's deprecated in favor of tf2 API's

The tf (version 1) API's in rviz have been deprecated (https://github.com/ros-visualization/rviz/pull/1236) so that in the next version of ROS they can be removed in favor of the tf2 based API's and rviz can drop the dependency on tf completely.

This change may introduce a new deprecation warning in existing plugins, especially Display type plugins for rviz.

Here's some examples of how you can migrate to the new API:

If you'd prefer to suppress the warning instead (not recommended) you can see an example of that here too:

urdf

The urdf package (https://github.com/ros/urdf) has now deprecated 2 methods that use tinyxml (which is itself deprecated):

bool initXml(TiXmlElement * xml)

bool initXml(TiXmlDocument * xml)

Code should be ported to use the tinyxml2 replacements:

bool initXml(const tinyxml2::XMLElement *xml)

bool initXml(const tinyxml2::XMLDocument *xml)

The deprecated tinyxml APIs will be removed in N-Turtle.

xacro

The --inorder option for xacro that is available since Jade, became default in Melodic. If you insist in using the old deprecated processing order, you may resort to the option --legacy. However, this option will be removed in N-turtle too.


2024-12-21 15:03