ROS简介-从零开始讲解ROS(适合超零基础阅读)

2023-05-16

1. 前言

笔者以前是机械专业,对于计算机方面的学习是少之又少,接触机器人的学习之后,比如路径规划、算法等,发现很难入门,不过慢慢摸爬滚打之后还是有了一些认识,俗话说的好,学习最好的方法就是复述,复述学习法也是我推荐大家采用的一种学习方法,能够写下这篇博客也是鼓起勇气来写的,为的是理清自己所学的知识体系,能够让完全不懂计算机的人也能够看懂什么是ROS,若是有同学对部分地方有异议还望提出,我也会随着学习ROS的深入逐渐将以往自己写的BLOG进行完善。

2. 站在哲学领域看ROS

虽说是自己对ROS的概述,但是还是避免不了参考很多牛人的博客,自己主要参考了古月居博主的博客,大家如果学习ROS也建议大家多去逛逛他的博客,很受用。
为什么要从哲学领域看ROS呢,其实我自己有两个观念,第一是我们若想真正训练我们自己的思维方式,必须对事物的本质能够有强烈的好奇心,其次,哲学也是任何科学探索的本质,所有的科学真理问题,都将回归到哲学上的三个终极问题:
1.我从哪里来?
2.我活着为了什么?
3.将来去哪里?
西方有一本书《圣经》完全解释了这三个问题,而且这三个问题也与越来越多的现代历史考古以及科学领域形成了统一的逻辑,所以哲学还是挺有意思的,让人们认清事物最原始的本质。

(1)ROS从何处来?
从下面这张图片来看,ROS是2007年诞生与斯坦福大学,斯坦福大学,世界名校,而且是专业研究机器人的,目前也在从事人工智能的研发,ROS诞生于这样的贵族,可见ROS的发展还是非常有前途的。
从这张图片来看,ROS是2007年诞生与斯坦福大学,斯坦福大学,世界名校,而且是专业研究机器人的,目前也在从事人工智能的研发,ROS诞生于这样的贵族,可见ROS的发展还是非常有前途的
(2)ROS来到这个世界的目的是什么?
这个问题可得询问斯坦福大学的机器人专家了,为什么开发了这样一个机器人操作系统,不过目前大家也都知道了。最初人们是想设计制造一个复杂的机器人,这个机器人能够类似于人一样能够感知,自我导航,能够自我控制去做一些复杂的工作。面对这么复杂的工作,在研发过程中肯定需要很多各样的有效资源的共享,但是目前很多资源要么难以共享,要么共享的资源之间不能直接拿过来用,所以,急需这样一个能够整合资源的框架和接口,使得资源之间能够共享使用,换个专业点的话说,就是使得各种功能、各种软件的重复利用率增加。因此为了 满足这一功能和作用,我们研发了ROS(robotics operating system)机器人操作系统,虽然表面上叫做操作系统,但是并不是真正的操作系统,说白了,就是一个框架,一个平台。
(3)ROS将来会去哪里?发展如何发展?
ROS目前应用得非常广泛,春晚的百度无人车队大家可以去搜一搜,看一看,百度花大价钱能够对ROS进行开发,说明这个东东确实还算是比较有价值的一个东东。
在这里插入图片描述

ROS目前能够应用的是机器人领域,包括移动机器人和机械臂,移动机器人应该是应用最广泛的,主要是应用于机器人的建模、感知、导航、规划等,其可以和普通机器人结合进而控制真实机器人,功能的确强大,而且随着目前的发展势头,其功能是越来越强大。下面简单以几个例子来说明。
ROS用在机器人领域,机器人可以是移动机器人,也可以是机械臂,移动机器人就是类似于扫地机器人的那种,当然机器人也可以是移动机器人和机械臂的组合,比如下面这幅图的这个机器人。
在这里插入图片描述
从这幅图可以看出,ROS能够完成的东西还是真的挺多的哈,用其搭建的机器人完全就可以当成一个服务机器人来用了,可以叠衣服、做饭,还可以陪你玩桌球。
下面这幅图是ROS用在无人车领域,可以自动构建地图、导航和规划行进路径,和前面所说的百度无人车类似。
在这里插入图片描述
目前ROS能够结合的机器人也挺多的,国际上有名的工业机器人、协作机器人、服务机器人等绝大多数都已经用ROS开发过,所以在网上也是大把的资源。
但是ROS也有一些问题,就是目前实时性不是太强,所以ROS也推出了2.0版本,还有就是ROS在运行的时候容易崩溃,所以稳定性也有待提高,但是从总体上看,ROS运用在机器人领域还是蛮有优势的。

