文章目录
1. 学习资料
- 古月居学习视频
- 《ROS机器人开发实践》胡春旭
2. ROS 工作空间与功能包
ROS的工作空间相当于一个完整的工程,工作空间中有源码文件、二进制文件等,具体的,可以被分为 /src,/build,/devel和**/install**四个文件夹。
2.1 工作空间的简介
(1)src
src,代码空间,即Source Space, 用来储存ROS的功能包的源码文件。
(2)build
build, 编译空间,即Build Space, 用来储存编译过程中产生的中间文件,不需要什么关注。
(3)devel
devel, 开发空间,即Development Space, 用来放置编译生成的可执行文件,开发中。
(4) install
install, 安装空间,即Install Space, 同样用来存放可执行文件,但与开发空间不同的是,用于开发后可执行文件的存放,即安装。
2.2 工作空间、功能包的创建与编译
功能包的创建是在工作空间创建完成的基础上完成的,首先完成一个空工作空间的创建,其次在该工作空间中添加创建功能包。
2.2.1 工作空间的创建与编译
(1)工作空间创建
工作空间的创建包括目录的创建与空间的初始化,创建一个名称为"test"的工作空间:
mkdir -p ~/test/src
创建完工作空间后,对空间进行初始化,这里使用catkin的初始化工具,需要注意的是,需要进入src目录完成初始化工作:
cd ~/test/src
catkin_init_workspace
(2)工作空间的编译
进过(1)完成工作空间的创建后,在工作空间的根目录下使用catkin_make命令编译整个工作空间
cd ~/test/
catkin_make
通过catkin_make指令,在根目录下会自动生成,devel和build两个文件夹,此时没有install文件夹,如需同时创建install文件夹,就需要使用:
catkin_make install
(3)环境变量的设置
经过(2)的编译过程,在devel中会产生环境变量设置的脚本,使用source指令使该环境变量生效(在工作空间的根目录下):
source devel/setup.bash
并且可以使用如下指令检查是否生效:
echo $ROS_PACKAGE_PATH
过程总结
2.2.2 功能包的创建与编译
(1)功能包的创建
ROS使用catkin_create_pkg创建功能包,并且需要在代码空间src文件夹下进行创建,创建包的语法如下:
catkin_create_pkg <package_name> [depend1][depend2][depend3]
其中第二个参数是功能包的名称,后面用中括号扩起的参数是依赖包的名称,例如,我们创建一个名为 test_pkg的功能包,依赖包为 roscpp,rospy,std_msgs如下:
cd ~/test/src
catkin_create_pkg test_pkg roscpp rospy std_msgs
创建完成后在src/test文件夹下会生成 CMakeList.txt和package.xml两个重要的文件,前者记录包编译的规则后者记录包的依赖、开源许可等信息。
- 需要强调的是,在同一个工作下,同名功能包不能存在
(2)功能包的编译
创建完一个新的功能包之后,进入工作空间的根目录,对功能包进行编译:
cd ~/test
catkin_cmake
(3)环境变量的配置
环境配置与工作空间创建时的配置方法一致,
source ~\test\devel\setup.bash
同样也可以验证以下是否生效。