ros从入门到放弃(学习笔记1)

lightningwl lightningwl     2023-01-03     687

关键词:

最近在想着做机器人,机缘巧合接触到了ROS,在这里分享一下我学习ROS的经历。

首先就是安装ROS,安装ROS网上有很多资料可以查到,但是我在安装的时候初始化一直出问题,基本网上什么方法都尝试了,总是在最后一步失败,最后实在没办法了,就淘宝上买了一个ROS安装工具,很快就装好了。真香!

安装并测试好ROS以后,就是学习一些ROS的核心概念,这里我主要是看古月居的视频,我大概把我的理解说一下。(本篇文章只是把自己对基本概念的理解进行阐述)

1.1 ROS是什么

首先就是要知道ROS包括什么?在学习以后,我的理解是ROS是由通信机制、开发工具、应用功能、生态系统组成的集合,主要目标就是用来提高机器人研发中的软件复用率。接下来就可以从这四大部分了解ROS。

  • 通信机制:ROS为我们提供了一个非常重要的松耦合分布式通信框架,这个框架可以抽象成一系列的节点图。
  • 开发工具:ROS提供了诸如命令行&编译器、TF坐标变换、Rviz、QT工具箱、Gazebo等工具来帮助开发。
  • 应用功能:ROS的应用功能是非常庞大的,我们无论开发机械臂还是无人机,任意的机器人都可以在ROS里面找到相关的原型。比如Navigation(导航)、SLAM(建图)、Movelt(机械臂运动规划)。
  • 生态系统:ROS的生态系统包括:发行版(Distribution)、软件源(Repository)、ROS wiki、邮件列表(Mailing list)、ROS Answers、博客(Blog)
  1. 发行版(Distribution):ROS发行版包括一系列带有版本号、可以直接安装的功能包。
  2. 软件源(Repository):ROS依赖于共享网络上的开源代码,不同的组织机构可以开发或者共享自己的机器人软件。
  3. ROS wiki:记录ROS信息文档的主要论坛。
  4. 邮件列表(Mailing list):交流ROS更新的主要渠道,同时也可以交流ROS开发的各种疑问。
  5.  ROS Answers:咨询ROS相关问题的网站。
  6. 博客(Blog):发布ROS社区中的新闻、图片、视频(http://www.ros.org/news)。

1.2 ROS核心概念

  • 节点和节点管理器:
  1. 节点(Node):是ROS中一个具体的执行单元,是用来执行某个具体功能的可独立运行的可执行文件。不同的节点可以使用不同的编程语言。
  2. 节点管理器(ROS Master):是ROS中的控制中心,是ROS 所有节点的管理者。所有的节点都需要去找节点管理器注册,节点管理器去记录节点的个各种信息,帮助节点之间建立联系。所以我们可以看到各个节点并不知道彼此的存在,他们都是通过节点管理器进行通信的。节点管理器另一个比较重要的功能就是,它可以提供参数服务器,节点可以使用此服务器存储和检索运行时的参数。

ROS为节点之间的通信设置了两种通信方式:话题和服务

  • 话题通信:
  1. 话题(Topics):采用异步通信机制。使用发布者和订阅者模型,同一个话题的订阅者和发布者可以不唯一。话题的通信方式是单向数据的传输,节点可以发布信息到一个话题,同样也可订阅话题来接收消息。
  2. 消息(Messages):通道中传输的数据。用来描述传输话题数据的数据类型,有一定类型和数据结构。使用编程语言无关的.msg文件定义,编译过程中生成对应的代码文件。

 

 

  • 服务通信:
  1. 服务(Service):采用同步通信机制。使用客户端/服务器(C/S)模型,由客户端发送请求数据,服务器完成处理后返回应答数据。使用编程语言无关的.srv文件定义请求和应答的数据结构,编程过程中生成对应的代码文件。

 

话题通信和服务通信的区别:

个人认为,话题通信类似于写信,我们很难及时得到对方的反馈,而服务通信就类似于打电话,很快我们就可以得到对方的反馈。以下则是更加全面的对比:

  • 参数(Parameter):我们知道,节点管理器另一个比较重要的功能就是,它可以提供参数服务器,它会保存一些参数作为一个全局的共享字典。所有节点都可以通过网络来访问这个共享字典,字典里面的数据类型是多变的,变量的名字和变量的值都是要存到字典里面的。参数适合存储静态、非二进制的配置参数,不适合存储动态配置的参数。
  • 文件系统
  1. 功能包(Package):ROS软件中的基本单元,包含节点源码、配置文件、数据定义等。
  2. 功能包清单(Package manifest):记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编辑标志等。
  3. 元功能包(Meta Package):组织多个用于同一目的的功能包。 

 

[补档][从入门到放弃]——网络流学习索引

...啊喂) 最长的博文2017-7-29大佬讲课笔记网络流——从入门到放弃没错,就是它==各种题解的索引搭配飞行员士兵占领王者之剑happiness切糕餐巾血帆海盗 查看详情

凸优化从入门到放弃(目录)

