ros介绍

ROS诞生于2007年的斯坦福大学,英文全称(Robot Operating System),但ROS本身并不是一个操作系统,而是可以安装在现在已有的操作系统上(Linux、Windows、Mac)上的软件库和工具集。

而ROS就是一个比较强大、灵活的机器人编程框架。从软件架构的层面来说,它是一个基于消息传递的分布式多进程框架。ROS基于消息机制的通信,使开发者可以根据功能把软件拆分成独立的子模块,子模块通过不断的组合,建立起比较复杂的系统来完成复杂的功能,这些特点能很好地适应机器人操作系统框架的要求。

为什么会出现ros?

在ROS没有出现之前,做一个机器人是非常复杂的一件事情,因为一个机器人需要涉及到多个部分,而且这些部分之间还要进行通信。

例如设计一个像下图一样的轮式移动机器人,我们对其进行拆解。可以分为感知、决策、控制三个部分。

image-20210717150453689.png

  • 感知部分有:激光雷达、深度相机、IMU、里程计、碰撞感知、建图
  • 决策部分有:路径规划(navigation)算法、定位算法
  • 控制部分有:轮子驱动

机器人复杂之处就在于此,如果想要整个机器人可以跑起来,那么必须要有一个东西将上面的几个部分合理的连接到一起,这个东西就是ROS。
ROS的作用就像我们的身体的神经系统一样,通过神经系统将我们身体的各个部分接入大脑。

ROS的发展

image-20220521163555519.jpg
ROS2继承了ROS原有的优秀之处,同时又带来了很多新的功能,ROS2相对于ROS更加的强大。

ros网站:
https://docs.ros.org/

ros和ros2

ROS目前推出了ROS1和ROS2两个版本,ROS1节点间的数据传递通过TCP/UDP通信,大量的系统资源都浪费在通讯上,通信实时性也不能得到保障。除此之外,ROS1 通过一个核心的master 节点管理所有节点间的通信,master节点的崩溃将会导致整个系统运行错。ROS2在ROS1的基础上做了以下改进优化:
1.ROS2引入了数据分发服务(DDS)通信协议,它可以以零拷贝的方式传递消息,节省了CPU和内存资源,同时增加通信的实时性;
2.ROS2还去除了ros master这个中心节点管理器,改进了ROS1对master节点的高度依赖的缺点;
3.ROS 1主要使用C++和Python作为开发语言,而ROS 2提供了更广泛的语言支持,包括C++、Python、Java、JavaScript等。这使得ROS 2更具有跨平台和多语言开发的能力。