系列文章目录
前言
创建工作空间与功能包
工作空间(workspace)是一个存放工程开发相关文件的文件夹
src :代码空间 (Source Space)
build :编译空间(Build Space)
devel :开发空间 (Development Space)
install :安装空间(Install Space)
src就叫src 是不能改定义的
linux命令大全
创建工作空间
mkdir - p ~/catin_ws/src
catin_ws是工作空间名字 可以自己改
在 Linux 系统中,~ 代表的是用户的主文件夹,即 “/home/用户名” 这个目录,如你的用户名为 rem,则 ~ 就代表 “/home/rem/”
cd ~/catin_ws/src
到这个src文件夹下,
catkin_init_workspace
把当前文件夹变成ros工作空间的属性
编译工作空间
cd ~/catin_ws/
回到工作空间下pwd
显示当前所在目录
catkin_make
做编译,产生build和devel文件夹
产生install 文件夹
catkin_make install
src放功能包的源码,
install是安装空间,里面会放置我们最终编译生成的可执行文件
devel是开发空间,里面会放置我们在开发过程中一些可执行文件,包括一些库,所以devel和install的功能是类似的,一个是开发中,一个是开发后分享给客户使用的一个结果文件
build是我们在编译过程中的中间文件,一些二进制文件,基本上是用不到的。
现在我们就可以在这个工作空间开发你要的代码了。
创建功能包
在创建代码时一定要创建功能包,它是我们放置ros里面源码的一个最小单元,所以你的所有源码都必须放到你的功能包里,不能直接放到src下面去编译。
第一个参数是功能包名字 这里叫测试功能包(test_msg),后面跟很多依赖。
同一个工作空间下,不允许存在同名功能包
不同工作空间下,允许存在同名功能包!!!
catin_creat_pkg <package_name>[depend1][depend2][depend3]
cd ~/catkin_ws/src
ros需要调用python和c++的接口来写程序(rospy roscpp)还需要一些标准的消息结构(std_msgs) (standard 标准)int booI等等,如果调用这些消息的话,也是要依赖的。一定要放置到src里面
catin_creat_pkg test_pkg std_msgs rospy roscpp
创建了test_pkg的文件夹,
里面src是放置你的代码的,比方说cpp文件
include是放置c++的头文件
CMakeLists.txt和package.xml这是我们每个功能包必须要存在的两个文件,标志着这个文件夹是功能包而不是普通文件夹
看一下package.xml的文件,是用xml语言描述的关于功能包的信息,name名字,version版本号,description描述信息,包括功能包维护者的email的信息,license开源的许可证
下面就是功能包的依赖信息,在catkin_make的时候会搜索一下依赖的包存不存在,不存在的话会报错,如果后面想再添加依赖包的话,可以在这手动添加。
另外一个CMakeLists.txt是用来描述功能包的编译规则,使用cmake的语法,cmake也是一个基于gcc的编译器,CMAKE是用来产生makefile的,产生makefile 后执行 make命令才会进行真正的编译。
编译功能包
cd ~/catkin_ws
catkin_make
设置环境变量
只有设置环境变量,系统才能找到我们的工作空间
source ~/catkin_ws/devel/setup.bash
检测环境变量
用echo命令把环境变量打开,查找所有ros功能包的路径,只有设置setup.bash之后,PATH才能包含工作空间的的路径。
echo $ROS_PACKAGE_PATH
总结
第二章结束