今天就主要讲讲文件系统的内容和一些基本操作嘤
看了我们上一讲安装,设置zsh,设置多窗口终端后,我们正式开始ROS的下水。
先来一张图镇楼吧
看起来好像很复杂,实际上也就是很多个板块。
一.文件系统和catkin_ws工作空间
工作空间很好理解啦,但是catkin是啥呢?catkin是ros定制的一个编译构建系统,实际上是Cmake的一个拓展,涉及编译原理的我不懂,也没必要再说下去了qwq。
通过以下几个命令,我们就完成了工作空间的创建:
$ mkdir -p catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make
这里我们要注意,catkin_make是一个编译命令,他必须在工作空间的根目录,也就是catkin_ws下执行。
在建立完成工作空间之后,我们通常要刷新环境变量,这样系统才知道我们的ros可执行文件在哪里
$ source ~/catkin_ws/devel/setup.bash
# 像我一样使用zsh的同学当然要改一下后缀
$ source ~/catkin_ws/devel/setup.zsh
当然是不是每次都要这样呢??
显然不是,我们可以吧ros的环境变量直接链接到程序里。具体方法下回再写。
build和devel
build中存放的是cmake&catkin缓存和中间文件,而devel则是存着一些生成目标文件,比如头文件,动态、静态的链接库,以及一些可执行文件。这些东西暂时和我们没有太多关系,他都是catkin_make自己搞定的。
src 存放代码的地方
我们的日常开发都只和src有关系,这就是一个存放代码的地方。src里放着一个有一个package,这是ros文件的基本单位。由于catkin是递归的查找package的,所以在src中建立一些文件夹,这样你的package也能不受影响的被编辑。
package
package是ROS文件的基本组织形式,是catkin编译的基本单元,一个package可以包含多个可执行文件(节点)。package可以类比成细胞。
那么catkin是怎么知道他是不是package的呢?其实是判断文件夹有没有两个关键文件:"CMakeList.txt" "package.xml"。前者是和编译有关的,我们了解cmakelist就能知道他的作用。
而另外一个文件"package.xml"则定义了package的各种属性,例如包名,版本号,作者,依赖项等等。
通常我们只需要负责修改一些依赖项【build_depend run_depend】来完成对package的设置。
其他文件
scripts:用于存放python文件和python的源文件
msg:包含一些通讯协议之类的
srv:包含服务
include:存放c++的头文件
src:存放c++代码
launch:存放launch文件
launch文件是ros中非常重要的一个环节,下面这篇博客可以作为入门知识补充。
二.ROS文件系统的一些操作
#查找某个pkg的地址
$ rospack find package_name
#列出本地所有的okg
$rospack list
#列举出某个pkg路径下的信息
$ rosls package_name
#转到pkg目录
$ roscd package_name (file_name)
#创建一个pkg
catkin_create_pkg <pkg_name>[deps]
#安装某个pkg所需的依赖
$ rosdep install <package_name>
啊啊啊要开会了 先写到这里吧~