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:
MessageFilterDisplay: 0f227e5
Image related displays (image and camera displays): ffdfad0
DepthCloudDisplay: 2dc400d
If you'd prefer to suppress the warning instead (not recommended) you can see an example of that here too:
GridCellsDisplay: 89b51e7
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.