0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ROS基本介绍

jf_78858299 来源:控制工程研习 作者:C27 2023-05-19 17:07 次阅读

近来找到的实习主要是做智能车控制,用到的也就是ROS机器人操作系统,ROS需要运行在一个操作系统上,这个操作系统常用的就是Linux,而公司用的就是Ubuntu,所以Ubuntu-ROS组合就是实习的主要学习内容了。所以我就新开了一个坑,网络上ROS的资源很丰富,我在此只是用以分享学习笔记。

1. ROS基本介绍

ROS是主流的机器人操作系统

官方将ROS解释为框架、工具、功能和社区。

ROS实际上相当于一个 软件工具集 ,采用分布式框架,通信框架是其主要组成部分,可将多个单独设计的进程(节点)组合起来并同时运行。

各节点可实现各种不同的功能,并通过ROS这一桥梁实现相互通信。这样的特点使其拓展性好,复用率高,极大地提高了庞大和冗杂的机器人设计过程的效率。

ROS能给开发人员提供可视化界面工具,包含诸如Gazebo、Rviz等用于仿真和调试的基本工具,以及各种基础程序包(控制、路径、规划等),只需在其上设计所要实现的特殊功能的部分并将它们组合起来即可。

2. 为什么选择Ubuntu系统

软件是机器人的核心。

机器人应用软件需要运行在一个操作系统上, 该操作系统可以提供与机器人作动器和传感器通信的功能 。基于Linux的操作系统在与底层硬件交互的过程中具有极大的灵活性,并且提供相关许可允许用户根据机器人应用对其进行修改。在这种应用背景下,Ubuntu快速响应能力、轻量级属性及高度安全性的优点得以展现。

当前,Ubuntu-ROS组合已成为机器人编程的一个理想选择。

3. ROS框架

从根本上说,ROS是两个程序或进程间通信的框架。

For example,如果程序A想要向程序B发送数据,并且程序B也想要向程序A发送数据,那么可以轻松地用ROS实现这项工作。

一个机器人可能有许多传感器、作动器和计算单元。怎样才能做到控制这么多作动器及这么多传感器数据呢?我们可以只用一个程序完成这些吗?这当然可以。但是这并不是一个好方法。

更好的解决方案是我们可以编写多个独立的程序来处理传感器数据、向作动器发送控制指令,但是这就需要在这些程序之间进行数据交换,而这恰恰就是我们使用ROS的场景。

4. ROS中两个程序之间的通信如何完成

两个程序分别被标记为节点1和节点2。当程序启动时,节点便会和名为ROS Master的ROS程序通信。节点将所有信息发给ROS Master,包括它发送和收到的消息类型、本节点路由信息等。发送信息的节点称为发布节点(Publisher Nodes),接收信息的节点称为订阅节点(Subscriber Nodes)。ROS Master拥有在计算机上正在运行的所有发送节点和接收节点的信息。如果节点1发送某个名为A的数据,而节点2正好订阅了该消息,那么ROS Master就向两个节点广播彼此的节点信息(注意:不是消息)以帮助它们建立连接,这样两个节点就可以互相通信了。

图片

ROS节点可以彼此间互相传送不同类型的数据,这些数据可以包含像整数、浮点数、字符串等这类简单类型的数据。这些节点间相互传递的不同类型的数据称为 ROS消息(Messages) 。有了ROS消息,我们就可以在节点之间传递各种类型的数据了。这些消息通过一种类似于数据总线或者路径标识的媒介进行传播,我们称为ROS话题(Topics)。每一条话题都有自己的名字,比如一个可以传输字符串数据的名为“chatter”的话题。

如果一个ROS节点想通过话题广播消息,那么它只需要给ROS话题发送消息即可,消息中就包含了消息的数据类型(所以不用另外告知topics 数据的类型)。

图4-12中,节点1和节点2就是通过ROS话题发送和接受消息的。当ROS Master交换完两个节点的信息之后,两个节点间消息的发送和接收过程就开始了。

5. ROS中的一些名词

ROS节点(Node) :使用ROS API进行运算的进程。

ROS主机(Master) :连接ROS节点的媒介程序。

** ROS参数服务器(Parameter Server)** :指通常与ROS Master一起运行的一个程序。使用者在此服务器上存储不同的参数,所有的节点都可以访问它,使用者可以设置参数的保密性。如果某个参数是公共的,那么所有节点都可以访问;但如果某个参数具有私有属性,那么只有特定的节点才可以访问这个参数。

ROS话题(Topic) :即“总线”,ROS节点可以通过该总线发送或接收信息。一个节点可以发布或者接收任意数量的话题。

ROS消息(Message) :消息基本上都是通过话题传送的。ROS含有许多内建的消息类型,当然使用者也可以定义他们自己的消息类型。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    206

    文章

    27048

    浏览量

    201430
  • 操作系统
    +关注

    关注

    37

    文章

    6290

    浏览量

    121897
  • Ubuntu
    +关注

    关注

    5

    文章

    533

    浏览量

    28845
  • ROS
    ROS
    +关注

    关注

    1

    文章

    272

    浏览量

    16686
