问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ROS2:从初识到深入,探索机器人操作系统的进化之路

创作时间:
作者:
@小白创作中心

ROS2:从初识到深入,探索机器人操作系统的进化之路

引用
1
来源
1.
https://bbs.huaweicloud.com/blogs/439205

ROS2(机器人操作系统2)是机器人领域的重要开发平台,它在ROS1的基础上进行了全面升级,提供了更好的多机器人协作能力、跨平台支持、实时性能和网络安全性。本文将从ROS的发展历程出发,详细介绍ROS2的核心概念、安装方法和基本使用,帮助读者快速掌握这一强大的机器人开发工具。

ROS的发展历程

ROS(Robot Operating System)最早诞生于2007年的斯坦福大学,最初是为PR2机器人项目开发的软件框架。2010年,随着PR2机器人的发布,其中的软件正式确定了名称,即机器人操作系统(Robot Operating System),简称ROS。2014年起,ROS跟随Ubuntu系统,每两年推出一个长期支持版,每个版本支持五年时间,这标志着ROS的成熟,也让ROS加快了普及的步伐。在2022年5月底,迎来了ROS2第一个长期支持版——ROS2 Humble,ROS2已经成熟,我们也进入了一个全新的ROS2时代。

ROS的相关社区

ROS在全球范围内拥有活跃的开发者社区,主要网站包括:

  • answers.ros.org:这是一个ROS问答网站,开发者可以在这里提出任何关于ROS的问题,全球很多开发者都很乐意回答。
  • wiki.ros.org:这是ROS的维基百科,记录了ROS教程和各种功能包的使用。
  • discourse.ros.org:这是ROS论坛,关于ROS开发的新鲜事都可以在这里发表和查看,比如ROS的活动、新功能包的发布等。
  • index.ros.org:是ROS各种资源的一个索引网站。
  • packages.ros.org:是ROS功能包存储的数据库。

ROS与ROS2的对比

ROS最早的设计目标是开发PR2家庭服务机器人,这款机器人搭载了工作站级别的计算平台和各种先进的通信设备,主要用于学术研究。随着ROS的普及,应用ROS的机器人类型已经发生了巨大变化,不再局限于PR2这样的高端机器人。为了适应各种不同场景的机器人应用,ROS2应运而生,具有以下优势:

  1. 多机器人系统:ROS2为多机器人系统的应用提供了标准方法和通信机制。
  2. 跨平台支持:ROS2可以跨平台运行于Linux、Windows、MacOS、RTOS,甚至是没有任何系统的微控制器(MCU)上。
  3. 实时性:ROS2为机器人运动控制和行为策略提供了实时性保障。
  4. 网络连接:无论在怎样的网络环境下,ROS2都可以尽量保障机器人大量数据的完整性和安全性。
  5. 产品化:ROS2不仅可以用于机器人研发阶段,还可以直接搭载在产品中,走向消费市场。
  6. 项目管理:ROS2提供了全流程的项目管理工具和机制,更方便开发一款机器人。

DDS的介绍

DDS(Data Distribution Service)是物联网中广泛应用的一种通信协议,类似于5G通信。ROS2通过DDS实现了更可靠的通信机制。为了提高软件复用率,ROS2设计了一个ROS Middleware(RMW),定义了标准的通信接口,使得不同厂家的DDS系统可以轻松适配。

ROS2的核心概念

ROS2的核心概念包括节点(Node)、话题(Topic)、服务(Service)、动作(Action)等。节点是ROS2的基本单元,可以发布和接收数据;话题用于节点间的数据传输;服务用于节点间的请求响应;动作则用于长时间运行的任务。

ROS2的安装

在Ubuntu 20.04系统上安装ROS2 Foxy Fitzroy的步骤如下:

  1. 设置编码:

    sudo apt update && sudo apt install locales
    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
    
  2. 添加源:

    sudo apt update && sudo apt install curl gnupg lsb-release
    sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
    
  3. 安装ROS2:

    sudo apt update
    sudo apt upgrade
    sudo apt install ros-foxy-desktop
    
  4. 设置环境变量:

    source /opt/ros/foxy/setup.bash
    echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
    

ROS2的测试

安装完成后,可以通过以下命令测试ROS2的通信系统:

  1. 在第一个终端启动数据发布者节点:

    ros2 run demo_nodes_cpp talker
    
  2. 在第二个终端启动数据订阅者节点:

    ros2 run demo_nodes_py listener
    

如果看到持续输出的"hello world"信息,说明ROS2通信系统正常工作。

ROS2的命令行使用

ROS2提供了丰富的命令行工具,常用的命令包括:

  • 运行节点:

    ros2 run turtlesim turtlesim_node
    
  • 查看节点信息:

    ros2 node list
    ros2 node info /turtlesim
    
  • 查看话题信息:

    ros2 topic list
    ros2 topic echo /turtle1/pose
    

开发环境配置

推荐使用VSCode作为开发环境,安装以下插件:

  • Python插件
  • C++插件
  • CMake插件
  • vscode-icons
  • ROS插件
  • Msg Language Support
  • URDF插件
  • Markdown All in One

通过本文的介绍,读者可以全面了解ROS2的核心概念、安装方法和基本使用,为深入学习和开发机器人应用打下坚实的基础。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号