3.ROS具体介绍

其实说到具体介绍,肯定也不会太具体,本文先横向介绍ROS的整体框架,然后纵向介绍ROS系统层次,最后具体对ROS的安装以及主要文件夹的功能进行解释。(有的人可能会说“整体框架”和“系统层次”感觉差不多啊,的确,这两个词乍一看起来根本不知道在说啥,举个栗子吧,整体框架是横向广度的介绍,而系统层次是纵向深浅层次的介绍,我们既要横向看待ROS,也必须纵向看待ROS,人在不断进步的过程中也是一样,既要纵向扩展深度,也必须横向扩大视野)

3.1ROS横向介绍

ROS横向介绍我们看下面这幅图,这幅图也是古月居博主总结的,前面我们说过ROS的总体目标,也就是提高软件复用率,下面我们主要介绍它的五个特点和四位一体。

在这里插入图片描述

3.1.1五个特点

(1)点对点设计
看到这个标题,如果不了解计算机通讯,是看不懂的,其实这个就是说的就是ROS的一个核心东东,也就是节点,节点这个东西为什么是核心呢,其实节点还有两个名字,**节点就是功能,节点就是计算机术语中常说的进程,**泛泛地可以这么理解,一个机器人有多个功能,因此也就有了多个节点,因此,如果一个机器人的各个功能被分开,也就是一个个的节点,那ROS进行软件的复用就会方便的多。

是不是看了这段话还是一脸懵逼?可能有的人是的吧,比如如果我第一次学习ROS看到这句话我也会觉得一脸懵逼,在此处我举一个比较形象的栗子吧:我们使用的手机有主机、充电器、耳机这三个部分,这三个部分各有各的功能,也就可以被看做是手机(机器人)的一个个节点(功能、进程),这样将一个个功能节点分开的设计能让我们提高耳机、充电器的复用率,比如你朋友手机没电了,可以借你的充电器用,假如你耳机坏了,可以去找你同学借耳机用,这样,一个机器人的一部分功能(充电器、耳机)可以方便的复用,岂不快哉,而假如不采取这种点对点设计,充电器耳机与主机设计成一体,整个手机就只能你一个人用,你同学想借充电器或者你想去借耳机就根本就借不了了。
在这里插入图片描述

经过上述的介绍你可能就会懂了,还不懂的话就留言吧!

(2)多语言支持
这个好理解,上面第(1)点我们介绍了ROS是有多个节点的,节点之间可能会有联系,但是联系又没有那么紧密,每个节点都是一个功能,它们可以分别使用不同的编程语言进行编程,如C++、Python、Java等编程语言,无论采用哪种编程语言进行编程,最后节点之间进行信息交互的时候都可以通过与语言无关的一个接口进行连接

(3)架构精简,集成度高
这个特点说明的主要是ROS的一个宏观描述,就是描述ROS这一操作系统还是一个看起来结构比较简单,操作不难,而且功能集成丰富,大家字面理解就行。

(4)组件化工具包丰富
这个字面理解就是说ROS有很多功能强大的工具,比如仿真界面工具rviz,仿真环境gazebo,rqt_plot图形化显示工具等,现在这些工具大家可能不懂具体能干什么,不过这些工具在大家学习到ROS的过程中都会碰到,而且是经常使用的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(5)免费且开源
这个更好理解,ROS目前是免费的,并不像很多软件一样需要收费,因此我们只能用破解版,但是ROS正版就是免费的,很好,而且这个软件开源,ROS上你可以从全世界各大牛人分享的东东中找对自己有用的东西拿过来用,很方便。

