ROS学习笔记(零):ROS与机器人概述

ROS学习笔记(零):ROS与机器人概述

  • ROS
    • ROS的起源
    • ROS的特点
    • ROS架构设计
  • 机器人
    • 机器人的定义
    • 机器人的组成
      • 执行机构
      • 驱动系统
      • 传感系统
      • 控制系统

ROS

在这里插入图片描述

ROS的起源

ROS(Robot Operating System)是一个广泛使用的机器人操作系统,它的起源可以追溯到斯坦福人工智能实验室(Stanford AI Lab)的一个项目。该项目于2007年开始,由Morgan Quigley、Brian Gerkey和Willow Garage公司的其他员工共同开发。

最初,ROS的目的是为了帮助Willow Garage公司开发其PR2机器人,但随着时间的推移,ROS逐渐成为了一种用于构建和测试各种类型机器人软件的标准平台。ROS的发展历程可以分为三个主要阶段:Willow Garage时期、OSRF时期和Open Robotics时期。

(1)在Willow Garage时期,ROS主要用于开发PR2机器人的软件,并在机器人研究社区中获得了广泛的支持。ROS的第一个稳定版本(ROS 1.0)于2010年发布。

(2)2013年,OSRF(Open Source Robotics Foundation)成立,接管了ROS项目的开发和维护工作。在OSRF时期,ROS的重点是将其扩展到更广泛的机器人和其他机器人相关应用程序中。

(3)在2019年,OSRF和另一家机器人公司合并,成立了Open Robotics公司。ROS现在是Open Robotics的主要产品之一。ROS在全球范围内被广泛使用,并且拥有活跃的开发者社区和生态系统。

ROS的设计灵感来源于操作系统(OS)的思想,它提供了一些基本的功能,如硬件抽象层、设备驱动程序、消息传递、包管理等,使得开发者可以更容易地编写、测试和部署机器人软件。

ROS是一个开源项目,目前由ROS开发组维护。自2007年首次发布以来,ROS已经成为了机器人领域中广泛使用的系统框架之一。

ROS的特点

ROS的核心——分布式网络,使用了基于TCP/IP的通信方式,实现了模块间点对点的松耦合连接,可以执行若干种类型的通信,包括基于话题(Topic)的异步数据流通信,基于服务(Service)的同步数据流通信,还有参数服务器上的数据存储等。总的来说,ROS主要有以下几个特点

  1. 点对点的设计
  2. 多语言支持
  3. 架构精简、集成度高
  4. 组件化工具包丰富
  5. 免费且开源

ROS架构设计

ROS的架构可以将其分为三个层次:OS层、中间层和应用层。

  • OS层:ROS并不是一个传统意义上的操作系统,无法像Windows、Linux一样直接运行在计算机硬件上,而是需要依托于Linux系统。所以在OS层,我们可以直接使用ROS官方支持度最好的Ubuntu操作系统,也可以使用macOS、Arch、Debian等操作系统。

  • 中间层:Linux是一个通用系统,并没有针对机器人开发提供特殊的中间件,所以ROS在中间层做了大量的工作,其中最为重要的就是基于TCPROS/UDPROS的通信系统。ROS的通信系统基于TCP/UDP网络,在此之上进行了再次封装,也就是TCPROS/UDPROS。通信系统使用发布/订阅、客户端/服务器等模型,实现多种通信机制的数据传输。
    除了TCPROS/UDPROS的通信机制外,ROS还提供一种进程内的通信方法——Nodelet,可以为多进程通信提供一种更优化的数据传输方式,适合对数据传输实时性方面有较高要求的应用。
    在通信机制上,ROS提供了大量机器人开发相关的库,如数据类型定义、坐标变换、运动控制等,可以提供给应用层使用。

  • 应用层:在应用层,ROS需要运行一个管理者——Master,负责管理整个系统的正常运行。ROS社区内共享了大量的机器人应用功能包,这些功能包内的模块以节点为单位运行,以ROS标准的输入输出作为接口,开发者不需要关注模块内部实现的机制,只需要了解接口规则即可实现复用,极大地提高了开发效率。

从系统实现的角度来看,ROS也可分为三个层次:文件系统(程序文件是如何组织和构建的)、计算图(描述程序是如何运行的)和开源社区(ROS资源是如何分布式管理的)。

机器人

机器人的定义

