一、
工作空间就是一个文件夹,其中包含功能包,功能包又包 含源文件和环境或工作空间,从而提供编译这些功能包的一种方式。当 你想同时编译不同的功能包时它非常有用,并且是集中化所有开发的一 种好方式。
·源文件空间(src):代码空间
在源空间(src文件夹)中,放置了 功能包、项目、复制的包等。在这个空间中,最重要的一个文件是 CMakeLists.txt。当在工作空间中配置包时,src文件夹中有 CMakeLists.txt因为cmake调用它。这个文件是通过catkin_init_workspace 命令创建的。
·编译空间(build space):
在build文件夹里,cmake和catkin为功能 包和项目保存缓存信息、配置和其他中间文件。
·开发空间(Development(devel)space):
devel文件夹用来保存 编译后的程序,这些是无须安装就能用来测试的程序。一旦项目通过测 试,就可以安装或导出功能包从而与其他开发人员分享。
二、
(1)、创建工作空间
$ cd catkin_ws/src/
$ catkin_init_workspace
(2、编译工作空间
$ cd catkin_ws/
$ catkin_make
(3)、设置环境变量
$ source devel/setup.bash
(4)、检查环境变量
$ echo $ROS_PACKAGE_PATH
三、创建功能包
1、创建功能包
$cd catkin_ws/src
$catkin_create_pkg learning_communication std_msgs rospy roscpp
命令格式为
catkin_create_pkg [package_name] [dependency1] ... [dependencyN]
这些依赖项包括以下几个。 ·
std_msgs:包含了常见消息类型,表示基本数据类型和其他基本的 消息构造,如多维数组。
roscpp:使用C++实现ROS的各种功能。它提供了一个客户端库, 让C++程序员能够调用这些接口快速完成与ROS的主题、
服务和参数相关的开发工作。
可以使用rospack、roscd和rosls命令来获取新 的功能包信息。下面是可以执行的一些操作。
·rospack profile:此命令用于通知用户ROS中新添加的内容。在安装任何新功能包之后使用它。
·rospack find learning_communication:此命令用于查找路径。
·rospack depends learning_communication:此命令用于查看依赖关系。
·rosls learning_communication:此命令用于查看内容。
·roscd learning_communication:此命令会更改实际路径。
2、编译功能包
$cd catkin_ws/src $catkin_make $sorce~/catkin_ws/devel/setup.bash//可在bashrc文件中配置
同一个工作空间下,不允许存在同名功能包,不同工作空间下,允许存在同名功能包
必须在workspace文件夹中运行catkin_make命令。如果在其 他文件夹中这样做,命令无法执行
四、工作空间的覆盖(overlaying)
运行时ros会优先查找最前端的工作空间中是否存在指定的功能包。,如果不存在,就顺序向后查找其他工作空间
且当你正在使用 ROS功能包(例如Turtlesim)时,可以使用安装版本,也可以下载源文 件并编译它来使用你修改后的版本。
ROS允许使用你自己版本的功能包去替代安装版本。如果你正在升 级已安装的功能包。