【ROS实践学习入门系列(二)ROS文件概念和工作空间】
本内容经官网实例以及一些参考书总结而成,欢迎留言评论交流~
联系方式:ziyuanw#foxmail.com(#换成@)
一、ROS文件系统级别
在ROS设计的架构中,经过发展,目前被设计为三个部分,各自代表三个层级。
文件系统级:后面以小海龟案例中文件组成来说明ROS内部构成,文件夹结构,以及实现功能必要核心文件。
计算图级:体现进程与系统之间通信。
社区级:开发者之间互相共享代码、问题。
1.ROS文件系统级:
①功能包(package):ROS中的最小结构单位,包含ROS运行时的进程(节点),配置文件。
②功能包清单(package manifest):提供关于功能包的许可,依赖关系,编译标志等信息,包清单为package.xml文件管理。
③元功能包(metapackage):将多个功能包组合在一起成为元功能包。
④元功能包清单(metapackage manifest):类似第二个同样有package.xml,但存在一个XML格式导出标记。结构也稍有不同。
⑤消息类型(message(msg)type):一个进程发送到其他进程的信息被称为消息。ROS中有许多标准类型消息。存储在*.msg文件。
⑥服务类型(service(srv)type):服务说明存储在*.srv文件中。
二、工作空间
还是先看一下上篇博客中分析小海龟案例:
打开ubuntu终端,输入:
$roscd turtlesim
切换至ROS官方案例的turtlesim文件夹下。(这里可以直观感受一下cd和roscd的区别,roscd可以在配置好的ROS工作空间中,顶层目录切换至它下面的任意存在的文件目录;但是从底层级往高层文件目录切换就要一步一步切换了,或者给出绝对路径)
查看turtlesim的文件结构:(之前的版本里面还有一个src文件放着.cpp源程序)
images里面放着各种小海龟的图片每次打开小海龟外观都不一样。
1.工作空间创建
下列操作方法只适用于ROS Groovy及后期版本,对于ROS Fuerte及早期版本请选择rosbuild。
下面开始创建一个名为:catkin_ws的工作空间,并包含一个空src目录。
打开一个新的终端,我这里直接在家目录下创建了。可以自己根据需求任意自行选择目录。
- (mkdir -p 检测catkin_ws/src是否存在,不存在目录则创建。)
$ mkdir -p ~/catkin_ws/src
即这个工作空间是空的。
- (catkin_make可以简单的理解为cmake的ros版本集成形式。该命令在catkin 工作空间中是一个非常方便的工具。)
进入catkin_ws下进行编译catkin_make:
$ cd ~/catkin_ws/
$ catkin_make
完成编译后,查看一下当前目录多出'build'和'devel'这两个文件夹。'src'中多出了一个CMakeLists.txt文件。在'devel'文件夹里面你可以看到几个setup.*sh文件。source这些文件中的任何一个都可以将当前工作空间设置在ROS工作环境的最顶层,(.catkin_workspace为隐藏文件,仅标记catkin工作区的位置以进行工具集成)。更多请参考catkin文档。
每次自己建立完成一个catkin工作空间后使其生效就需要:接下来首先source一下新生成的setup.*sh文件:
$ source devel/setup.bash
同样,roscd 可以在当前catkin_ws内跳转任意一个文件目录,而cd命令只能在给出绝对路径或相对路径时才能跳转。
要想保证工作空间已配置正确,需确保ROS_PACKAGE_PATH环境变量包含你的工作空间目录,采用以下命令查看:
$ echo $ROS_PACKAGE_PATH
输出显示:
/home/<youruser>/catkin_ws/src:/opt/ros/melodic/share:/opt/ros/melodic/stacks
到此你的工作环境已经搭建完成,接下来可以继续学习ROS常用命令与节点等操作。
参考资料:
【1】ROS官网:http://wiki.ros.org/cn
【2】ROS机器人高效编程
【3】机器人操作系统ROS浅析