机器人这个词的诞生最早可以追溯到20世纪初。1920年捷克斯洛伐克作家卡雷尔·恰佩克在他的科幻小说《罗萨姆的机器人万能公司》中,根据Robota(捷克文,原意是“劳役、苦工”和Robotnik(波兰文,原意是“工人”)创造出“机器人”这个词。

在这里插入图片描述

百度百科关于机器人的解释是:"机器人( Robot )是自动执行工作的机器装置。它既可以接受人类指挥,又可以运行预先编排的程序,也可以根据以人工智能技术制定的原则纲领行动。它的任务是协助或取代人类工作,如生产业、建筑业,或是危险的工作。

"美国机器人协会( RIA )关于机器人的定义是:"机器人是用以搬运材料、零件、工具的可编程序的多功能操作器或是通过可改变程序动作来完成各种作业的特殊机械装置。"我国科学家对机器人的定义是:"机器人是一种自动化的机器,所不同的是这种机器具备一些与人或生物相似的智能能力,如感知能力、规划能力、动作能力和协同能力,是一种具有高级灵活性的自动化机器。

"国际标准化组织( ISO )对机器人的描述如下。
1)机器人的动作机构具有类似于人或其他生物体的某些器官(肢体、感受等)的功能。
2)机器人具有通用性,工作种类多样,动作程序灵活易变。
3)机器人具有不同程度的智能性,如记忆、感知、推理、决策、学习等。
4)机器人具有独立性,完整的机器人系统在工作中可以不依赖于人的干预。

随着数字化的进展、云计算等网络平台的充实,以及人工智能技术的进步,很多机器人仅仅通过智能控制系统就能够应用于社会的各个场景之中。如此一来,机器人的定义将有可能发生改变,下一代机器人将会涵盖更广泛的概念。以往并未定义成机器人的物体也将机器人化,如无人驾驶汽车、智能家电、智能手机、智能住宅等。

机器人的组成

机器人是一个机电一体化的设备,从控制的角度来看,机器人系统可以分成四大部分:执行机构、驱动系统、传感系统和控制系统。

执行机构

执行机构是直接面向工作对象的机械装置,相当于人体的手和脚。根据不同的工作对象,适用的执行机构也各不相同。例如:常用的室内移动机器人一般采用直流电机作为移动的执行机构;而机械臂一般采用位置或力矩控制,需要使用伺服作为执行机构。

驱动系统

驱动系统负责驱动执行机构,将控制系统下达的命令转换成执行机构需要的信号,相当于人体的肌肉和筋络。不同的执行机构所使用的驱动系统也不相同,如直流电机采用较为简的 PWM 驱动板,而伺服则需要专业的伺服驱动器,工业上也常用气压、液压驱动执行机构。

传感系统

传感系统主要完成信号的输入和反馈,包括内部传感系统和外部传感系统,相当于人体的感官和神经。内部传感系统包括常用的里程计、陀螺仪等,可以通过自身信号反馈检测位姿状态;外部传感系统包括摄像头、红外、声呐等,可以检测机器人所处的外部环境信息。

控制系统

控制系统实现任务及信息的处理,输出控制命令信号,类似于人的大脑。机器人的控制系统需要基于处理器实现,一般常用的有 ARM 、x86等架构的处理器,其性能不同,可以根据机器人的应用选择。在处理器之上,控制系统需要完成机器人的算法处理、关节控制、人机交互等丰富的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/5191.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python图片相册批处理器的设计与实现批量添加图片水印、批量命名等功能

课题研究使用Python语言开发一个包含批量添加图片水印、批量命名等功能的图片批处理程序,功能模块大概包含以下模块: (1)首页模块:首页是整个软件的初始页面,包含用户登录、注册、关于本软件等功能&#xf…

红日(vulnstack)5 内网渗透ATTCK实战

环境配置 链接:百度网盘 请输入提取码 提取码:l8r7 攻击机:kali2022.03 192.168.135.128(NET模式) win7 192.168.138.136 (仅主机模式) 192.168.135.150 (NET模式) win2008 192.168.138.138 (仅主机模式) web渗透 1.nmap探测目标靶机开…

Qt学习笔记之SQLITE数据库

1. SQLite数据库介绍 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,…

SpringBoot(1)基础入门

SpringBoot基础入门SpringBoot项目创建方式Idea创建SpringBoot官网创建基于阿里云创建项目手工搭建SpringBoot启动parentstarter引导类内嵌tomcat基础配置属性配置配置文件分类yaml文件yaml数据读取整合第三方技术整合JUnit整合MyBatis整合Mybatis-Plus整合DruidSpringBoot是由…

运动健康路线导入,助力用户轻松导航

华为HMS Core运动健康服务支持通过REST API,以GPX文件格式写入用户路线数据,支持导入轨迹(Track)或路程(Route)类型的数据,实现用户路线数据在华为运动健康App中的展示效果。 假若与华为运动健…

​selenium+python做web端自动化测试框架与实例详解教程​

