ROS基础

在寒假开始之前,我们已经下载了ROS系统,并且了解了一部分ROS的工作机制和基础框架,现在我们从问题出发,重新开始学习ROS基础。

现在我们开始正式探索ROS的应用。

一、在开始应用ROS之前,我们需要创建工作空间:

(所有的ROS程序,包括我们自己开发的程序,都被组织成功能包,而ROS的功能包被存放在称之为工作空间的目录下。因此,在我们写程序之前,第一步是创建一个工作空间以容纳我们的功能包。)

1.创建ROS工作空间

    ROS工作空间是linux下的一个目录,创建ROS工作空间就是创建一个linux目录,只是需要按照ROS的规范在这个目录下添加一个src的子目录,然后执行一个ROS的命令即可。

    我们创建名为catkin_ws的工作空间,命令如下:

$mkdir -p catkin_ws/src

创建catkin_ws


创建src工作环境

2.编译工作空间

    进入到catkin_ws/src目录下,可以看到catkin_ws和src目录下都是空的。进入到catkin_ws目录下,再执行如下命令:

$catkin_make

    这个命令用于构建该工作空间,并且必须在工作空间的顶层使用catkin_make命令,这时会发现在catkin_ws这个目录下多出两个目录“build”和“devel”。在devel目录下,还可以看到很多setup.*sh文件。

devel目录

3.设置环境变量

接下来我们输入如下命令:

$source devel/setup.bash

此命令是在catkin_ws目录下执行的(即为将catkin_ws/devel目录下的setup.bash文件挂载到ROS的文件系统里去,这样当用户执行一些文件系统的命令时,就不会提示找不到该工作空间里的包或者文件了)

在ROS工作环境中不允许出现同名重复功能包(对于大多数用户,确实没有必要使用多个 ROS 工作空间。但是,如果工作涉及大量的功能包,或者涉及几个相互独立的的项目,则维护数个独立的工作空间可能是有帮助的。)

提示:在没有设置环境变量的情况下,或者在环境配置这一环节总是出现bash: /opt/ros/kinetic/setup.bash: 没有那个文件或目录时,每次新打开终端都需要:

$source   ~/catkin_ws/devel/setup.bash

若要解决每次都要source(每次新打开一个终端都需要source)可以使用如下命令:

$gedit ~/.bashrc  

在文件末尾添加:source   ~/catkin_ws/devel/setup.bash(还需要删除重复的多余配置,如果没有多余项,很有可能拼写有问题,或者大小写问题,格式问题

二.创建ROS功能包

创建了工作空间,接下来就可以在工作空间里创建功能包。

1.创建

功能包是一个存在于工作空间目录src目录下的一个目录,这个目录中包含一些文件或者目录,一个功能包必须以下几部分组成:

(1) 必须包括一个package.xml文件;

(2) 必须包括一个CMakeLists.txt文件。

在每一个功能包目录下不允许有其它的功能包,也就是不允许功能包名字重复。

2.编译依赖关系

在之前已经创建过一个空的工作空间:catkin_ws中,可以在一个工作空间中创建一个功能包。在创建功能包时需要使用catkin_create_pkg命令。

首先进入到目录catkin_ws/src目录下,创建一个名字为learning的功能包,它直接依赖于三个功能包:std_msgs,rospy以及roscpp,使用如下命令:

$catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

在创建的文件夹下可以看到package.xml和CMakeLists.txt。

catkin_create_pkg要求给出功能包的名字,及选择性的给出所创建的功能包依赖于哪一个功能包,命令的使用方法如下:

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

这样,我们的一个包功能就创建好了,我们可能会需要对功能包之间的依赖性做一下解释。我们可以使用rospack命令来查看功能包之间的依赖关系(使用rospack命令的前提是已经安装了该命令)。

查看直接依赖关系:

$rospack depends1 beginner_tutorials

我们还可以直接在s功能包下的package.xml中查看功能包的依赖关系。使用命令:

$cd beginner_tutorials  

$cat package.xml

在通常情况下,一个包所依赖的包又会依赖许多其它的包,称为间接依赖。我们使用如下命令来查看rospy直接依赖的功能包:

$rospack depends1 rospy

而一个功能包可以有很多的间接依赖关系,我们可以使用命令:

$rospack depends beginner_tutorials 来查看。

3.完成

 编译依赖性和运行依赖性标签,指明了该功能包所依赖的其它功能包,如果我们在使用catkin_create_pkg命令创建功能包的时候,没有制定我们创建的功能包依赖于哪些功能包,可以手动在添加依赖的功能包。

这样功能包的创建和节点之间的依赖关系就清楚了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容