参考资料:git
https://www.icourse163.org/course/ISCAS-1002580008?tid=1003713012 //中国大学MOOCgithub
https://www.bilibili.com/video/av23401751 //B站shell
《ROS操做系统入门讲义》PDF下载缓存
连接:https://pan.baidu.com/s/1OCja2WLDRnjYXMrpnZ3-sQ
提取码:mziy服务器
第二章 ROS文件系统ide
1. Catkin编译系统(Groovy版本后投入使用) //早期的ROS编译系统是rosbuild函数
(1)特色工具
Catkin沿用了包管理的传统像 find_package() 基础结构, pkg-config;扩展了CMake,例如ui
一个Catkin的软件包(package)必需要包括两个文件:url
(2)工做原理
catkin编译的工做流程以下: //至关于封装了cmake和make
注:要用catkin编译一个工程或软件包,只须要用 catkin_make 指令 //catkin编译以前须要回到工做空间目录, catkin_make 在其余路径下编译不会成功,若是有新的目标文件产生须要紧接着“source刷新环境”
2. Catkin工做空间
(1)初始化
1 $ mkdir -p ~/catkin_ws/src 2 $ cd ~/catkin_ws/ 3 $ catkin_make #初始化工做空间
(2)结构介绍 //用 tree 命令查看
1 $ cd ~/catkin_ws 2 $ sudo apt install tree 3 $ tree
默认包含三个文件夹:
编译流程以下:
注:yaml文件通常存储了ROS须要加载的参数信息,一些属性的配置。一般在launch文件或程序中读取.yaml文件,把参数加载到参数服务器上。
3. package软件包 //catkin编译的基本单元
(1)结构
一个package下常见的文件、路径有
其中CMakeLists.txt和package.xml定义了整个package(必不可少)
(2)package的建立:catkin_create_pkg 命令
用法:catkin_create_pkg 包名 依赖项 // 如catkin_create_pkg test_pkg roscpp rospy std_msgs
(3)相关命令
经常使用命令:rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y //用于安装工做空间中 src 路径下全部package的依赖项(由pacakge.xml文件指定)
4. CMakeLists.txt:规定了package要依赖哪些package,要编译生成哪些目标,如何编译等等流程
很是重要,它指定了由源码到目标文件的规则,catkin编译系统在工做时首先会找到每一个package下的CMakeLists.txt,而后按照规则来编译构建。
(1)写法 //进一步的CMake语法可参考《CMake实践》:https://github.com/Akagi201/learning-cmake/blob/master/docs/cmake-practice.pdf
整体的宏结构以下:
(2)示例(turtlesim包下的turtlesim/CMakeLists.txt)
5. package.xml:软件包的描述文件,描述包的基本信息
(1)做用
(2)写法:遵循xml标签的写法
格式1(old):
其中,1-6为必备标签
格式2(new):
(3)示例(turtlesim/package)
老版本
新版本
6. Metapackage //老版本里的概念为“功能包集”stack
做用:将一些相近的功能模块、软件包放到一块儿
(1)常见metapackage
其中,navigation metapackage包含如下软件包:
navigation就是一个简单的package,里面只有几个文件,但它依赖了其余全部的软件包
(2)写法 //metapackage为虚包,无具体的包文件
通常有且仅有两个文件:CMakeLists.txt 和 pacakge.xml
CMakeLists.txt 写法以下:
1 cmake_minimum_required(VERSION 2.8.3) 2 project(ros_academy_for_beginners) 3 find_package(catkin REQUIRED) 4 catkin_metapackage() #声明本软件包是一个metapacakge
package.xml 写法以下:
与普通package的不一样之处: