目前ROS 2和ROS 1 具体资料分别在如下两个网址:
I . ROS 1(代表indigo/kinetic):http://wiki.ros.org/
I I. ROS 2(代表ardent):https://github.com/ros2/ros2/wiki
III. ROS 1和ROS 2的一些资料:http://blog.csdn.net/zhangrelay/article/details/78418393
在ROS十周年刚过,即发布了第一个ROS 2的正式版ardent apalone。

下面依据官网简单介绍一下ROS 2的安装,ROS 2 ardent提供了软件源和源代码编译两种安装使用方式,这和ROS 1是几乎完全一致的。
1. Linux安装(debians)
设置软件源,如下:
$ sudo apt update && sudo apt install curl
$ curl http://repo.ros2.org/repos.key | sudo apt-key add -
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1679 100 1679 0 0 2887 0 --:--:-- --:--:-- --:--:-- 2889
OK
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main xenial main" > /etc/apt/sources.list.d/ros2-latest.list'
2. 安装ROS 2软件包:
ROS 2的软件包命令如ROS 1,格式为ros-ardent-xxx,例如rviz,如下可以看到:
$ sudo apt-get install ros-ardent-rviz
ros-ardent-rviz2 ros-ardent-rviz-ogre-vendor
ros-ardent-rviz-assimp-vendor ros-ardent-rviz-rendering
ros-ardent-rviz-common ros-ardent-rviz-rendering-tests
ros-ardent-rviz-default-plugins ros-ardent-rviz-yaml-cpp-vendor
使用下面命令安装ROS 2 ardent全部包,注意,ros-ardent-ros1-bridge和ros-ardent-turtlebot2-*需要ROS 1的支持(需安装ROS Kinetic,需要请点击链接:http://blog.csdn.net/zhangrelay/article/details/51364622):
$ sudo apt install `apt list ros-ardent-* 2> /dev/null | grep "/" | awk -F/ '{print $1}' | grep -v -e ros-ardent-ros1-bridge -e ros-ardent-turtlebot2- | tr "\n" " "`
保持足够耐心等待安装结束,ROS 2已有的软件包如下:
Display all 183 possibilities? (y or n)
ros-ardent-actionlib-msgs ros-ardent-ament-uncrustify ros-ardent-lifecycle-msgs ros-ardent-rosidl-typesupport-interface
ros-ardent-amcl ros-ardent-astra-camera ros-ardent-logging-demo ros-ardent-rosidl-typesupport-introspection-c
ros-ardent-ament-clang-format ros-ardent-builtin-interfaces ros-ardent-map-server ros-ardent-rosidl-typesupport-introspection-cpp
ros-ardent-ament-cmake ros-ardent-cartographer ros-ardent-nav-msgs ros-ardent-rosidl-typesupport-opensplice-c
ros-ardent-ament-cmake-auto ros-ardent-cartographer-ros ros-ardent-opensplice-cmake-module ros-ardent-rosidl-typesupport-opensplice-cpp
ros-ardent-ament-cmake-clang-format ros-ardent-cartographer-ros-msgs ros-ardent-orocos-kdl ros-ardent-ros-workspace
ros-ardent-ament-cmake-copyright ros-ardent-class-loader ros-ardent-osrf-pycommon ros-ardent-rttest
ros-ardent-ament-cmake-core ros-ardent-common-interfaces ros-ardent-pcl-conversions ros-ardent-rviz2
ros-ardent-ament-cmake-cppcheck ros-ardent-composition ros-ardent-pendulum-control ros-ardent-rviz-assimp-vendor
ros-ardent-ament-cmake-cpplint ros-ardent-console-bridge ros-ardent-pendulum-msgs ros-ardent-rviz-common
ros-ardent-ament-cmake-export-definitions ros-ardent-demo-nodes-cpp ros-ardent-pluginlib ros-ardent-rviz-default-plugins
ros-ardent-ament-cmake-export-dependencies ros-ardent-demo-nodes-cpp-native ros-ardent-poco-vendor ros-ardent-rviz-ogre-vendor
ros-ardent-ament-cmake-export-include-directories ros-ardent-demo-nodes-py ros-ardent-python-cmake-module ros-ardent-rviz-rendering
ros-ardent-ament-cmake-export-interfaces ros-ardent-depthimage-to-laserscan ros-ardent-rcl ros-ardent-rviz-rendering-tests
ros-ardent-ament-cmake-export-libraries ros-ardent-depthimage-to-pointcloud2 ros-ardent-rclcpp ros-ardent-rviz-yaml-cpp-vendor
ros-ardent-ament-cmake-export-link-flags ros-ardent-diagnostic-msgs ros-ardent-rclcpp-lifecycle ros-ardent-sensor-msgs
ros-ardent-ament-cmake-flake8 ros-ardent-dummy-map-server ros-ardent-rcl-interfaces ros-ardent-shape-msgs
ros-ardent-ament-cmake-gmock ros-ardent-dummy-robot-bringup ros-ardent-rcl-lifecycle ros-ardent-sros2
ros-ardent-ament-cmake-gtest ros-ardent-dummy-sensors ros-ardent-rclpy ros-ardent-std-msgs
ros-ardent-ament-cmake-include-directories ros-ardent-example-interfaces ros-ardent-rcutils ros-ardent-std-srvs
ros-ardent-ament-cmake-libraries ros-ardent-examples-rclcpp-minimal-client ros-ardent-resource-retriever ros-ardent-stereo-msgs
ros-ardent-ament-cmake-lint-cmake ros-ardent-examples-rclcpp-minimal-composition ros-ardent-rmw ros-ardent-teleop-twist-joy
ros-ardent-ament-cmake-nose ros-ardent-examples-rclcpp-minimal-publisher ros-ardent-rmw-fastrtps-cpp ros-ardent-teleop-twist-keyboard
ros-ardent-ament-cmake-pep257 ros-ardent-examples-rclcpp-minimal-service ros-ardent-rmw-implementation ros-ardent-test-msgs
ros-ardent-ament-cmake-pep8 ros-ardent-examples-rclcpp-minimal-subscriber ros-ardent-rmw-implementation-cmake ros-ardent-tf2
ros-ardent-ament-cmake-pyflakes ros-ardent-examples-rclcpp-minimal-timer ros-ardent-rmw-opensplice-cpp ros-ardent-tf2-eigen
ros-ardent-ament-cmake-pytest ros-ardent-examples-rclpy-executors ros-ardent-robot-state-publisher ros-ardent-tf2-geometry-msgs
ros-ardent-ament-cmake-python ros-ardent-examples-rclpy-minimal-client ros-ardent-ros1-bridge ros-ardent-tf2-msgs
ros-ardent-ament-cmake-ros ros-ardent-examples-rclpy-minimal-publisher ros-ardent-ros2cli ros-ardent-tf2-ros
ros-ardent-ament-cmake-target-dependencies ros-ardent-examples-rclpy-minimal-service ros-ardent-ros2msg ros-ardent-tinyxml2-vendor
ros-ardent-ament-cmake-test ros-ardent-examples-rclpy-minimal-subscriber ros-ardent-ros2node ros-ardent-tinyxml-vendor
ros-ardent-ament-cmake-uncrustify ros-ardent-fastcdr ros-ardent-ros2pkg ros-ardent-tlsf
ros-ardent-ament-copyright ros-ardent-fastrtps ros-ardent-ros2run ros-ardent-tlsf-cpp
ros-ardent-ament-cppcheck ros-ardent-fastrtps-cmake-module ros-ardent-ros2service ros-ardent-topic-monitor
ros-ardent-ament-cpplint ros-ardent-geometry-msgs ros-ardent-ros2srv ros-ardent-trajectory-msgs
ros-ardent-ament-flake8 ros-ardent-gmock-vendor ros-ardent-ros2topic ros-ardent-turtlebot2-amcl
ros-ardent-ament-index-cpp ros-ardent-gtest-vendor ros-ardent-rosidl-cmake ros-ardent-turtlebot2-cartographer
ros-ardent-ament-index-python ros-ardent-image-geometry ros-ardent-rosidl-default-generators ros-ardent-turtlebot2-drivers
ros-ardent-ament-lint-auto ros-ardent-image-tools ros-ardent-rosidl-default-runtime ros-ardent-turtlebot2-follower
ros-ardent-ament-lint-cmake ros-ardent-intra-process-demo ros-ardent-rosidl-generator-c ros-ardent-turtlebot2-teleop
ros-ardent-ament-lint-common ros-ardent-joy ros-ardent-rosidl-generator-cpp ros-ardent-uncrustify
ros-ardent-ament-package ros-ardent-kdl-parser ros-ardent-rosidl-generator-dds-idl ros-ardent-urdf
ros-ardent-ament-pep257 ros-ardent-launch ros-ardent-rosidl-generator-py ros-ardent-urdfdom
ros-ardent-ament-pep8 ros-ardent-launch-testing ros-ardent-rosidl-parser ros-ardent-urdfdom-headers
ros-ardent-ament-pyflakes ros-ardent-libcurl-vendor ros-ardent-rosidl-typesupport-c ros-ardent-visualization-msgs
ros-ardent-ament-tools ros-ardent-lifecycle ros-ardent-rosidl-typesupport-cpp
3. 环境设置
这个也和ROS 1是保持一致的,如下:
$ source /opt/ros/ardent/setup.bash
如果有Python包argcomplete(版本0.8.5或更高),可以导入如下文件获取命令行工具:
$ source /opt/ros/ardent/share/ros2cli/environment/ros2-argcomplete.bash
4. 选择RMW实现
默认情况下,RMW使用FastRPTS,通过设置环境变量RMW_IMPLEMENTATION=rmw_opensplice_cpp,可以切换为OpenSplice。
5. 使用ROS 1功能包的附加包
在ROS 2和ROS 1都安装配置完成的系统,可以通过ros1_bridge同时使用,如果使用Docker可以避免环境之间的切换等配置,安装如下包:
$ sudo apt install ros-ardent-ros1-bridge ros-ardent-turtlebot2-*
如果之前安装过ROS 2 b3版本,在配置时会出现一些警告,最佳解决方法是卸载beta版本。
$ source /opt/ros/ardent/setup.bash
Warning: OSPL_URI was already set to [[file:///opt/ros/r2b3/share/opensplice_cmake_module/config/ros_ospl.xml]]. This will not override it to the default [[file:///opt/ros/ardent/share/opensplice_cmake_module/config/ros_ospl.xml]]. Please make sure this is the config that you want.
$ sudo apt-get remove ros-r2b3-*
6. 测试
使用消息收发进行测试,如下,如正常则安装完成,进入教程进行学习:


源码安装请参考官网,推荐优先阅读官网。

----

----
ROS1与ROS2的区别?http://design.ros2.org/articles/changes.html
ROS 1和ROS 2之间的区别
本文概述了ROS 2与ROS 1相比所做的更改。
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv12461
