现在还只是个草稿,后面会陆续更新改正,保证大家一看就会,绝对不废 如果觉得有帮助,动动小手点赞一下啦。

只是帮助大家理解,很多知识点只是类比推理,是有错误的,哈哈,勿喷!

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(机器人操作系统)相关推荐

  1. ROS 机器人操作系统进阶实战

    ROS(Robot Operating System) 是一个开源的机器人操作系统,目的是提供开发平台.工具及生态给开发人员,可以让开发人员快速开发.本课程通过精心设计的案例,分析技术要点.理解运行原 ...

  2. ROS机器人操作系统学习笔记(三)ROS通信架构

    ROS机器人操作系统学习笔记(三)ROS通信架构 ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在.ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等.本章主要介绍了通信架构 ...

  3. ros机器人操作系统简介

    机器人操作系统   (Robot Operating System, 或简称 ROS),它可以帮助提高机器人软件的开发效率. ROS 系统的官方定义如下: ROS是面向机器人的开源的元操作系统(met ...

  4. 入门ROS机器人操作系统——准备工作

    近期入门学习ROS机器人操作系统,有时间记录一下踩坑过程,给后来者提供参考,也方便自己后期查阅. 首先,分享几个软件安装包: 1. 虚拟机VMware16 链接:https://pan.baidu.c ...

  5. ROS机器人操作系统学习(二)

    ROS机器人操作系统学习(二) ROS概念 通信机制+开发工具+应用功能+生态系统 提高机器人研发中的软件复用率 通信机制 松耦合分布式通信 开发工具 应用功能 生态系统 节点与节点管理器 话题与服务 ...

  6. ROS机器人操作系统——如何将ROS与STM32连接(十六)

    ROS机器人操作系统 文章目录 ROS机器人操作系统 前言 一.两种控制器的功能 二.硬件连接 总结 前言 前面学习了ROS的基本操作,仅仅只使用这个操作系统并没有什么用处,还需要讲他与硬件相结合从而 ...

  7. ROS机器人操作系统——创建工作空间与功能包(四)

    ROS机器人操作系统 文章目录 ROS机器人操作系统 前言 一.工作空间 1.创建工作空间 2.编译工作空间 3.设置环境变量 4.检查环境变量 二.功能包 1.创建功能包 2.编译功能包 总结 前言 ...

  8. ROS机器人操作系统底层原理及代码剖析

    0 目的 本文介绍ROS机器人操作系统(Robot Operating System)的实现原理,从最底层分析ROS代码是如何实现的. 1 序列化 把通信的内容(也就是消息message)序列化是通信 ...

  9. ROS机器人操作系统学习笔记(一)--基本概念

    ROS机器人操作系统学习教程(一)–基本概念 1. 基本概念 1.1 ROS背景 机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便.功 ...

  10. Windows使用ROS机器人操作系统全面资料汇总

    0 摘要: 本文以Win10系统中安装使用ROS1Melodic和ROS2Dashing为基础,并通过开源硬件设备Arduino与ROS的通信为示例,具体介绍机器人操作系统ROS1和ROS2的细节.部 ...

最新文章

  1. 课后作业:字符串加密
  2. pycharm debug code -1073741819
  3. hdu 1588 Gauss Fibonacci 较难
  4. 设计模式C++实现(6)——建造者模式
  5. RabbitMQ之比较好的资料
  6. 逻辑斯谛回归(Logistic回归)最详解
  7. linux上yum最简方法安装,yum轻松简单安装配置GCC等
  8. 多智能体强化学习(二) MAPPO算法详解
  9. MySQL8数据恢复
  10. Nmap扫描机器开放的端口
  11. think PHP前台模板,thinkphp5(二)前台模板的引入
  12. Flutter报setState() or markNeedsBuild() called during build.错误解决办法
  13. 色彩三原色,RGB,CMYK
  14. python barplot宽度,如何在seaborn barplot上设置宽度
  15. diy一个android手机版下载,家居3D设计DIY
  16. 隔离技术之MUX VLAN
  17. saas-export项目service层
  18. 71、Es(es和mysql的概念对比)
  19. UVa Problem 10254 The Priest Mathematician (牧师数学家)
  20. 在 ASP.NET Core 使用 IOptions pattern

热门文章

  1. 远程教育英语计算机统考试题,2020年远程网络教育计算机应用基础统考题库原题真题(完整版)...
  2. 未来互联网人才还稀缺吗?哪些技术方向热门?
  3. comsol波动光学模块案例分析
  4. Linux终端关机命令
  5. XLSX.js读取excel文件忽略第一行
  6. 配置IIS6出现 出现验证码无法显示问题
  7. PHP 处理多重数组
  8. 吃鸡哪个服务器网络稳定,中国地区吃鸡哪个服务器不卡 | 手游网游页游攻略大全...
  9. 三种滤波算法针对不同噪声处理
  10. MySQL_JDBC_jar包的下载与使用(for Windows)