认识ROS

ROS=通信机制+开发工具+应用功能+生态系统

目的:提高机器人研发中的软件复用率。

1、ROS中的通信机制

松耦合分布式通信:

注意:什么是耦合、紧耦合、松耦合?

1.1 耦合

  耦合是两个或多个模块之间的相互关联。在软件工程中,两个模块之间的耦合度越高,维护成本越高。因此,在系统架构的设计过程中,应减少各个模块之间的耦合度,以提高应用的可维护性。

1.2 紧耦合

  紧耦合架构本质是Cliernt/Server的模型,如下图所示:

优点是:架构简单、设计简单、开发周期短、能够快速的开发、投入、部署、应用。 但随着集群规模的扩大,系统的稳定性逐渐变差,主要原因如下: 1、同步操作导致对网络资源消耗大。同步操作在数据发送和数据返回之间,有很大一段是空闲的,这种空闲占用是对网络资源的极大浪费。 2、安全控制力度差,因为服务器直接暴露给客户机,容易引发网络攻击行为。 3、程序代码之间关联度过高,不利于模块化处理。

1.3 松耦合

  松耦合架构本质上是在cliernt/server模型之间加入一个代理,把CS模型变成CAS模型。 在新的架构下,客户机的角色不变,代理服务器承担起与客户机的通信,和对客户机的识别判断工作,服务器位于代理服务器后面,对客户机来说不可见,它只负责数据处理工作,另外我们也把CS模型的同步操作改为CAS的代理处理。 如下图所示:

优点如下:

  • 多任务并行处理能力获得极大提升。

  • 实现负载自适应机制(根据当时运行环境,松耦合架构分配并行工作任务,避免超载现象)。

  • 基本杜绝了对Server服务端的网络攻击行为,由于代理服务器的隔绝和筛查作用, 同时结合其它安全管理手段,外部攻击在代理服务器处就被识别和过滤掉了,这样就保护了后面的服务器不受影响。

  • 异步操作减少了网络资源消耗和操作关联。

  • 提高了系统的可维护性。

2、ROS中的开发工具

2.1命令行&编译器

2.2 TF坐标变换

2.3 QT工具箱

2.4 Rviz

2.5 Gazebo

3、ROS中的应用功能

3.1 Navigatiorn

3.2 SLAM

3.3 MoveIt

4、ROS 中的生态系统

ROS中的核心概念

1、通信机制

2、节点与节点管理器

3、话题通信

4、服务通信

5、话题VS服务

6、参数

7、文件系统

ROS通讯机制介绍

机器人是一种高度复杂的系统性实现,在机器人上可能集成各种传感器(雷达、摄像头、GPS...)以及运动控制实现,为了解耦合,在ROS中每一个功能点都是一个单独的进程,每一个进程都是独立运行的。更确切的讲,ROS是进程(也称为Nodes)的分布式框架。 因为这些进程甚至还可分布于不同主机,不同主机协同工作,从而分散计算压力。不过随之也有一个问题: 不同的进程是如何通信的?也即不同进程间如何实现数据交换的?在此我们就需要介绍一下ROS中的通信机制了。

ROS 中的基本通信机制主要有如下三种实现策略:

  • 话题通信(发布订阅模式)

  • 服务通信(请求响应模式)

  • 参数服务器(参数共享模式)

本章的主要内容就是是介绍各个通信机制的应用场景、理论模型、代码实现以及相关操作命令。

  • 能够熟练介绍ROS中常用的通信机制

  • 能够理解ROS中每种通信机制的理论模型

  • 能够以代码的方式实现各种通信机制对应的案例

  • 能够熟练使用ROS中的一些操作命令

  • 能够独立完成相关实操案例

控制小乌龟做矩形运动

  • 启动master节点
roscore

  • 启动小乌龟仿真
rosrun turtlesim turtlesim_node

  • 运行小乌龟矩形运动节点
rosrun turtlesim draw_square

运行结果如下图:

获取乌龟位姿

确保前面的小乌龟做矩形运动执行正常后,不关闭前面运行的终端,打开新的终端输入下面的指令获取当前小乌龟的位置与姿态。

rostopic echo /turtle1/pose

在指定位置生成乌龟

确保前面的小乌龟运行正常的情况下,新打开一个终端运行下面的指令,在x:5,y:5的位置上生成一个名为"turtle2"的小乌龟

rosservice call /spawn 5 5 0 "turtle2"

results matching ""

    No results matching ""