ROS总结(一)

目前无人驾驶系统的实际实现仍然依赖于ROS,作为一个相对成熟的机器人软件平台,ROS虽然存在一些缺点,在无人驾驶系统的系统实现上,ROS仍然是开源框架中最好的选择,这也是为什么诸如Apollo,Autoware等无人驾驶开源项目会选择ROS。

ROS简介

  1. 通道:ROS提供了一种发布-订阅式的通信框架用以简单、快速地构建分布式计算系
  2. 工具:ROS提供了大量的工具组合用以配置、启动、自检、调试、可视化、登录、测试、终止分布式计算系统;
  3. 能力:具有控制,规划,预测,定位操纵等功能;
  4. 生态系统:ROS的支持与发展依托着一个强大的社区。ros.org尤其关注兼容性和支持文档,提供了一套“一站式”的方案使得用户得以搜索并学习来自全球开发者数以千计的ROS程序包。

ROS特性

  1. 点对点设计:ROS的点对点设计以及服务和节点管理器等机制可以分散由计算机视觉和语音识别等功能带来的实时计算压力,能够适应多机器人遇到的挑战。
  2. 分布式设计:程序可以在多核计算机中运行,并且可以通过网络来通信。
  3. 多语言:ROS现在支持许多种不同的语言,例如C++、Python、Octave和LISP,也包含其他语言的多种接口实现。语言无关的消息处理,让多种语言可以自由的混合和匹配使用。
  4. 轻量级:鼓励将所有的驱动和算法逐渐发展成为和ROS没有依赖性单独的库。ROS建立的系统具有模块化的特点,各模块中的代码可以单独编译,而且编译使用的CMake工具使它很容易的就实现精简的理念。ROS基本将复杂的代码封装在库里,只是创建了一些小的应用程序为ROS显示库的功能,就允许了对简单的代码超越原型进行移植和重新使用。
  5. 免费且开源:ROS大多数的源代码都是公开发布的。

ROS概念

  • master(主机)
  • node(节点)
  • topic(主题)
  • message(消息)
master

用于管理节点间的通信,ROS Master 通过RPC(Remote Procedure Call Protocol,远程过程调用)提供了登记列表和对其他计算图表的查找。没有控制器,节点将无法找到其他节点,交换消息或调用服务。
开启Master命令:roscore

node(节点)

节点就是一些独立编译,执行运算任务的进程。ROS利用规模可增长的方式使代码模块化:一个系统就是典型的由很多节点组成的。在这里,节点也可以被称之为“软件模块”。我们使用“节点”使得基于ROS的系统在运行的时候更加形象化:当许多节点同时运行时,可以很方便的将端对端的通讯绘制成一个图表,在这个图表中,进程就是图中的节点,而端对端的连接关系就是其中弧线连接。

运行节点,rosrun package_name node_name

查看激活节点列表,rosnode list

检索有关节点信息,rosnode info node_name

topics 主题

在ROS中消息以一种发布/订阅的方式传递。一个节点可以在一个给定的主题中发布消息。一个节点针对某个主题关注与订阅特定类型的数据。可能同时有多个节点发布或者订阅同一个主题的消息。总体上,发布者和订阅者不了解彼此的存在。

查看激活主题:rostopic list
订阅和打印一个主题的内容:rostopic echo /topic
显示主题相关信息: rostopic info /topic

(未完待续)

0%