3.1.2四位一体

在这里插入图片描述
对ROS进行总结便形成了ROS四位一体的格局,首先是ROS的通讯机制,这个大家都知道了,点对点通讯。其次是ROS具备很多开发工具,比如rviz等。接着,ROS的功能也非常多,在ROS中是以一个叫做功能包的形式存在的(注:此处的功能和节点不能混为一谈,大家可以理解为一个大功能,而节点可以理解为一个个小功能),其应用功能设计视觉导航、运动规划多个方面。最后,ROS也不是一个单独的软件,它所存在的环境有各大牛人,各大公司,全世界都在使用它,相当于一个活跃的生态系统。

3.2ROS纵向介绍

ROS的纵向介绍主要从小到大,从深到浅进行介绍,整个ROS系统分为以下三个层次,如图
在这里插入图片描述

3.2.1计算图层

这个层次最深,主要是描述程序是如何运行的,也就是ROS当中很细节的层次,这个层次我们主要介绍几个概念,这几个概念分别是节点、节点管理器、话题、服务。
(1)节点
这个前面已经介绍过,就是指功能,或者说是进程,也可以当做一个个软件模块,不再赘述。
(2)节点管理器
节点管理器说白了就是管理节点的,跟指挥中心一样,类似于每一个固定电话是一个节点,那节点管理器就是基站,总站。
在这里插入图片描述
(3)话题
这个就比较重要了,涉及到ROS的通讯,前面说过,ROS的通讯机制是点对点通讯,也就是一个个节点之间的通讯,ROS节点之间的主要通讯方式是两种,这个话题通讯就是一种,另外一种是接下来会介绍到的第(4)点中的服务通讯,话题通讯和服务通讯是主要的通讯方式,这两种通讯方式的区别如下图所示,大家可以先看下面对这两种通信方式的具体介绍之后再来看这张表进行对比。
在这里插入图片描述

首先介绍ROS的话题通讯,ROS的话题通讯信息流图如下:
在这里插入图片描述
看到这幅图可能是懵逼的,接下来我们详细介绍。

假设一个节点需要某种类型的信息,假设这种类型是“bar”,也就是我们所说的话题,那这个节点必须接收这种话题的信息,我们把这个节点称之为接收者或者订阅者(listener),因此它会向节点管理器(ROS Master)求助,节点管理器(ROS Master)然后便会帮助这个接收者(listener)找正在发布这种话题“bar”的节点,这个节点我们称之为发布者(talker)找到之后便会帮助这两个节点建立连接,然后通讯。

总体上来说一下步骤(图中步骤是七个,此处精简为五个步骤):
**第一步:**信息的发布者(talker)和接收者(listener)都必须向节点管理器(ROS Master)注册自己的信息,就跟人员登记一样,节点管理器需要知道你这个节点的地址等信息,为什么需要知道呢,因为ROS的节点在实际机器人设计中,可能都存在于一个计算机之中,也可能分布于不同的计算机,因此需要地址等信息来对节点进行确定;
**第二步:**节点管理器在确定需要通信的两个节点之后就会对两个节点的信息进行匹配;
**第三步:**接收者(listener)向发布者(talker)发送自己的TCP通讯协议以及连接请求;
**第四步:**发布者(talker)确定连接请求,然后将自己的TCP地址发送给接收者(listener);
**第五步:**两个节点正式建立连接,并以TCP协议进行数据传输。

从以上步骤可以看出,五个步骤全部都是在进行通信,通信的过程中有一个字眼叫做协议,至于这个概念,我们先来看百度百科。
在这里插入图片描述
其实也就是说相当于一个规则,我们生活在社会上需要遵守规则,家有家规,公司有公司的规定,你不是公司的人,公司的门卫是不会轻易让你进公司的,所以在通信领域,也必须有协议,两个节点需要通信,什么时候通信,采用什么语言等均在协议中说明。
在这里插入图片描述
在话题通信中使用的协议有RPC协议和TCP协议,不同的协议用处不一样。

