ROS2 vs ROS1。在Ubuntu 18.04上安装ROS2

ROS(机器人操作系统)自信地在机器人技术标准中占据领先地位。用一位著名的政治家的话来说,“不仅一切”都在使用它。
在本文中,我们将尝试看一下ROS开发的下一阶段-ROS2系统,它适合于更多“时尚”的开发人员。让我们从总体上比较两个系统,同时在Ubuntu 18.04上安装ROS2。



*从图像www.theconstructsim.com
稍微过时的模型将被用作基本PC配置-英特尔NUC(5i5RYK),4GB RAM,SSD M.2 120GB。NUC的性能足以满足ROS的要求,但故意不考虑单板卡(覆盆子,odroid和jetson),因为它们各自都有自己的特点。假定已经安装了Ubuntu 18.04(建议与ROS一起使用)。

介绍。


在过去的十年中,ROS(ROS1)增长了很多倍。当前,
他有大量的包装清单,其中每个包装都部分或
全部解决了该问题,这又消除了车轮发明的概念。社区创建的软件包导致创建了一种全新的机器人技术方法,并为现有系统提出了智能填充方案。

ROS1的局限性。


尽管ROS1具有与复杂的硬件和软件组件进行一定程度的通信自由的事实,但是在最终产品中使用ROS1仍存在一些困难。当有各种各样的异构机器人(移动机器人,机器人操纵器等)出现时,这些困难就开始出现。
由于ROS1的体系结构限制,在它们之间建立关系非常困难。
第一个限制是ROS1不支持多主机概念。
ROS1的第二个限制是,尽管节点之间可以毫无问题地进行通信,但是这种通信没有安全的方法。能够连接到主节点(主节点)的任何人都可以访问主题,然后利用或修改它们。因此,ROS1的主要目的是为了科学目的测试概念或原型。
第三,ROS1的主要局限性在于该系统不是实时系统。这导致接收数据的延迟及其丢失。
以上所有缺点推动了ROS2的产生。

ROS2有什么好处?


-允许您在系统组件(节点)之间建立安全连接
-实时交互
-简化了多个机械手到一个网络的连接
-改进
节点之间的通信质量-ROS体系结构级别直接在硬件上实现
-使用了最新的软件包更新(ROS1不经常更新)。

ROS2遵循行业标准,并通过所谓的DDS(数据分布式服务)概念实现实时交互。

ROS2版本


ROS2的第一个正式稳定版本于2017年12月发布。该发行版名为“ Ardent Apalone”。然后在2018年6月发布了一个名为“ Bouncy Bolson”的版本。Crystal Clemmys出现在2018年12月。DashingDiademata(当前版本)出现在2019年5月。如您所见,发行版本更新得非常愉快,希望字母表足够第一次。

操作系统支持


ROS2支持(如果我们谈论官方支持)Linux,Windows,macOS和实时操作系统(RTOS)OS层,仅ROS1支持Linux和macOS。
更详细的操作系统支持:


那么,为什么需要ROS2?


ROS2使用与ROS1相同的工作原理。同时,ROS2不属于ROS1。 ROS2的创建是为了通过使用较新的依赖项和工具来超越同行的极限。
与ROS1用C ++编写堆栈,用C ++和Python编写客户端库不同,ROS-2还使用C语言,引入了一个用C编写的独立级别,可与rclcpp,rclpy和ROS2客户端库交互。 rcljava。

ROS2更好地支持网络配置并实现可靠的连接。
ROS2也不再使用nodelet(http://wiki.ros.org/nodelet)的概念,并支持同时初始化多个节点(多节点初始化)的功能。与ROS1不同,ROS2的另一个显着特征是能够跟踪节点的状态并在添加或删除节点或主题时接收消息。这可以用来创建容错系统。

与ROS1相比,ROS2中发生的变化:


安装ROS2


因此,我们将从源代码安装Ubuntu 18.04上Dashing Diademata的最新发行版(虚线)

设置环境。


$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8


添加ROS2存储库。


$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc |
sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'


安装ROS开发人员工具。


$ sudo apt update && sudo apt install -y build-essential cmake git
python3-colcon-common-extensions python3-lark-parser python3-pip
python-rosdep python3-vcstool wget
$ python3 -m pip install -U argcomplete flake8 flake8-blind-except
flake8-builtins flake8-class-newline flake8-comprehensions flake8-
deprecated flake8-docstrings flake8-import-order flake8-quotes
pytest-repeat pytest-rerunfailures pytest pytest-cov pytest-runner
setuptools
$ sudo apt install --no-install-recommends -y libasio-dev libtinyxml2-dev


创建一个工作区ROS2。


$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws
$ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
$ vcs import src < ros2.repos

需要一些时间。

使用rosdep安装依赖项。


$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro dashing -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69
rti-connext-dds-5.3.1 urdfdom_headers"

如果一切顺利,并且终端中显示“成功安装所有必需的rosdeps”条目,则可以继续执行下一步。

我们收集代码,安装colcon。


在ROS1中,使用柳絮工具收集包裹。ROS2使用colcon(包含catkin_make,catkin_make_isolated,catkin_tools和ament_tools的实用程序)。colcon可以同时收集ROS1数据包和ROS2数据包。 最后一条命令后,您可以放心去喝茶了,因为 安装可能需要大约一个小时。 成功完成安装后,终端中将大致显示以下有关成功安装的信息:
$ sudo apt install python3-colcon-common-extensions
$ cd ~/ros2_ws/
$ colcon build --symlink-install






设置ROS2(环境)的环境。


为了避免每次在终端中启动ROS时都输入长命令'source〜/ ros2_ws / install / local_setup.bash',请在bashrc中添加别名:
$ sudo gedit ~/.bashrc

接下来,将行添加到文件末尾:
alias initros2='source ~/ros2_ws/install/local_setup.bash

保存,退出文件,然后使用命令重新读取(以免重启系统):
$ source ~/.bashrc

检查ROS2的运行情况。


第一终端: 这些命令启动通话节点。 第二终端: 在此分别启动“监听”节点。 从视觉上看,两个节点看起来都像这样: 您还可以在第3终端中查看由节点生成的主题:进行 总结。与ROS1相比,对ROS2进行了回顾,并演示了在Ubuntu 18.04上安装ROS2(破折号Diademata(虚线))的过程。
$ initros2
$ ros2 run demo_nodes_cpp talker




$ initros2
$ ros2 run demo_nodes_py listener










All Articles