下面有详细的代码介绍,如果不是很明白的话,可以看看这套视频,在哔站学习人数超过数万人! 在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!_哔哩哔哩_bilibili在华为工作了10年的大佬出的W…

分享NVIDIA GTC干货_用软件引领车辆电子架构

随着软件定义功能变得更多,车辆电气/电子架构正在从分布式计算演变为集中式计算。通过将这台集中式超级计算机与人工智能融合在一起,开发模块化软件并创建数据中心基础设施。 电子架构 EEA(Electrical and Electronic Architecture) 首先介绍下EEA&am…

Ansys Zemax | 如何建模离轴抛物面镜

离轴抛物面反射镜是光学工业中一种重要的设计类型。本文演示了如何根据制造商给出的规格设计一个离轴抛物面反射镜,并演示如何使用主光线求解将像面中心与主光线路径对齐。(联系我们获取文章附件) 简介 离轴抛物面反射镜的优点是光束通过反射到达像面途中将不会受…

Winform控件开发(25)——TabControl(史上最全)

一、属性 1、Name 用于获取控件对象 2、AllowDrop 指示用户是否可以拖动数据到TabCotrol上 3、TabCotrol 3.1 Top 沿控件的底部放置选项卡 3.2 Left 沿控件的左边缘放置选项卡 3.3 Right 沿控件的右边缘放置选项卡 3.4 Bottom 沿控件的顶部放置选项卡 4、Anchor 锚定控件…

第18章_MySQL8其它新特性

第18章_MySQL8其它新特性 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,…

新一轮商业革命将至,张勇用“敏捷组织”率先交出答卷

一向拥抱变化的阿里再一次拥抱变化。2023年3月28日,阿里宣布了新的组织变革,这应该是迄今为止,阿里最重要的组织变革,其变革力度之大堪称前所未有。具体而言,阿里集团将设立云智能、淘宝天猫商业、本地生活、国际数字商…

口罩检测——环境准备(1)

文章目录前言一、工具及环境要求工具本地环境要求二、工具介绍1.labelimg2.AI Studio3.YOLO2COCO4.PaddleUtils5.paddleyolo三、库的安装总结前言 小编之前做过一期《OpenVINO-yolov5推理》,点开博客自动播放视频甚至有点吵,想过删掉,但是想到…

Day924.自动化测试 -系统重构实战

自动化测试 Hi,我是阿昌,今天学习记录的是关于自动化测试的内容。 自动化测试是一个很容易产生“争议”的话题,也经常会有一些很有意思的问题。 自动化测试不是应该由测试同学来编写吗,开发是不是没有必要学吧?之前…

Lesson 9.1 集成学习的三大关键领域、Bagging 方法的基本思想和 RandomForestRegressor 的实现

文章目录一、 集成学习的三大关键领域二、Bagging 方法的基本思想三、RandomForestRegressor 的实现在开始学习之前,先导入我们需要的库,并查看库的版本。 import numpy as np import pandas as pd import sklearn import matplotlib as mlp import sea…

【MySQL速通篇001】5000字超详细介绍MySQL部分重要知识点

🍀 写在前面 这篇5000多字博客也花了我几天的时间😂,主要是我对MySQL一部分重要知识点的理解【后面当然还会写博客补充噻,欢迎关注我哟】,当然这篇文章可能也会有不恰当的地方【毕竟也写了这么多字,错别字可…

Linux常用命令——ldconfig命令

在线Linux命令查询工具 ldconfig 动态链接库管理命令 补充说明 ldconfig命令的用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程…

python框架有哪些,常用的python框架代码

Python的应用已经相当广泛了,可以做很多事情,而 Python本身就是一个应用程序,我们也可以说 Python是一个高级语言。由于 Python有很多包,所以我们不能把所有的 Python包都了解一下,也不能把所有的包都读一遍&#xff0…

35岁大龄程序员职业转型规划

35岁大龄程序员职业转型规划 I. 引言 在当今快速发展的IT行业,程序员这个职业变得越来越重要。但是,对于35岁以上的程序员来说,面临的职业困境也越来越严峻。他们不仅面临着技术的迭代更新,而且还面临着市场的竞争和年轻程序员的…

碳交易机制下考虑需求响应的综合能源系统优化运行

说明书 资源链接:https://download.csdn.net/download/qq_50594161/87610405https://download.csdn.net/download/qq_50594161/87610405 https://download.csdn.net/download/qq_50594161/87607550https://download.csdn.net/download/qq_50594161/87607550https:…

String源码深度刨析

前言 我们将从源码角度深度分析特点,来提升对他们的了解以及设计。 String、StringBuilder、StringBuffer的常见面试题及四大区别可以参考:String、StringBuilder、StringBuffer的四大区别解析 String public final class Stringimplements java.io.Se…