ROS使用总结及ROS2知识

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ROS使用总结

1.什么是ROS?

✓ROS是机器人操作系统(Robot Operating System)的英文缩写。

✓ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。

✓ROS的原型源自斯坦福大学的STanford Artificial Intelligence Robot (STAIR) 和Personal Robotics (PR)项目。

通常这样解释ROS:

✓ 1. 通道:ROS提供了一种发布-订阅式的通信框架用以简单、快速地构建分布式计算系。

✓ 2. 工具:ROS提供了大量的工具组合用以配置、启动、自检、调试、可视化、登录、测试、终止分布式计算系统。

✓ 3. 强大的库:ROS提供了广泛的库文件实现以机动性、操作控制、感知为主的机器人功能。

✓ 4. 生态系统:ROS的支持与发展依托着一个强大的社区。尤其关注兼容性和支持文档,提供了一套“一站式”的方案使得用户得以搜索并学习来自全球开发者数以千计的ROS程序包。

ROS的简单理解:

➢ROS不是传统意义上的操作系统,而是一种系统软件框架

➢ROS使用面向服务的软件技术,通过网络协议将节点间数据通信解耦。这样可以轻松集成不同语言不同功能的代码。

➢ROS不是一种编程语言。

➢ROS不仅是一个函数库,除包含客户端外,还包含一个中心服务器、一系列命令工具、图形化界面工具以及编译环境。

2.ROS开发环境搭建

安装参考: /cn

(1)sudo rosdep init初始化rosdep,rosdep用于检查和安装软件包的依赖

(2)rosdep update初始化rosdep,在根目录下保存一些文件,文件夹名为.ros

(3)source /opt/ros/kinetic/setup.bash

设置ROS_PACKAGE_PATH等环境变量,ROS根据这些环境变量来定位文件setup.bash还定义了一些ros系统的bash函数,如roscd和rosls等.

(4)测试ROS是否正确安装

roscore

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key

在三个终端分别执行指令

3.ROS的重要概念

ROS有三个层级的概念,分别是:文件系统级、计算图级和开源社区级。

文件系统级:

ROS的内部结构、文件结构和所需的核心文件都在这一层里,理解ROS文件系统是入门ROS的基础。一个ROS程序的结构,是一些按不同功能进行区分的文件夹。一般的文件夹结构是:

Workspace(执行编译工具catkin_make的目录)

-----src(源文件空间文件夹,放各个功能包)

----package.xml + msg + srv + src + scripts

----include + CMakeList.txt + launch

-----build(编译空间文件夹)

-----devel(开发空间文件夹)

计算图级:主要是指进程之间(节点之间)的通信。ROS创建了一个连接所有进程的网络,通过这个网络节点之间完成交互,获取其他节点发布的信息。

开源社区级:主要是指ROS资源的获取和分享。通过独立的网络社区,我们可以共享和获取知识、算法和代码,开源社区的大力支持使得ROS系统得以快速成长

ROS中的重要概念说明

➢主节点(master)

主节点(master)负责节点到节点的连接和消息通信,类似于名称服务器(Name Server)。roscore是它的运行命令,当您运行主节点时,可以注册每个节点的名字,并根据需要获取信息。没有主节点,就不能在节点之间建立访问和消息交流(如话题和服务)。主节点使用XML远程过程调用(XMLRPC,XML-Remote Procedure Call)与节点进行通信。XMLRPC是一种基于HTTP的协议,主节点不与连接到主节点的节点保持连接。换句话说,节点只有在需要注册自己的信息或向其他节点发送请求信息时才能访问主节点并获取信息。通常情况下,不检查彼此的连接状态。由于这些特点,ROS 可用于非常大而复杂的环境。XMLRPC也非常轻便,支持多种编程语言,使其非常适合支持各种硬件和语言的ROS。

当启动ROS时,主节点将获取用户设置的ROS_MASTER_URI变量中列出的URI 地址和端口。除非另外设置,默认情况下,URI地址使用当前的本地IP,端口使用11311➢节点(Node)

作为ROS系统的核心,节点是用C++或Python(ROS客户端库roscpp、rospy)编写的程序,用来执行任务或进程。

➢消息(Message)

节点之间通过消息进行通信,这些消息包含一个节点发送给其他节点的信息数据,消息类型有ROS标准类型和基于标准消息开发的自定义类型两种。

➢话题(Topic)

话题消息通信是指发送信息的发布者和接收信息的订阅者以话题消息的形式发送和接收信息。

➢功能包(package)

功能包(package)是构成ROS的基本单元。ROS应用程序是以功能包为单位开发的。功能包包括至少一个以上的节点或拥有用于运行其他功能包的节点的配置文件。它还包含功能包所需的所有文件,如用于运行各种进程的ROS依赖库、数据集和配置文件等.

4. 话题通信机制(了解)

在这张图我们可以看出,在ROS中有两个节点分别是Talker和Listener,他们启动顺序没有要求,他们想要建立联系,那么他们分别发布,订阅的话题必须一致。

ROS 通信机制的过程

1) Talker启动,通过1234这个端口使用RPC向节点管理器(ROS Master)注册发布

者的信息,包含所要发布消息的话题名;随后ROS Master会将该节点的注册信息放入注册列表中储存起来,以等待接受此话题的接收者Listener。

2) Listener启动,通过使用TCP向节点管理器(ROS Master)注册接收者的信息,包

括所需订阅的话题名。

3) ROS Master根据Listener所需的订阅话题在注册列表寻找与之匹配的话题,如果没

有找到匹配的发布者,则等待发布者的加入,如果找到可以与之匹配的发布者信息,则可以通过RPC向Listener发送Talker的RPC地址信息。

相关文档
最新文档