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主要有以下几个特点
- 点对点的设计
- 多语言支持
- 架构精简、集成度高
- 组件化工具包丰富
- 免费且开源
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等架构的处理器,其性能不同,可以根据机器人的应用选择。在处理器之上,控制系统需要完成机器人的算法处理、关节控制、人机交互等丰富的功能。
查看全文
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2099816.html
如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!
相关文章:
ROS学习笔记(零):ROS与机器人概述
ROS学习笔记(零):ROS与机器人概述ROSROS的起源ROS的特点ROS架构设计机器人机器人的定义机器人的组成执行机构驱动系统传感系统控制系统ROS ROS的起源
ROS(Robot Operating System)是一个广泛使用的机器人操作系统&……
Spring —— Spring简单的读取和存储对象Ⅰ
JavaEE传送门JavaEE
Spring —— 初学 Spring, 理解控制反转
Spring —— Spring 的创建与使用 目录Spring 简单的读取和存储对象存储 Bean 对象配置扫描路径添加注解存储 Bean 对象Controller (控制器存储)Service(服务存储)Repository(仓……
Java 16 JPackage 打包可执行 exe
博文目录 文章目录Maven 工程结构pom.xmlcom.mrathena.Gui打包 jar (idea 自带功能)Java 16 JPackage部分参数说明WIX v3非模块化工程打包打包为安装程序打包为可执行程序模块化工程打包Maven 工程结构 pom.xml
<?xml version"1.0" encoding"UTF-8"?……
基于springcloud实现分布式架构网上商城演示【项目源码】分享
基于springcloud实现分布式架构网上商城演示摘要
首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包……
迪赛智慧数——柱状图(正负条形图):“光棍”排行榜TOP10省份
效果图 中国单身男女最多的省份是广东,广东的人口是全国最多的。人口多了,单身的人也会多,单身女性324万,男性498万。全国第二的省份是四川省,单身女性256万,单身男性296万。
数据源:静态数据……
GPLT比赛代码格式问题注意点
本篇是参与GPLT比赛,过程中注意点和自己踩的坑,有些微不足道,记录只为提醒,注意点和事项会陆陆续续补充和更新,感谢您的浏览 1.导包问题
自己看清楚用的啥要导入包,别忘记导包,也不要导错了&am……
TensorFlow详解1
一、TensorFlow详细架构
1、前端(编程模型采用python、c、java) 2、后端(运行采用c)
二、TensorFlow特点
1、灵活性:只要可以将计算表示成数据流图,就可以使用TensorFlow; 2、跨平台性&……
完整的性能测试流程
一、准备工作
1、系统基础功能验证
性能测试在什么阶段适合实施?切入点很重要!一般而言,只有在系统基础功能测试验证完成、系统趋于稳定的情况下,才会进行性能测试,否则性能测试是无意义的。
2、测试团队组建
根据……
AutoCV第二课:Python基础
目录Python基础前言1.流程控制1.1 条件语句1.2 循环语句1.2.1 while循环语句1.2.2 for循环语句1.3 作业1.4 拓展-try except语法2.函数2.1 函数定义2.2 函数的参数2.2.1 位置参数2.2.2 命名参数2.2.3 默认参数2.2.4 可变参数2.2.5 参数展开2.3 递归函数2.3.1 递归函数定义2.3.2……
智慧农业认养大数据平台有哪些优势?
一、智慧农业认养大数据平台有哪些优势? 1、智能布点:系统能够根据监测对象的不同,设立不同的监测点,从而实现对农产品生产过程的全方位掌握。 2、异常报警:智慧农业认养大数据平台会实时显示底层传感器……
HR:面试官最爱问的linux问题,看看你能答对多少
文章目录摘要Linux的文件系统是什么样子的?如何访问和管理文件和目录?如何在Linux中查看和管理进程?如何使用Linux命令行工具来查看系统资源使用情况?如何配置Linux系统的网络设置?如何使用Linux的cron任务调度器来执行……
vscode开发常用的工具栏选项,查看源码技巧以及【vscode常用的快捷键】
一、开发常用的工具栏选项
1、当前打开的文件快速在左侧资源树中定位: 其实打开了当前的文件已经有在左侧资源树木定位了,只是颜色比较浅 2、打开太多文件的时候,可以关闭 3、设置查看当前类或文件的结构 OUTLINE
相当于idea 查看当前类或接……
数据要素化条件之一:原始性
随着技术的发展,计算机不仅成为人类处理信息的工具,而且逐渐地具有自主处理数据的能力,出现了替代人工的数据智能技术。数据智能的大规模使用需要关于同一分析对象或同一问题的、来源于不同数据源的海量数据。这种数据必须是针对特定对象的记……
【面试题 高逼格利用 类实现加法】编写代码, 实现多线程数组求和.
编写代码, 实现多线程数组求和.关键1. 数组的初始化关键2. 奇偶的相加import java.util.Random;public class Thread_2533 {public static void main(String[] args) throws InterruptedException {// 记录开始时间long start System.currentTimeMillis();// 1. 给定一个很长的……
一个python训练
美国:28:麻省理工学院,斯坦福大学,哈佛大学,加州理工学院,芝加哥大学,普林斯顿大学,宾夕法尼亚大学,耶鲁大学,康奈尔大学,哥伦比亚大学,密歇根大学安娜堡分校,约翰霍普金斯大学,西北大学,加州大学伯克利分校,纽约大学,加州大学洛杉矶分校,杜克大学,卡内基梅隆大学,加州大学圣地……
Mybatis03学习笔记
目录 使用注解开发
设置事务自动提交
mybatis运行原理
注解CRUD
lombok使用(偷懒神器,大神都不建议使用)
复杂查询环境(多对一)
复杂查询环境(一对多)
动态sql环境搭建
动态sql常用标签……
编程日记2023/4/16 14:55:50
设置或取得c# NumericUpDown 编辑框值的方法,(注意:不是Value值)
本人在C#开发中使用到了NumericUpDown控件,但是发现该控件不能直接控制显示值,经研究得到下面的解决办法
NumericUpDown由于是由多个控件组合而来的控件,其中包含一个类似TextBox的控件,若想取得或改变其中的值要使用如下方法
N……
编程日记2023/4/16 14:55:46
使用NPOI 技术 的SetColumnWidth 精确控制列宽不能成功的解决办法(C#)
在使用NPOI技术开发自动操作EXCEL软件时遇到不能精确设置列宽的问题。
如
ISheet sheet1 hssfworkbook.CreateSheet("Sheet1");
sheet1.SetColumnWidth(0, 50 * 256); // 在EXCEL文档中实际列宽为49.29
sheet1.SetColumnWidth(1, 100 * 256); // 在EXCEL文……
编程日记2023/4/16 14:55:46
Mysql 数据库zip版安装时basedir datadir 路径设置问题,避免转义符的影响
本人在开发Mysql数据库自动安装程序时遇到个很奇怪的问题,其中my.ini的basedir 的路径设置是下面这样的:
basedir d:\测试\test\mysql
但是在使用mysqld安装mysql服务时老是启动不了,报1067错误,后来查看window事件发现一个独特……
java stream sorted排序 考虑null值
项目里使用到排序, java里没有像C# 里的linq,只有stream,查找stream.sorted源码看到有个
Comparator.nullsLast
然后看了一下实现,果然是能够处理null值的排序,如:minPriceList.stream().sorted(Comparator.comparing(l -> l.g……
编程日记2023/4/16 14:55:45