(4)服务
在第(3)点介绍中,我们讲解话题通信的主要过程,我们是以两个节点之间的通信为例进行讲解,但是实则,话题通信可以多个节点与多个节点进行通信,比如一个节点发布一种话题的信息,有五个节点都需要这种信息,则这五个节点都可以订阅并且接收这种信息。

服务通信是单向的,大家可以很容易理解,信息流只能是由发布者流向接收者,而且节点之间的通信是有延迟的,并不同步,针对这两个缺陷,这个小点介绍的服务通信则满足了双向同步的通信,此外,服务通信两端的节点一个叫服务器(talker),一个叫客户端(listener),服务器还是发布数据信息的,客户端则是接收数据信息的,但是这种通信只允许有一个服务器,客户端可以有多个,服务器和客户端之间双向同步通信,采取请求和应答的模式进行通信,如下图所示。
在这里插入图片描述
服务通信的方式和话题通信的方式大同小异,也是节点管理器管理节点,然后采取相应的通信协议进行信息的通信,具体步骤此处也不再赘述。

对于计算图层,我们就暂时介绍到这里,其实计算图层也就是描述ROS当中的一些节点及其通讯方式。

3.2.2文件系统层

在这里插入图片描述
接下来介绍ROS的上面的一个文件系统层次,文件系统,说白了,就不再讨论具体的程序和通讯了,而是了解各个文件的结构以及它们之间的联系,ROS的文件的组织和排列是按照功能来进行的,不同功能的文件被放置在不同的文件夹下面,**功能包(package)**是ROS的文件系统层次下一个比较基本的单元,ROS的文件系统层次也是围绕它来展开:
在这里插入图片描述
一个功能包分为多个部分,如下:
(1)功能包清单(package manifest):这个的作用主要是记录功能包信息,包括各个功能包的信息以及发行者,还有功能包之间的依赖关系,编译的相关信息等。其实类比节点,节点管理器之于节点就好像功能包清单之于功能包,都是管理者的角色。
(2)消息类型:这个其实就是描述ROS采用话题通信的时候的消息的类型的文件,通过这个文件可以了解这个功能包的相关通信接口;
(3)服务类型:这个跟(2)类似,描述服务通信的时候的服务类型的文件,通过这个文件可以了解这个功能包的相关通信接口;
(4)代码:一个个的节点是通过相应的编程语言进行编写的,其代码称作源代码,存放于特定文件夹之中。

至于元功能包,其实可以理解为小功能包组成的大功能包,为了实现一个更大的功能。

3.2.3开源社区层

在这里插入图片描述
讲到第三个层次,也就基本上是ROS中最外层的层次了,也是我们最好理解的层次,开源社区层,从前面所说的ROS的五个特点的最后一个特点“免费且开源”我们可以知道,ROS的开源可以让很多人共享资源,这个共享资源的平台也就可以称之为ROS的开源社区。
如下图所示,ROS的开源社区主要包括以下几个方面或部分,很简单的内容,也就是一些网站、博客之类的,其中软件源的意思可能难以理解一点,ROS有各种功能的功能包,ROS安装的时候只会安装固定的安装包,如果你要搭建自己的机器人,需要很多你自己需要的特定功能的功能包,你可以自己写功能包源代码,当然你也可以从开源社区中寻找,直接采用软件源的形式下载别人的功能包来参考使用。
在这里插入图片描述

好了,ROS纵向的介绍也介绍完毕了,下面我们来总结一下ROS的整体结构,从小到大,最小的肯定是节点,最大的就是开源社区了,节点跟细胞一样,开源社区就有如我们生活的生态系统。下面这幅图就是从小到大描述的ROS的结构层次。
在这里插入图片描述
从这幅图可以很清楚的看到ROS的层次性构造,最小的就是节点,节点之间主要通过话题和服务这两种方式通讯,多个节点之间连接器起来可以完成一定的功能,形成一个具有一定功能的功能包,多个具有相似功能或任务的功能包又组成一个大的元功能包,同理,多个元功能包又可以形成一个软件仓库,一个软件往往可以完成多个功能,一个ROS开源社区内部又存在多个软件仓库。

