ROS文件系统(工程结构)

ROS文件系统

介绍catkin的编译系统,catkin工作空间的创建和结构,package软件包的创建和结构,介绍CMakeLists.txt文件,package.xml以及其他常见文件。

catkin工作空间

Catkin是ROS定制的编译构建系统,对Cmake的扩展
而Catkin工作空间是组织和管理功能包的文件夹,以Catkin工具编译

  1. 建立工作空间
mkdir -p ~/catkin_ws/src
  1. 编译
cd ~/catkin_ws/ #回到工作空间
catkin_make
source ~/catkin_ws/devel/setup.bash  #编译完后要source刷新环境
catkin workspace

catkin编译的工作流程如下:
1 首先在工作空间catkin_ws/src/下递归的查找其中每一个ROS的package。
2 package中会有package.xml和CMakeLists.txt文件,Catkin(CMake)编译系统依据CMakeLists.txt文件,从而生成makefiles(放在catkin_ws/build/)。
3 然后make刚刚生成的makefiles等文件,编译链接生成可执行文件(放在catkin_ws/devel)。
也就是说,Catkin就是将cmake与make指令做了一个封装从而完成整个编译过程的工具。catkin有比较突出的优点,主要是:

  • 操作更加简单
  • 一次配置,多次使用
  • 跨依赖项目编译
Package组成
  • ROS软件的基本组成形式
  • catkin编译的基本单元
  • 一个Package可以包含多个可执行文件(节点)


    Package最精简结构

    其中:

  • CMakelists.txt规定catkin编译的规则
    例如:源文件、依赖项、目标文件
cmake_minimum_required() #指定Catkin最低版本
project() #指定软件包的名称
find_package() #指定编译时需要的依赖项
catkin_python_setup() #catkin新加宏,打开catkin的Python Module的支持
add_message_files() #catkin新加宏,添加自定义Message/Service/Action文件
add_service_files()
add_action_files()
generate_message() #catkin新加宏,生成不同语言版本的msg/srv/action接口
catkin_package() #catkin新加宏,生成当前package的cmake配置,供依赖本包的其他软件包调用
add_library() #生成库
add_executable() #生成可执行二进制文件
add_dependencies() #定义目标文件依赖于其他目标文件,确保其他目标已被构建
target_link_libraries() #链接
catkin_add_gtest() #catkin新加宏,生成测试
install() #生成可安装目标
  • Package.xml
    定义package的属性
    例如:包名、版本号、作者、依赖等
<pacakge> 根标记文件
    <name> 包名
    <version> 版本号
    <description> 内容描述
    <maintainer> 维护者
    <license> 软件许可证
    <buildtool_depend> 编译构建工具,通常为catkin
    <build_depend> 编译依赖项,与Catkin中的
    <run_depend> 运行依赖项
</pacakge> 

一般只需要修改<build_depend> 编译依赖项, <run_depend>运行依赖项



还可以在Package下放自定义的通信格式:
消息(msg)
服务(srv)
动作(action)
以及launch、配置文件
launch文件(launch)、配置文件(yaml)



Package基本组成结构

常用包管理指令

1.rospack
查找某个pkg的地址

rospack find package_name

2.roscd
跳转到某个pkg下

roscd package_name

3.rosls
列举某个pkg下的文件信息

rosls package_name

4.rosed
编辑pkg的文件

rosed package_name file_name

5.catkin_create_pkg
创建一个pkg

catkin_creat_pkg<pkg_name>[deps]

6.rosdep
安装某个pkg所需的依赖

rosdep install [pkg_name]
实操步骤

1.创建工作空间

mkdir -p catkin_practice/src
  1. 初始化工作空间
cd catkin_practice
catkin_make
  1. 创建功能包
cd src
catkin_create_pkg test1 //不带依赖项
catkin_create_pkg test2 roscpp rospy std_msgs nav_msgs //带依赖项

  1. 设置环境变量
source devel/setup.bash`

通过设置环境变量,系统将知道功能包放在catkin_practice/devel下 该命令有一个弊端就是,设置的环境变量只会在当前终端下生效,重新打开一个终端将失效
解决方案是:
解决方法是将上述命令放在终端配置文件中。

vi ~/.bashrc
//将环境变量添加只终端设置最后一行
source ~/catkin_practice/devel/setup.bash

在新的终端中输入以下命令,让终端命令在当前终端生效

source ~/.bashrc

检查环境变量

echo $ROS_PACKAGE_PATH

Metapackage

在一些ROS的教学资料和博客里,你可能还会看到一个Stack(功能包集)的概念,它指的是将多个功能接近、甚至相互依赖的软件包的放到一个集合中去。但Stack这个概念在Hydro之后就取消了,取而代之的就是Metapackage。



以上列举了一些常见的功能包集,例如navigation、turtlebot,他们都是用于某一方面的功能,以navigation metapackage(官方介绍里仍然沿用stack的叫法)为例。

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

推荐阅读更多精彩内容