白话ROS(机器人操作系统)
现在还只是个草稿,后面会陆续更新改正,保证大家一看就会,绝对不废 如果觉得有帮助,动动小手点赞一下啦。
只是帮助大家理解,很多知识点只是类比推理,是有错误的,哈哈,勿喷!
1 通信
蛮多人在学习ROS的时候,其实还是不太理解什么是ROS,为什么要去ROS,以及怎么样去学习ROS,我大二的时候开始接触到ROS,也经历过比较痛苦的一段时间,所以希望用这篇文章来帮助大家对ROS有一个较好的理解。
首先我们抛开ROS来说,如果我们要写一个程序,程序需要完成特定的功能,就拿C语言中的加法函数来说吧。我们定义了一个加法函数,输入两个整数最后返回两个整数的和,然后定义完函数以后,在main函数里调用这个加法函数,就可以在键盘上输入两个整数,然后计算两个整数的和了。
那么问题来了 如果我要在别的程序(文件)需要使用加法函数所返回的值,应该怎么做呢?
一种方式 定义一个全局变量,将加法函数返回的值赋给这个全局变量,那么在一个工程文件下的程序都可以使用这个全局变量了,这就达到了其他程序使用这个变量的目的了
那么问题又来了,如果不是在同一个工程目录下的程序,要怎么样才能使用到这个加法函数的返回值呢?
一种方式 将第一个程序的加法返回值写到一个文档中,然后其他程序去读这个文件,这样也可以达到使用这个数据的目的了
另外一种方式,采取网络通信,也就是将返回值通过网络发出去,其他程序监听该网络得到返回值(涉及到http ip 等网络通信就不多介绍)
上面的例子,想给大家传递的知识点就是 我们在写程序的时候,大多数人是只有一个main函数的,也就是只有一个可执行文件,那么问题就来了,要是不同的main函数,也就是不同可执行文件之间需要相互使用对方的数据,那应该怎么办呢,这就引申出了程序与程序之间到交流问题,也就是通信问题。这也是ROS里面我个人觉得必须首先要搞清楚的问题。大家先理解到这个地方,然后往下看。
2 ROS初识
开始进入主题 到底什么是ROS,ROS就是Robot Operating System 的缩写,这大家都知道,对吧,翻译成中文也就是机器人操作系统,可是除了这个大家对操作系统是什么大家有了解过么,为什么需要操作系统,也就是操作系统能干什么,大家有简单的了解过么。
在了解操作系统以后,我们就可以开始分析我们的机器人操作系统了,话不多说,先放狗,不不不,先放图:
我们也知道,在win上安装了许许多多的软件,向上面的solidworks(三维制图软件),matalab(数据计算软件) QQ(聊天软件) 网易云 (听歌软件) 腾讯视频(播放软件)…
那么问题又来了 你能让你的扣扣去跟网易云说 我想听歌,然后网易云就会打开播放么,当然你要是杠杆定理学得好,那我认了,哈哈,大多数人是应该是觉得这应该不可以,因为扣扣怎么跟网易云通信嘛,对吧。
所以我们安装在win上的各个软件只负责自己的问题,不会跟其他的软件有过多的交流。
哈哈,所以我有了一个大胆的想法,让我的电脑同时登录3个扣扣,那么这三个扣扣总该可以相互发消息了吧,没错,这就是我想要讲的东西,我只在我的电脑上安装三个软件 也就是3个扣扣软件,他们肯定是可以相互交流的。因为他们是同一类软件。
是的,ROS也是这么干的,在ROS上也安装了向扣扣这样的可执行程序,只不过在ROS中换了个说法,可执行程序叫做节点,这应该不难理解吧。要记住在ROS上安装了许许多多的软件哦,也就是许许多多的可执行程序,也就是许许多多的节点,如果你现在理解了节点是什么了,那么恭喜你,已经迈出了一小步了,你说巧不巧,安装在ROS上的这些程序,它还可以相互通信,也就是相互交流,哈哈。
好了,理解到这一步呢就理解了节点是个什么东西了,ROS里面的节点就是一个个可执行文件。
下面又开始了一个新的例子,我们的手机上有一个扣扣,我们需要和其他人聊天对吧,那么你知道你要和别人聊天需要先做什么么,你肯定说,登录账号加好友啊,不对的,首先要做的就是把腾讯的服务器打开,不然你登录不上去的,也就是说,腾讯的服务器不打开,你是登录不上扣扣的,只不过这一步不是我们操作的,人家的服务器他已经给我门打开了,然后我们再登录扣扣,想一下,我们在登录的时候,做了什么,对吧,大家都知道,我们也就是输入账号密码就可以登录了吧对吧,这个过程呢就是向腾讯的服务器注册自己的信息,告诉腾讯服务器,我上线了,然后腾讯服务器就把你加入到注册表中,里面包含了你的一些信息,你想要和别人连天,那么别人是不是也要跟你一样,也要先登录,过程和你的一样,所以这个时候,腾讯服务器那边是已经有了你和你想要聊天的对象的一些信息的,比如ip地址之类的东西,这样,你想发消息给你的朋友(后面再填坑)
类比一下 服务器 就相当于ROS里面的ros master,只不过这个rosmaster需要我们自己开启而已。
事实上,ros并不是一个操作系统,他并不能直接运行在硬件之上,只不过他把硬件做了一个给操作系统的接口 和网易云一样 网易云大不了就使用一个喇叭呗,只不过ros使用了太多的硬件,比如激光雷达,相机,编码器,imu等等。
因此ROS本身也就是一个软件,和qq一样,运行在操作系统之上,所不同的是,在ROS上又可以安装许许多多的同类软件,这些安装在ROS上的程序(节点)之间可以按照ROS所规定的通讯机制进行相互交流通讯。比如激光雷达节点(程序)通过ROS提供的接口,让操作系统把激光数据传上来,交给建图所需要的Gmapping节点使用,然后Gmaping节点把所构建的地图给move_base节点使用,move_base节点的输入是一个速度和角度的命令,先由move_base下发给ros,然后ros下发给操作系统,然后操作系统调用硬件,在这里是电机,让电机按照ROS下发的速度的角速度进行运动.
大家应该会有一点点理解了吧
总结下 就是ros是一个类似于win上的一个软件,但是这个软件上又安装了很多软件,在ros上安装的这些软件可以相互通信,然后可以借助ROS,让调用操作系统去调用硬件。
这就是为什么我们每次想要聊天的时候,需要先打开qq这个软件,也就是我们想要用ROS的时候,先运行roscore这个命令打开ROS了吧。
白话ROS(机器人操作系统)相关推荐
- ROS 机器人操作系统进阶实战
ROS(Robot Operating System) 是一个开源的机器人操作系统,目的是提供开发平台.工具及生态给开发人员,可以让开发人员快速开发.本课程通过精心设计的案例,分析技术要点.理解运行原 ...
- ROS机器人操作系统学习笔记(三)ROS通信架构
ROS机器人操作系统学习笔记(三)ROS通信架构 ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在.ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等.本章主要介绍了通信架构 ...
- ros机器人操作系统简介
机器人操作系统 (Robot Operating System, 或简称 ROS),它可以帮助提高机器人软件的开发效率. ROS 系统的官方定义如下: ROS是面向机器人的开源的元操作系统(met ...
- 入门ROS机器人操作系统——准备工作
近期入门学习ROS机器人操作系统,有时间记录一下踩坑过程,给后来者提供参考,也方便自己后期查阅. 首先,分享几个软件安装包: 1. 虚拟机VMware16 链接:https://pan.baidu.c ...
- ROS机器人操作系统学习(二)
ROS机器人操作系统学习(二) ROS概念 通信机制+开发工具+应用功能+生态系统 提高机器人研发中的软件复用率 通信机制 松耦合分布式通信 开发工具 应用功能 生态系统 节点与节点管理器 话题与服务 ...
- ROS机器人操作系统——如何将ROS与STM32连接(十六)
ROS机器人操作系统 文章目录 ROS机器人操作系统 前言 一.两种控制器的功能 二.硬件连接 总结 前言 前面学习了ROS的基本操作,仅仅只使用这个操作系统并没有什么用处,还需要讲他与硬件相结合从而 ...
- ROS机器人操作系统——创建工作空间与功能包(四)
ROS机器人操作系统 文章目录 ROS机器人操作系统 前言 一.工作空间 1.创建工作空间 2.编译工作空间 3.设置环境变量 4.检查环境变量 二.功能包 1.创建功能包 2.编译功能包 总结 前言 ...
- ROS机器人操作系统底层原理及代码剖析
0 目的 本文介绍ROS机器人操作系统(Robot Operating System)的实现原理,从最底层分析ROS代码是如何实现的. 1 序列化 把通信的内容(也就是消息message)序列化是通信 ...
- ROS机器人操作系统学习笔记(一)--基本概念
ROS机器人操作系统学习教程(一)–基本概念 1. 基本概念 1.1 ROS背景 机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便.功 ...
- Windows使用ROS机器人操作系统全面资料汇总
0 摘要: 本文以Win10系统中安装使用ROS1Melodic和ROS2Dashing为基础,并通过开源硬件设备Arduino与ROS的通信为示例,具体介绍机器人操作系统ROS1和ROS2的细节.部 ...
最新文章
- 课后作业:字符串加密
- pycharm debug code -1073741819
- hdu 1588 Gauss Fibonacci 较难
- 设计模式C++实现(6)——建造者模式
- RabbitMQ之比较好的资料
- 逻辑斯谛回归(Logistic回归)最详解
- linux上yum最简方法安装,yum轻松简单安装配置GCC等
- 多智能体强化学习(二) MAPPO算法详解
- MySQL8数据恢复
- Nmap扫描机器开放的端口
- think PHP前台模板,thinkphp5(二)前台模板的引入
- Flutter报setState() or markNeedsBuild() called during build.错误解决办法
- 色彩三原色,RGB,CMYK
- python barplot宽度,如何在seaborn barplot上设置宽度
- diy一个android手机版下载,家居3D设计DIY
- 隔离技术之MUX VLAN
- saas-export项目service层
- 71、Es(es和mysql的概念对比)
- UVa Problem 10254 The Priest Mathematician (牧师数学家)
- 在 ASP.NET Core 使用 IOptions pattern
热门文章
- 远程教育英语计算机统考试题,2020年远程网络教育计算机应用基础统考题库原题真题(完整版)...
- 未来互联网人才还稀缺吗?哪些技术方向热门?
- comsol波动光学模块案例分析
- Linux终端关机命令
- XLSX.js读取excel文件忽略第一行
- 配置IIS6出现 出现验证码无法显示问题
- PHP 处理多重数组
- 吃鸡哪个服务器网络稳定,中国地区吃鸡哪个服务器不卡 | 手游网游页游攻略大全...
- 三种滤波算法针对不同噪声处理
- MySQL_JDBC_jar包的下载与使用(for Windows)