讲到这里,大家对于ROS的理解想必更深了一些。

3.3ROS安装及其主要文件夹介绍

前面对ROS进行了一些口头上的描述,我们要使用ROS肯定需要在自己的电脑上安装它,接下来主要就是对ROS的安装以及安装之后所在的文件夹进行介绍。

3.3.1ROS的安装

ROS是在Linux系统上运行的,一般选择Linux的Ubuntu系统进行安装,大家可以参考下面这个博客,也是笔者所作,是在原有windows7基础上安装Ubuntu双系统,写的非常详细。
Windows7上安装Ubuntu双系统
安装完成Ubuntu系统之后就可以在Ubuntu系统上打开终端(终端是一个黑色的窗口,任何界面直接按键盘快捷键Ctrl+Alt+T即可打开终端界面。),然后按照ROS wiki官网的ROS安装教程安装ROS,大家记得选择你所安装的Ubuntu版本以及你想安装的ROS的版本。

3.3.2ROS安装后的文件夹介绍

ROS安装之后的安装目录默认在“计算机/opt/ros/”安装目录下,如下图所示,大家打开之后会看到下面这五个文件夹。
在这里插入图片描述
ROS下面共有五个文件夹,然后其他几个文件都是一些脚本文件,至于什么是脚本文件,可以理解成为方便让系统找到一些命令程序、软件包所在位置的文件,比如我们这里有五个文件夹,如果系统需要执行其中某个文件夹下的命令 ,那必须找到这个文件夹,而脚本文件就帮助系统找到这个文件夹的位置。五个文件夹中比较重要的是include文件夹、lib文件夹、share文件夹,下面具体介绍这五个文件夹。
(1)bin文件夹
如下图所示,文件夹下面保存的基本是一些可执行的程序和命令,很多都是在ROS的终端界面可以直接运行的命令行,而如果需要在终端中调用命令行运行命令,就必须找到这个命令行程序,也就需要找到bin文件夹,也就需要前面所说的脚本文件,此外,还需要设置环境变量,设置环境变量的方法很简单,系统为我们已经准备好了脚本文件,我们只用将这些脚本添加到ROS的终端配置文件里面即可。
在这里插入图片描述
(2)etc文件夹
这个文件夹用的少,主要是ROS 的一些配置文件。

(3)include文件夹
这个文件夹比较重要,里面放置的是头文件,这个大家就比较熟悉了,学过C语言的都知道,每次我们在写程序的第一行就是#include <stdio.h>,这个里面就包含了一个头文件。
ROS里面的某一具体的头文件属于某一具体的功能包,如果一个功能包需要依赖另外一个功能包,也就是要与另外一个功能包建立联系,那必须要包含另外那个功能包的头文件,功能包的头文件在功能包安装的时候就被存放于这个文件夹。

(4)lib文件夹
这个文件夹放置的就是一些可执行程序

(5)share文件夹
这个文件夹放置的全部是ROS里面已经安装的功能包,主要包含功能包的各种信息,包括其接口、配置信息等。

注意:如果我们需要真正的操作搭建机器人,我们并不是直接在上述这个ROS文件夹下进行的,我们需要额外建立一个文件夹,称之为工作空间,然后我们在那个工作空间下会创建自己的功能包,进行一系列开发工作。

4. 小结

讲到这里也暂时告一段落了,ROS的学习是一个漫长的过程,它始终是一个平台,一个工具,我们学习它也需要知道我们为什么学,我们是要去完成一个什么样的任务,这个很重要,而不是为了学ROS而去学习ROS,不要看到别人都在学习ROS我们也效仿别人去学习它,我们得有一个具体的任务,然后有一套自己具体的理论,最后用这个工具来帮助我们实现。