...课程时候的笔记和心得,其中应用篇没有学习。凸优化从入门到放弃00-凸优化引言01-凸集02-凸函数(暂无)03-凸优化问题(暂无)04-对偶(暂无)05-无约束优化算法(暂无)06-等式约束优化算法(暂无)07-内点法(不等式约束优... 查看详情

深度学习---从入门到放弃pytorch基础(代码片段)

深度学习—从入门到放弃(一)pytorchTensor类似于numpy的array,pandas的dataframe;在pytorch里的数据结构是tensor,即张量tensor简单操作1.Flattenandreshape###Originalz:tensor([[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]])Flatte 查看详情

深度学习---从入门到放弃优化器(代码片段)

深度学习—从入门到放弃(四)优化器1.案例引入-MNIST手写数字识别现代深度学习优化中的许多核心思想(和技巧)可以在训练MLP以解决图像分类任务的中进行说明。在这里我们使用的是手写数字的MNIST数据集࿰... 查看详情

[资源]深度学习从入门到放弃

Relationship:  MachineLearning---->DeepLearning                           ---->DeepReinforcementLearning[LearningRoadMap]              ReinforcementLearningPapers:  DeepLearningPapersReadin 查看详情

深度学习---从入门到放弃简单线性神经网络(代码片段)

深度学习—从入门到放弃(二)简单线性神经网络1.基本结构就像昨天说的,我们构建深度学习网络一般适用于数据大,处理难度也大的任务,因此对于网络的结构需要有一个非常深入的了解。这里以一个分类... 查看详情

linux从入门到放弃linux基本指令大全(代码片段)

...;‍💻作者:@情话0.0📝专栏:《Linux从入门到放弃》👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢!Linux基本指令一、文件目录操作相... 查看详情

学习jvm是如何从入门到放弃的?

学习JVM的目的也很简单:能够知道JVM是什么,为我们干了什么,具体是怎么干的。能够理解到一些初学时不懂的东西在面试的时候有谈资能装逼  (图片来源:zhuanlan.zhihu.com/p/25511795,侵删)声明:全文默认指的是HotSpotVM一、... 查看详情

小白学习h5从入门到放弃

话不多说直接进入主题:1.什么是HTML语言HTML5是用于取代1999年所制定的HTML4.01和XHTML1.0标准的HTML标准版本,现在仍处于发展阶段,但大部分浏览器已经支持某些HTML5技术。HTML5有两大特点:首先,强化了Web网页的表现性能。其次,... 查看详情

初识pytorch:从安装到入门,从入门到放弃(代码片段)

目录PyTorch安装配置安装验证PyTorchPyTorch是Facebook团队于2017年1月发布的一个深度学习框架,虽然晚于TensorFlow,也没有TensorFlow火,但目前已经与TensorFlow奇虎相当。而且PyTorch采用了Python语言的接口,可以说它才是Pytho... 查看详情

爬虫从入门到放弃-纯新手学习-爬虫基本原理(代码片段)

1.什么是爬虫?请求网站并提取数据的自动化程序请求:客户端向服务端发送请求获得网页资源,是一段html代码,包含html标签和一段信息。提取:提取出想要的信息,然后将结构化的数据存储到文本自动化:写完程序一直运行... 查看详情

爬虫从入门到放弃-纯新手学习-爬虫基本数据库安装

 1.安装好前期必备的库-requests向网页发出请求解释器自带的urllib和reselenium用于向有js渲染的网页发起请求fromseleniumimportwebdriverdriver=webdriver.Chrome()#生成一个driver对象,并打开谷歌浏览器driver.get(‘https://www.baidu.com‘) #打开... 查看详情

机器学习从入门到放弃

推荐台大林轩田的基石和技法其实还有caltech一个教授的视频,个人觉得讲得比林轩田好,林轩田的老板,埃及人,口音略重上面3个视频的教材是learnfromdata,CSDN上有完整版下载(https://download.csdn.net/download/shiyih/9671865),包括原版和后面增... 查看详情

datawhalepowerful-numpy《从小白到入门》学习笔记(代码片段)

Datawhalepowerful-numpy《从小白到入门》学习笔记持续更新中文章目录Datawhalepowerful-numpy《从小白到入门》学习笔记摘自官方文档的一些话WhatisNumPy?WhyisNumPyFast?WhoElseUsesNumPy?一.创建和生成1.从python列表或元组创建从列表创建从元组创建... 查看详情

nginx从入门到放弃

前面我们学习了nginx的基本操作和日志管理,今天我们学习一下生产环境经常会用到的路由定位location设置,在工作中,经常可能会出现怎么设置的路由访问不到网页呀?总是出现404错误啊,这些都很有可能是location的配置有误所... 查看详情

clickhouse从入门到放弃(代码片段)

最近公司需要使用clickhouse做数据分析,我赶紧从docker上下载一个,学习学习。学习成本不大,会mysql就行。clickhouse下载分区基本使用下载下载clickhouse包dockerpullyandex/clickhouse-clientdockerpullyandex/clickhouse-server启动clickhouse-... 查看详情

clickhouse从入门到放弃(代码片段)

最近公司需要使用clickhouse做数据分析,我赶紧从docker上下载一个,学习学习。学习成本不大,会mysql就行。clickhouse下载分区基本使用下载下载clickhouse包dockerpullyandex/clickhouse-clientdockerpullyandex/clickhouse-server启动clickhouse-... 查看详情

ros从入门到精通系列ros系统整体架构详解(上)

目录一、理解ROS文件系统级1.1 Catkin编译系统1.1.1Catkin特点1.1.2Catkin编译原理 查看详情