最新(2021年)ROS1发行版本适用的Linux操作系统平台、语言工具要求、第三方库支持、版本推荐

参考网址:

1.发行版本 http://wiki.ros.org/Distributions

2.版本支持 https://www.ros.org/reps/rep-0003.html

ROS版本选择主要是考虑对三方库的支持,以及新系统的稳定性,选择ROS的版本同样也是在选择Ubuntu的版本(两者是一一对应的),最新的版本对最新库的支持最好,但容易出现新的问题,缺少新问题的解决方案!需要结合自身能力和需求综合考量。当然如果你有对多个版本的需求,可以安装不同的系统对内核进行切换。(ROS1和ROS2及其各个版本是可以安装在一台电脑上的!)

1. See Also:

  1. ROS/Installation

  2. Distributions (this page)

  3. Installation

2. What is a Distribution?

A ROS distribution is a versioned set of ROS packages. These are akin to Linux distributions (e.g. Ubuntu). The purpose of the ROS distributions is to let developers work against a relatively stable codebase until they are ready to roll everything forward. Therefore once a distribution is released, we try to limit changes to bug fixes and non-breaking improvements for the core packages (every thing under ros-desktop-full). And generally that applies to the whole community, but for "higher" level packages, the rules are less strict, and so it falls to the maintainers of a given package to avoid breaking changes.

We capture the components that make up a distribution in our rosdistro format and it allows for multiple distributions. There are many different types of robots with different needs, and we anticipate that parts of the community may put together their own distributions in the future to better target these platforms.

 

最新(2021年)ROS1发行版本适用的Linux操作系统平台、语言工具要求、第三方库支持、版本推荐_第1张图片

绿色高亮是仍在维护更新且推荐的版本,其他的版本虽然不在更新,也不代表不能用,偶数年发布的为长期支持的版本,时间为5年。

6. Which distribution to use

A rather arbitrary list of usecase driven recommendations. Updated on May 2017.

New Capability

Major Update Frequency

Recommended distro

Preferred but not required

Not preferred

Latest LTS (Melodic)

Much preferred

Acceptable

Latest (Melodic)

Much preferred

Not preferred

Switch to the latest LTS every 2 year

Specific platform is required other than Ubuntu 16.04

See REP-3 for supported platform

Newer Gazebo is needed

 

Use Melodic for Gazebo 9

I want to use OpenCV3

 

Indigo or later

Indigo Igloo (May 2014)

  • Ubuntu Saucy (13.10)
  • Ubuntu Trusty (14.04 LTS)
  • C++03
  • Boost 1.53
  • Lisp SBCL 1.0.x
  • Python 2.7
    • Additional testing against Python 3.3 recommended
  • CMake 2.8.11

Build System Support:

  • catkin:
    • build from source
    • release for binary packaging
    • wiki documentation
    • continuous integration
  • rosbuild:
    • build from source

Jade Turtle (May 2015 - May 2017)

Required Support for:

  • Ubuntu Trusty (14.04)
  • Ubuntu Utopic (14.10)
  • Ubuntu Vivid (15.04)

Minimum Requirements:

  • C++03
    • C++11 features are not used, but code should compile when -std=c++11 is used
  • Python 2.7
    • Python 3.3 not required, but testing against it is recommended
  • Lisp SBCL 1.1.14
  • CMake 2.8.12
  • Boost 1.54

Exact or Series Requirements:

  • Ogre3D 1.8.x (Trusty)
  • Ogre3D 1.9.x (Other Systems)
  • Gazebo 5
  • PCL 1.7.x
  • OpenCV 2.4.x

Build System Support:

  • Same as Indigo

Kinetic Kame (May 2016 - May 2021)

Required Support for:

  • Ubuntu Wily (15.10)
  • Ubuntu Xenial (16.04)

Recommended Support for:

  • Debian Jessie
  • Fedora 23
  • Fedora 24

Minimum Requirements:

  • C++11
    • GCC 4.9 on Linux, as it's the version that Debian Jessie ships with
  • Python 2.7
    • Python 3.4 not required, but testing against it is recommended
  • Lisp SBCL 1.2.4
  • CMake 3.0.2
    • Debian Jessie ships with CMake 3.0.2
  • Boost 1.55
    • Debian Jessie ships with Boost 1.55

Exact or Series Requirements:

  • Ogre3D 1.9.x
  • Gazebo 7
  • PCL 1.7.x
  • OpenCV 3.x
  • Qt 5.3.x
  • PyQt5

Build System Support:

  • Same as Indigo

Lunar Loggerhead (May 2017 - May 2019)

Required Support for:

  • Ubuntu Xenial (16.04)
  • Ubuntu Yakkety (16.10)
  • Ubuntu Zesty (17.04)

Recommended Support for:

  • Debian Stretch
  • Fedora 26

Architectures Supported:

  • amd64
  • arm32
  • arm64

Targeted Languages:

  • C++11
  • Python 2.7
    • Python 3.5 not required, but testing against it is recommended
  • Lisp SBCL 1.2.4

Requirements:

Package Ubuntu Xenial Ubuntu Yakkety Ubuntu Zesty Debian Stretch Fedora 26
  Required Support Recommended support
Boost 1.58 1.61 1.62 1.62 1.63
CMake 3.5.1 3.5.2 3.7.2 3.7.2 3.7.2
Gazebo 7.0 7.3.1 7.5 7.3.1 7.x
Ogre 1.9 1.9 1.9 1.9 1.9
OpenCV 3.x* 3.x* 3.x* 3.x* 3.x*
PCL 1.7.2 1.8.0 1.8.0 1.8.0 1.8.0
PyQt 5.5.1 5.7 5.7 5.7 5.7
Qt5 5.5.1 5.6.1 5.7.1 5.7.1 5.7.1

" * " means that this is not the upstream version (available on the official Operating System repositories) but a package distributed by OSRF or the community (package built and distributed on custom repositories).

Maintainers can choose to support even lower versions to also cover older ROS distributions and thus avoid branching out.

Build System Support:

  • Same as Indigo

Melodic Morenia (May 2018 - May 2023)

Required Support for:

  • Ubuntu Artful (17.10)
  • Ubuntu Bionic (18.04)

Recommended Support for:

  • Debian Stretch
  • Fedora 28

Architectures Supported:

  • amd64
  • arm32
  • arm64

Targeted Languages:

  • C++14
  • Python 2.7
    • Python >= 3.5 not required, but testing against it is recommended
  • Lisp SBCL 1.3.14

Requirements:

Package Ubuntu Artful Ubuntu Bionic Debian Stretch Fedora 28
  Required Support Recommended support
Boost 1.62 1.65.1! 1.62 1.66!
CMake 3.9.1 3.10.2! 3.7.2 3.10.2!
Gazebo 9.0.0* 9.0.0! 9.0.0* 8.3.0!
Ogre 1.9 1.9! 1.9 1.9!
OpenCV 3.2* 3.2 3.2* 3.4.1
PCL 1.8.1 1.8.1! 1.8.0 1.8.1!
PyQt 5.7 5.10.1! 5.7 5.10!
Qt5 5.9.1 5.9.5! 5.7.1 5.10.0!

" * " means that this is not the upstream version (available on the official Operating System repositories) but a package distributed by OSRF or the community (package built and distributed on custom repositories).

" ! " means that this package will be at least this version (since these distributions have not yet been released); this may change as those releases get closer.

Maintainers can choose to support even lower versions to also cover older ROS distributions and thus avoid branching out.

Build System Support:

  • Same as Indigo

Noetic Ninjemys (May 2020 - May 2025)

Required Support for:

  • Ubuntu Focal Fossa (20.04)

Recommended Support for:

  • Debian Buster
  • Fedora 32

Architectures Supported:

  • amd64
  • arm32
  • arm64

Targeted Languages:

  • C++14
  • Python 3.8 - Testing against Python 3.7 is recommended for compatibility with Debian Buster.
  • Lisp SBCL 1.4.16

Requirements:

Package Ubuntu Focal Debian Buster Fedora 32
  Required Support Recommended support
Boost 1.71! 1.67 1.69!
CMake 3.16.3! 3.13.4 3.17!
Gazebo 11.x* 11.x* 10.1.0!
Ignition Citadel Citadel N/A
Ogre 1.9! 1.9 1.9!
OpenCV 4.2! 3.2 4.2
PCL 1.10! 1.9.1 1.9.1!
PyQt 5.14.1! 5.11.3 5.14.2!
Qt5 5.12.5! 5.11.3 5.13.2!

" * " means that this is not the upstream version (available on the official Operating System repositories) but a package distributed by OSRF or the community (package built and distributed on custom repositories).

" ! " means that this package will be at least this version (since these distributions have not yet been released); this may change as those releases get closer.

Motivation

This document is provided to help plan future development for libraries. The primary platforms for ROS are Canonical's Ubuntu releases, and our intent is to track these releases as best as possible while also allowing for current, thirdparty libraries to be used.