关于ROS的学习方法,最好还是先看一下ROSwiki上面的教程的初级部分,也就是初学者部分,然后打住,可以看看古月居博主的视频教程,然后自己在网上找找牛人的博客,自己亲手敲代码实践,实践出真知,祝大家学习进步!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS简介-从零开始讲解ROS(适合超零基础阅读) 的相关文章

  • 双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图

    双系统ubuntu20 04 neotic版本 从0实现Gazebo仿真slam建图 昨晚完成了ROS的多机通讯 还没来得及整理相关操作步骤 在进行实际小车的实验之前 还是先打算在仿真环境中进行测试 熟悉相关的操作步骤 计划通过虚拟机 笔记
  • ROS 与Anaconda 发生冲突的解决方案

    背景 ubuntu16 04 之前装有anaconda3 配有许多环境 最近要用ros 安装完毕 catkin make时报错如下 home usr anaconda3 lib libpng16 so 16 对 inflateValidat
  • ROS multi-master——multimaster_fkie配置

    多主站ROS配置和mutimaster fkie ROS版本 kinetic 操作系统 Ubuntu 16 04 multimaster fkie github 1网络配置 1 1路由器 设置无线路由器并连接两台计算机 机器人 为这两台计算
  • ROS诸多调试工具总结1

    ROS有许多调试工具来为ROS调试你的工具 1 rosnode 参数 用法 作用 list rosnode list 查看当前运行了哪些节点 info rosnode info node name 查看该节点发布 接受哪些话题以及服务 ki
  • 无人驾驶论坛

    1 百度Apollo论坛 http www 51apollo com 2 人工智能中文资讯网 http www ailab cn
  • V-REP安装

    小知识 是当前目录 是父级目录 是根目录 1 下载V REP 官网地址 http www v rep eu downloads html 我用ubuntu16 04下载V REP PRO EDU V3 5 0 Linux tar 2 解压安
  • ROS学习(1)——ROS1和ROS2的区别

    因为机器人是一个系统工程 它包括了机械臂结构 电子电路 驱动程序 通信框架 组装集成 调试和各种感知决策算法等方面 任何一个人甚至是一个公司都不可能完成机器人系统的研发工作 但是我们又希望自己能造出一个机器人跑一跑 验证一下自己的算法 所以
  • Ubuntu16.04安装ROS Kinetic详细步骤

    文章目录 ROS安装 配置Ubuntu软件仓库 设置sources list 设置密钥 更新Debian软件包索引 安装ROS 初始化 rosdep 环境配置 构建工厂依赖 测试安装 开发环境 ROS安装 ROS Kinetic只支持Wil
  • 清华大学开源软件镜像站网址

    清华大学 TUNA 协会原名清华大学学生网管会 注册名清华大学学生网络与开源软件协会 是由清华大学网络技术和开源软件爱好者 技术宅组成的团体 现阶段向校内外提供开源软件镜像等服务 清华大学 TUNA 协会清华大学 TUNA 协会原名清华大学
  • rosprofiler 安装和使用

    rosprofiler wiki 页面 http wiki ros org rosprofiler rosprofiler package 下载rosprofiler和ros statistics msgs 放到工程目录下编译 https
  • 程序“catkin_init_workspace”尚未安装。 您可以使用以下命令安装: sudo apt install catkin

    程序 catkin init workspace 尚未安装 您可以使用以下命令安装 sudo apt install catkin 问题如图 先贴上解决后的效果 运行环境 ubuntu 16 04 ros版本 kinetic 问题解释 这个
  • 《机器人操作系统入门》课程代码示例安装出错解决方法

    问题描述 学习 机器人操作系统入门 课程时 在Ubuntu 16 04 上安装了kinetic 安装ROS Academy for Beginners时依赖总是报错 如下所示 rosdep install from paths src ig
  • ROS1 ROS2学习

    ROS1 ROS2学习 安装 ROS ROS1 ROS2 命令行界面 ROS2 功能包相关指令 ROS 命令行工具 ROS1 CLI工具 ROS2 CLI工具 ROS 通信核心概念 节点 Node 节点相关的CLI 话题 Topic 编写发
  • Caught exception in launch(see debug for traceback)

    Caught exception in launch see debug for traceback Caught exception when trying to load file of format xml Caught except
  • Caught exception in launch(see debug for traceback)

    Caught exception in launch see debug for traceback Caught exception when trying to load file of format xml Caught except
  • 如何访问 Heroku 中的 docker 容器?

    我已按照此处构建图像的说明进行操作 https devcenter heroku com articles container registry and runtime getting started https devcenter her
  • catkin_make 编译报错 Unable to find either executable ‘empy‘ or Python module ‘em‘...

    文章目录 写在前面 一 问题描述 二 解决方法 参考链接 写在前面 自己的测试环境 Ubuntu20 04 一 问题描述 自己安装完 anaconda 后 再次执行 catkin make 遇到如下问题 CMake Error at opt
  • 在 ROS - Python 中使用来自多个主题的数据

    我能够显示来自两个主题的数据 但无法在 ROS 中实时使用和计算这两个主题的数据 用 Python 代码编写 您有想法存储这些数据并实时计算吗 谢谢 usr bin env python import rospy import string
  • 可以在catkin工作区之外创建ROS节点吗?

    我想在catkin工作区之外创建一个ROS发布者节点 可以创建吗 当然可以 像对待任何其他 cpp 库或 python 包一样对待 ROS 在Python中你必须保留PYTHONPATH环境变量指向ros包 opt ros kinetic
  • ROS中spin和rate.sleep的区别

    我是 ROS 新手 正在尝试了解这个强大的工具 我很困惑spin and rate sleep功能 谁能帮助我了解这两个功能之间的区别以及何时使用每个功能 ros spin and ros spinOnce 负责处理通信事件 例如到达的消息

