最近找到的实习主要是智能车控制,使用的是ROS机器人操作系统。 ROS需要在操作系统上运行。最常用的操作系统是Linux,而公司使用的是Ubuntu,所以Ubuntu-ROS组合这是实习的主要学习内容。于是又开了一个新坑。网上有很多ROS资源。我只是来分享一下我的学习笔记。
1.ROS基本介绍
ROS官方的解释是框架、工具、功能和社区。
ROS实际上相当于一个使用分布式框架的软件工具集。通信框架是其主要组件,可以组合多个单独设计的进程(节点)并同时运行它们。
每个节点都可以实现各种功能,并通过ROS桥相互通信。这样的特性使其易于扩展和复用,从而大大提高了大型复杂机器人设计过程的效率。
ROS可以为开发者提供可视化界面工具,包括Gazebo、Rviz等用于仿真和调试的基础工具,以及各种基础程序包(控制、路径、规划等),只需在其上设计特殊功能即可将要执行。只需取出功能部件并将它们组合起来即可。
2.为什么选择Ubuntu系统
软件是机器人的核心。
机器人应用软件需要在操作系统上运行,该操作系统提供与机器人执行器和传感器通信的功能。基于Linux的操作系统在与底层硬件交互的过程中具有很大的灵活性,并提供相关权限允许用户根据机器人应用进行修改。在这个应用背景下,Ubuntu的快速响应能力、轻量级属性和高安全性的优势得到了体现。
目前,Ubuntu-ROS组合已经成为机器人编程的理想选择。
3.ROS框架
基本上,ROS 是两个程序或进程之间通信的框架。
例如,如果程序A想要向程序B发送数据,程序B也想要向程序A发送数据,这可以通过ROS轻松完成。
机器人可能有许多传感器、执行器和计算单元。我们如何控制如此多的执行器和如此多的传感器数据?我们可以只用一个程序来做到这一点吗?当然可以。但这不是一个好方法。
更好的解决方案是我们可以编写多个独立的程序来处理传感器数据并向执行器发送控制指令,但这需要这些程序之间进行数据交换,而这正是我们使用ROS的场景。
这两个程序分别标记为节点1 和节点2。当程序启动时,节点与称为ROS Master的ROS程序进行通信。节点向ROS Master发送所有信息,包括发送和接收的消息类型、本节点的路由信息等。发送信息的节点称为发布者节点,接收信息的节点称为订阅者节点。 ROS Master 拥有计算机上运行的所有发送节点和接收节点的信息。如果节点1发送了一些名为A的数据,而节点2恰好订阅了该消息,那么ROS Master就会向这两个节点广播彼此的节点信息(注意:不是消息),帮助它们建立连接,这样两个节点就可以可以互相交流。
ROS节点之间可以传输不同类型的数据,这些数据可以包括整数、浮点数、字符串等简单类型的数据。这些节点之间传输的不同类型的数据称为ROS消息(Messages)。通过ROS消息,我们可以在节点之间传输各种类型的数据。这些消息通过类似于数据总线或路径标识符的介质传播,我们将其称为ROS 主题。每个主题都有自己的名称,例如名为“chatter”的主题可以传输字符串数据。
如果ROS节点想要通过topic广播消息,只需要向ROS topic发送消息,并且消息中包含消息的数据类型(因此不需要单独告诉topics数据类型)。
在图4-12中,节点1和节点2通过ROS主题发送和接收消息。当ROS Master在两个节点之间交换信息后,两个节点之间发送和接收消息的过程就开始了。
5.ROS中的一些术语
ROS Node:使用ROS API执行操作的进程。
ROS主机(Master):连接ROS节点的媒体程序。
** ROS Parameter Server **:指通常与ROS Master一起运行的程序。用户在这台服务器上存储不同的参数,所有节点都可以访问,并且用户可以设置参数的保密性。如果参数是公共的,则所有节点都可以访问它;但如果参数具有私有属性,则只有特定节点可以访问它。
ROS主题:ROS节点可以通过其发送或接收信息的“总线”。一个节点可以发布或接收任意数量的主题。
ROS消息:消息基本上是通过主题来传输的。 ROS包含许多内置消息类型,但用户也可以定义自己的消息类型。
上一篇
鱼窝头工业用地,鱼窝头工业区