Rationale

Target platforms for future releases are speculative and are based on consulting Ubuntu's release and end-of-life schedule [1].

These targets, including starting and ending support dates, are based on the Distribution Timeline to meet minimum requirements. [3]

Architectures

As of ROS Lunar, we do not build packages for i386 architectures. Released code is still expected to build on i386. Ubuntu switched its default to 64bits and we noticed a significant decrease of ROS package downloads for this architecture.

C++

The C++ code in ROS is meant to be compiler-agnostic. While we mainly develop with gcc, no use of compiler-specific features is allowed without proper use of macros to allow use on other platforms or with other compilers.

Melodic

As of ROS Melodic, we are using the C++14 (ISO/IEC 14882:2014) standard. All packages are free to use C++14 features in public and private APIs. Before changing existing public APIs to use C++14 features, package maintainers should carefully consider whether the change is worth the breakage to downstream consumers of the API. If at all possible, maintainers should use a "tick-tock" model where the new APIs are introduced alongside the old (deprecated) APIs, and then remove the old APIs in a subsequent release.

Lunar and earlier

As of ROS Jade, we are still using the C++03 (ISO/IEC 14882:2003) standard.

Use of C++11/C++14 features and filesystem/networking/etc... TS's (Technical Specifications) is allowed if they are checked for at configure time and equivalent functionality can be provided without the extra compiler features. Support for C++11 is now a compiler requirement, but the API of the packages included in desktop-full will not use any C++11-specific feature. External packages are encouraged to follow this guideline.

For a given release we allow use of Boost libraries that match the version provided in our low-water-mark Ubuntu version.

Lisp

We use Steel Bank Common Lisp as our ANSI Common Lisp implementation. We are currently tracking SBCL 1.0.38 and will track future updates in the 1.0.x series as appropriate.

Python

Our intent with Python is to track the minimum version provided in the supported Ubuntu platforms, as well as survey other commonly used OS platforms that support ROS to determine a reasonable minimum target.

Melodic

Ubuntu will most likely stop supporting Python 2 in release 20.04. To make sure ROS will be able to support that version of Ubuntu, ROS Python packages starting with Melodic Morenia are highly encouraged to support both Python 2.7 and Python 3.5 or later. During the development of Melodic there will be work undertaken to support both Python 2 and Python 3 (including rosdep keys) so ROS package developers can more easily test with either version of Python.

Lunar and earlier

Ubuntu has announced plans to release 14.04 in April 2014 with Python 3 as its default interpreter. Some ROS infrastructure and core scripts already work with Python 3 since Groovy. But, it remains difficult to set up a test environment so ROS package developers can also port to Python 3.

The preferred migration strategy is to support both Python 2.7 and Python >= 3.2 in each source script. Supporting any version earlier than 2.6 makes that task harder. Python 3.0 and 3.1 will probably never be supported explicitly, although some things may work.

catkin / rosbuild support

catkin was officially introduced in Groovy beside rosbuild.

Since even half a year after the Hydro release not a single rosbuild-based package was released the support for building Debian packages of rosbuild-based packages has been discontinued in Hydro.

As of Indigo the ROS build farm also only supports documenting and continuous integration testing of catkin-based packages. Since Indigo is a LTS release and aims to be supported for several years maintaining the legacy code for rosbuild-based packages seems to be impractical.

rosbuild-based packages can still be built from source (which should also be supported in upcoming ROS distributions).

Core Stacks

Core stacks are required to comply with the target platforms listed here, though exceptions can be granted for core stacks that are inherently platform-specific. The set of core stacks is currently defined by variants included with each ROS distribution release.

C Turtle

This REP applies to stacks in the base variant for C Turtle.

Diamondback

This REP applies to stacks in the desktop-extras variant [2] for Diamondback.

Non-core Stacks

And thirdly, the code is more what you'd call "guidelines" than actual rules...

We hope that ROS stack maintainers will make every effort to comply with the target platforms within this REP, but we recognize that ROS stacks represent a spectrum of development, from research prototypes to hardened libraries. There are also cases where supporting target platforms may incur unnecessary effort, such as a set of drivers for a specific robot platform.

References and Footnotes

[1] Ubuntu Releases with End-of-Life Dates (https://wiki.ubuntu.com/Releases)
[2] REP 108, ROS Diamondback Variants (http://www.ros.org/reps/rep-0108.html)
[3] Distribution Timeline (http://wiki.ros.org/Distributions)

 

你可能感兴趣的:(资料分享,人工智能)