随机推荐

  • 自己写一个串口调试小助手

    串口调试小助手是我们调试手机程序经常使用的一个工具 一个十分简洁优秀的程序 xff0c 感觉似乎是使用D语言编写的 xff0c 然后作者又使用UPX加了个壳 给一些喜欢反编绎研究别人程序的人造成了一些障碍 其实串口调试小程序原理并不太难 x
  • 【java力扣算法《代码随想录》02】第2章程序的性能分析(刷题如果关键的部分直接用库函数就可以解决,建议不要使用库函数)

    第二章 程序的性能分析 代码随想录刷题整理刷题注意关于使用库函数ACM模式代码风格 时间复杂度O n 中 logn无底数空间复杂度 代码随想录刷题整理 代码随想录 刷题网站 刷题注意 关于使用库函数 如果题目关键的部分直接用库函数就可以解决
  • 四轴飞行器姿态控制

    四轴飞行器姿态控制 一 姿态解算相关概念 1 欧拉角 用来表示三维空间中运动物体绕坐标轴旋转的情况 xff0c 即物体每时每秒的姿态可以由欧拉角表示 2 四元数 四元数用于物体的旋转 xff0c 是一种复杂但是效率较高的旋转方式 对于一个物
  • 串级PID控制四轴飞行器状态-实现

    参考网页 xff1a http blog csdn net nemol1990 article details 45131603 一 上下运动 向上运动 xff0c 四个轴的速度同时增加向下运行 xff0c 四个轴的速度同时减小 二 前后运
  • c和c++调用Python

    参考网页 xff1a https docs python org 3 6 c api index html http blog csdn net taiyang1987912 article details 44779719 http bl
  • yoloV3 darknet GPU手把手从编译到训练再到C++调用API

    我要先声明一下 xff0c 系统是Ubuntu18 04 xff0c 我的机器已经装好了opencv4 1 1 和 cuda10 0 的 xff0c 过程可参考我另一篇博客 xff0c 这部分不再说明 IDE使用qtcreator 1 下载
  • 使用Git命令创建新分支

    1 进入Git Bash Here xff0c 查看仓库所有分支git branch a 2 使用命令 git checkout master xff0c 表示切换到master分支 xff0c 并git pull拉取最新代码 3 由于的所
  • VINS-初探(一)

    vins是香港科技大学开源的一个单目相机结合IMU的一个VIO xff0c 在github上可以下载源码 xff0c 分为iOS系统下的和ros系统下的两种 xff0c ros下的为 span class hljs label https
  • ROS使用官方包进行串口通信

    https www jianshu com p c30f390427e7 参考http span class hljs comment www roswiki com read php tid 61 557 amp fid 61 39 sp
  • STM32F446ZET6关于使用PA11,PA12,PB14,PB15的使用注意事项

    STM32F446ZET6关于使用PA11 xff0c PA12 xff0c PB14 xff0c PB15的使用注意事项 这两天在用PB14做输入时 xff0c 发现总是不灵敏 xff0c 开始还以为布线有问题 xff0c 检查后发现不是
  • numpy基本方法总结

    NumPy基本方法 一 数组方法 创建数组 xff1a arange 创建一维数组 xff1b array 创建一维或多维数组 xff0c 其参数是类似于数组的对象 xff0c 如列表等 读取数组元素 xff1a 如a 0 a 0 0 数组
  • 如何实现Qt上位机软件串口的按字节数据处理?

    1 Qt串口类的选择 最近在做一个小项目 xff0c 需要用到Qt做上位机软件 xff0c 本人也是边学边做 xff0c 买了本 QtCreator快速入门 看了看就动手了 xff0c 由于初学不是很了解Qt5的官方资源 xff0c 一开始
  • 如何使用HAL库手动修改OSC引脚为PD0/1?

    CubeMX不能直接重映射OSC引脚为PD0 1 xff0c 那么 xff0c 如何使用HAL库手动修改OSC引脚为PD0 1 如下图所示配置即可 xff1a
  • “野火FreeRTOS教程”第7章补充知识点-异常流程

    一 知识点 1 Cortex M3 4在复位后CONTROL寄存器初始值为0 xff0c 也就是说MCU会处于线程模式 具有特权访问权限且使用主栈指针 MSP 2 当进入异常时CM3会自动入栈 xff0c 如下图所示 xff1a 3 当异常
  • mini四旋翼飞行器DIY日志

    一 方案 功能描述 xff1a 具备mini四旋翼飞行器的基本功能 xff0c 可以拓展其他模块实现定高 对航向角yaw的校准 xff0c 将所有io引出并设计出最小系统板子功能 xff0c 将设计I2C总线挂载选择电路便于调试和使用 可以
  • Quartus II 13.1.0.162三件套安装包

    QuartusSetup 13 1 0 162 链接 https pan baidu com s 1B01zWG76kfNcGLA0VmwyMw 提取码 jjdd ModelSimSetup 13 1 0 162 链接 https pan
  • DSP Builder安装时的注意事项

    注意事项1 DSP Builder是以组件的形式安装在altera下面的 xff0c 并且altera要与matlab 32位 xff01 xff01 安装在同一路径下 xff0c 这个路径不要带有中文 xff0c 或者空格字符 xff0c
  • Maven3.6.1下载与配置,超详细

    Maven3 6 1下载与配置 xff0c 超详细Maven3 6 1下载与配置 xff0c 超详细Maven3 6 1下载与配置 xff0c 超详细 Maven下载与配置 1 官网下载对应版本 xff0c 推荐下载免安装版 下载地址 ht
  • 【GIS】GIS矢量空间分析(上)

    0 GIS的基本概念 栅格数据与矢量数据 上图中 xff0c a为图形模拟表示的地理对象 xff0c b为控件对象对应的栅格数据模型表示 xff0c c为对应的矢量数据模型表示 矢量模型的表达源于原型空间实体本身 xff0c 通常以坐标来定
  • ROS简介-从零开始讲解ROS(适合超零基础阅读)

    1 前言 笔者以前是机械专业 xff0c 对于计算机方面的学习是少之又少 xff0c 接触机器人的学习之后 xff0c 比如路径规划 算法等 xff0c 发现很难入门 xff0c 不过慢慢摸爬滚打之后还是有了一些认识 xff0c 俗话说的好