钊2021

V1

2022/08/30阅读:21主题:默认主题

机器人操作系统ROS(1)

ROS发展现状
ROS发展现状

ROS总体设计

总体设计
总体设计

ROS五个特点

  • 点对点设计

一个使用ROS的系统包括一系列进程,这些进程存在于多个不同的主机并且在运行过程中通过端对端的拓扑结构进行联系,如图2所示。虽然基于中心服务器的那些软件框架也可以实现多进程和多主机的优势,但是在这些框架中,当各电脑通过不同的网络进行连接时,中心数据服务器就会发生问题。ROS的点对点设计以及服务和节点管理器等机制可以分散由计算机视觉和语音识别等功能带来的实时计算压力,能够适应多机器人遇到的挑战 在这里插入图片描述

  • 多语言支持

ROS现在支持许多种不同的语言,例如C++、Python、Octave和LISP,也包含其他语言的多种接口实现

  • 精简与集成

(1)ROS建立的系统具有模块化的特点,各模块中的代码 可以单独编译,而且编译使用的CMake工具使它很容易的就实现精简的理念。 (2)集成众多开源接口 (3)接口统一,软件复用性高

  • 具有丰富的工具包,且免费开源 组件化
  • 免费 开源

如何学习ROS?

要想学ROS,应该从哪里入手,它的先后顺序是怎样的呢?ROS由四大部分构成,第一个是基础结构,这些通讯机制是如何实现的;第二个是工具,包括仿真工具、调试工具等;第三个是体现它功能的package;第四个就是社区,如何去上面下载、发布代码,和其他开发者交流学习。

ROS核心概念

Node节点

节点是各自独立的可执行文件,能够通过话题、服务或参数,与服务器或其他进程(节点)通信。

同时,节点允许了ROS系统能够布置在任意多个机器上并同时运行。关于节点需要注意的事项,节点在系统中必须有唯一的名称;节点可以使用不同的库进行编写,如roscpp和rospy,其中roscpp基于C++,rospy基于Python。

Messages and Topics消息与话题(或主题)

节点之间通过topic机制进行通信,topic机制是一个一对多的Publish/Subscribe 模式: 同一个话题也可以有很多个订阅者,它的底层传输依靠的是TCP/IP,也可以是UDP。topic具体传输的message,具有一定的类型和数据结构,包括ROS提供的标准类型,和用户自定义类型。 话题

Services and Parameters服务与参数

除了topic,ROS还提供另一种一对一的机制,也就是Service/Client,当你==需要直接与节点通信并获得应答时==,将无法通过话题实现,这时需要使用该服务。 服务 话题与服务的区别

ROS Master ROS管理器

Master向ROS系统中其他节点提供命名和注册服务,跟踪和记录话题的发布者和订阅者,使ROS 节点之间能够相互查找。一旦节点找到了彼此,就能建立一种点对点的通信方式。

Stacks and packages堆栈与功能包

那么如何组织代码呢?这主要依靠功能包(Package) ,ROS中软件组织的基本形式,用于创建ROS程序。功能包包含源代码和功能包清单(Manifest) 。功能包清单提供关于功能包、许可信息、依赖关系、编译标志等的信息。功能包清单是一个manifests.xml文件,通过这个文件能够实现对功能包的管理。

ROS核心模块

ROS核心模块包括通信结构基础、机器人特性功能以及工具集。

  • 通信结构基础包括消息传递、记录和回放消息、远程过程调用、分布式参数系统;
  • 机器人特性功能包括标准机器人消息,机器人几何库,机器人描述语言,抢占式远程过程调用,诊断,位置估计、定位与导航;
  • 工具集包括命令式工具、可视化工具以及图形化接口。 图源链接1

ROS核心工具

ROS拥有很多第三方的核心工具的支持,或者说Package。比较常见的是这五个工具:

  1. Gazebo是一个三维仿真环境;
  2. OpenCV是计算机视觉库;
  3. PCL是点云库;
  4. MoveIt!是机械臂的规划控制库;
  5. Industrial是工业上会用的库;
  6. 另外MRPT,是一个非常好的机器人编程工具箱。然后,如果对实时控制要求比较高的话,可以考虑The Orocos Project。

ROS常用命令工具包括rostopic (Topics)、rosservice (Services)、rosnode (Nodes)、rosparam (Parameters)、rosmsg (Messages)、rossrv (Services)和roswtf (General debugging)。

ROS用的最多的==可视化工具==是rqt(集成图像交互界面)和 rviz(3D 可视化工具)。

ROS具有非常强的==数据存储/回放功能==,也就是使用bag存储topic(例如现实中的传感器数据),以后调用bag的topic数据则不必每次都在现实中运行机器人,速度非常快。

==ROS log系统==记录软件运行相关信息,便于以后的调试。

仿真环境由易到难主要有这三个:Turtlesim、ArbotiX、Gazebo。
Turtlesim是一个QT开发的2D轨迹显示界面,只能显示运动轨迹; ArbotiX是含有一个差速驱动机器人的rviz模拟器,机器人运动及topic数据的3D显示,但不包含物理学引擎; Gazebo是功能齐全的3D物理模拟器,不过缺点是非常重,对内存和显卡要求高,慎入

ROS文件系统

版本选择

目前,ROS是一年推出一个版本。通过下载统计,我们发现现在使用最多的还是Indigo,所以对于初学者,建议还是使用这个版本,因为这是目前使用人数最多、坑最少的版本。而如果Linux编程能力比较强的,可以使用Kinetic,它可以一直支持到2021年。然后,你在选择Ubuntu版本时,要与ROS版本需匹配。

参考

  1. ROS中文社区 http://wiki.ros.org/cn
  2. 机器人操作系统ROS(一)-初识 [https://www.jianshu.com/p/0869eec39a3b]
  3. 深蓝学院 机器人操作系统ROS理论

分类:

人工智能

标签:

人工智能

作者介绍

钊2021
V1