<> = 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 [[http://www.ros.org/reps/rep-0003.html#melodic-morenia-may-2018-may-2023|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 [[https://github.com/ros/class_loader/pull/81|ros/class_loader#81]]. A migration script [[https://github.com/ros/class_loader/commit/1515546103de4d987daa8f5519ca43fe6cffbca6|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 [[http://www.ros.org/reps/rep-0003.html#melodic-morenia-may-2018-may-2023|minimum version of 3.2]]. If you were using the `opencv3` package in lunar you should switch to [[https://github.com/ros/rosdistro/blob/16a0418db0b120852ff78e015d22512ada6be415/rosdep/base.yaml#L2431| 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 [[https://github.com/ros/pluginlib/pull/70|ros/pluginlib#79]]. A migration script [[https://github.com/ros/pluginlib/pull/104|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 PR[[https://github.com/ros/pluginlib/pull/61 | here]] == rosconsole == The `rosconsole` packages has been extracted from the `ros_comm` repository. See [[https://github.com/ros/rosdistro/issues/17919|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}}}: [[https://github.com/ros-visualization/rviz/commit/0f227e5fa7fd1c38389479936545157733b5b571|0f227e5]] * Image related displays (image and camera displays): [[https://github.com/ros-visualization/rviz/commit/ffdfad011c399cd3a9598d5be7bef26d46d9f6b3|ffdfad0]] * {{{DepthCloudDisplay}}}: [[https://github.com/ros-visualization/rviz/commit/2dc400d68e2d7813f0801f0164553de4349048f8|2dc400d]] If you'd prefer to suppress the warning instead (not recommended) you can see an example of that here too: * {{{GridCellsDisplay}}}: [[https://github.com/ros-visualization/rviz/commit/89b51e7a0ddcc35f0aba25580084c66f9d90623b|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.