收藏 人收藏

    评论

    相关推荐

    ROS与RPLIDAR结合使用说明及问题汇总

    的ROSpackage rplidar_ros介绍:rplidar_ros是国内第一款面向全球ROS开发者推出相应package的激光雷达,其低廉的价格大大推动了激光雷达在
    发表于 09-07 16:27

    ROS RIKIBOT基础--使用系列 第一章节】ROS机器人硬件系统 精选资料分享

    ROS RIKIBOT基础–使用系列】ROS机器人硬件介绍1.RIKIBOT机器人硬件介绍1.1硬件框架ROS机器人硬件 采用树莓派和ST
    发表于 07-30 06:59

    ROS2的安装与使用 精选资料推荐

    ros2的乌龟仿真turtlesim,介绍topic,service,action等元素及其使用,介绍ros的基本操作
    发表于 08-30 08:24

    什么是ROS?如何学习ROS

    什么是ROS?如何学习ROS
    发表于 11-11 07:21

    ROS简介

    目录一、ROS简介1、什么是ROS2、ROS产生、发展和壮大的原因和意义二、在Ubuntu系统中,安装对应版本的ROS软件1、确定Ubuntu配置2、添加
    发表于 12-17 08:24

    什么是ROSROS产生、发展和壮大的原因和意义

    机器人操作系统(ROS)入门(嵌入式系统应用开发)一、ROS 基本问题1. 什么是 ROS2. ROS 产生、发展和壮大的原因和意义二、安装 ROS
    发表于 12-17 06:08

    ROS是什么?机器人操作系统ROS介绍

    ROS 是 Robot Operating System 的缩写,原本是斯坦福大学的一个机器人项目,后 来由 WillowGarage 公司发展,目前由 OSRF(Open Source
    发表于 09-13 17:23 14次下载
    <b class='flag-5'>ROS</b>是什么?机器人操作系统<b class='flag-5'>ROS</b>的<b class='flag-5'>介绍</b>

    ROS的含义与机器人操作系统ROS介绍

    为了说明讲清楚 ROS,我就从 ROS 是什么,为什么使用 ROS,如何使用 ROS 三个方面展开。 △出自今年《机器人视觉与应用》课程本人制作的课件 是什么
    发表于 09-26 14:08 12次下载

    机器人操作系统入门课程讲义资料免费下载

    ,受到了学术界和工业界的欢迎,如今已经广泛应用于机械臂、移动底盘、无人机、无人车等许多种类的机器人上。本章介绍ROS的产生、发展、特点和安装方法,带给你一个简单直观的ROS介绍
    发表于 10-09 08:00 5次下载

    ROS学习笔记之ROS基本概念

    ROS的概念分为三个层次:文件系统层、计算图层、社区层,这些层次以及概念将会在接下来的章节介绍。 除了这三个层次的概念,ROS同样定义两个names类型,包资源名称和图形资源名称。
    的头像 发表于 05-19 17:11 1274次阅读
    <b class='flag-5'>ROS</b>学习笔记之<b class='flag-5'>ROS</b>基本概念

    ROS1的通信架构的基础通信方式及相关概念

    ROS的通信架构是ROS的灵魂所在,它包括数据处理,进程运行,消息传递等** 。这篇文章主要介绍ROS1的通信架构的基础通信方式和相关概念,因为RO
    的头像 发表于 05-19 17:23 2883次阅读
    <b class='flag-5'>ROS</b>1的通信架构的基础通信方式及相关概念

    ROS/ROS 2 介绍

    ROS是机器人操作系统(Robot Operating System)的英文缩写。ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。ROS的原型源自斯坦福大学的STanford
    的头像 发表于 05-19 17:45 3486次阅读
    <b class='flag-5'>ROS</b>/<b class='flag-5'>ROS</b> 2 <b class='flag-5'>介绍</b>

    如何初始化ROS并创立链接

    ROS1完成了介绍。 对ROS的Simulink支持包括一个Simulink块库,用于为指定的主题发送和接收
    的头像 发表于 11-15 17:26 261次阅读
    如何初始化<b class='flag-5'>ROS</b>并创立链接

    Unity与ROS链接介绍

    对于ROS而言,其最常用的就是Topic话题以及Service两个了。之前我们在了解Unity Robotics Hub时候就了解到基本的Unity和ROS的通讯,下面我们来详细介绍一下Unity
    的头像 发表于 11-17 17:22 496次阅读
    Unity与<b class='flag-5'>ROS</b>链接<b class='flag-5'>介绍</b>

    ROS核心框架介绍

    ROS核心框架 对于第一个问题,我也没仔细研究过源码,核心代码基本由python和C++组成,运用了xmlrpc机制,每个运行的节点可以理解成一个进程。进程间通讯有些是共享内存的方式(比如
    的头像 发表于 11-21 18:07 488次阅读
    <b class='flag-5'>ROS</b>核心框架<b class='flag-5'>介绍</b>