ROS2:从初识到深入,探索机器人操作系统的进化之路
ROS2:从初识到深入,探索机器人操作系统的进化之路
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应运而生,具有以下优势:
- 多机器人系统:ROS2为多机器人系统的应用提供了标准方法和通信机制。
- 跨平台支持:ROS2可以跨平台运行于Linux、Windows、MacOS、RTOS,甚至是没有任何系统的微控制器(MCU)上。
- 实时性:ROS2为机器人运动控制和行为策略提供了实时性保障。
- 网络连接:无论在怎样的网络环境下,ROS2都可以尽量保障机器人大量数据的完整性和安全性。
- 产品化:ROS2不仅可以用于机器人研发阶段,还可以直接搭载在产品中,走向消费市场。
- 项目管理: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的步骤如下:
设置编码:
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
添加源:
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
安装ROS2:
sudo apt update sudo apt upgrade sudo apt install ros-foxy-desktop
设置环境变量:
source /opt/ros/foxy/setup.bash echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
ROS2的测试
安装完成后,可以通过以下命令测试ROS2的通信系统:
在第一个终端启动数据发布者节点:
ros2 run demo_nodes_cpp talker
在第二个终端启动数据订阅者节点:
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的核心概念、安装方法和基本使用,为深入学习和开发机器人应用打下坚实的基础。