title: ros-workspace-创建工作空间和功能包
date: 2021-09-14 08:30:26
tags:
- ros
- AUV
工作空间是一个存放工程开发相关文件的文件夹。
- src:代码空间(Source Space),存放代码文件,放置功能包。
- build:编译空间(Build Space),存放编译过程的中间文件,一般都不用管
- devel:开发空间(Development Space),放置编译生成的可执行文件和库文件,脚本
- install:安装空间(Install Space),安装的制定目标位置,与开发空间有重复,一般不用管
主要用src和devel两个文件夹。
1,创建工作空间
# 创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
# 编译工作空间
cd ~/catkin_ws/
catkin_make # 编译src下面所有源码,但是不会生成install空间,如果需要生成install,catkin_make install
# 设置环境变量
source devel/setup.bash
# 检查环境变量
echo $ROS_PACKAGE_PATH # 查看路径,通过路径可以找到功能包,如果功能包不在路径之内,无法被编译
2,创建功能包
所有源码必须放到功能包里面。
# 创建功能包
cd ~/catkin_ws/src # 跳到工作空间的src
catkin_create_pkg test_pkg std_msgs rospy roscpp #创建一个功能包,名字是test_pkg,依赖于rospy,roscpp,std_msgs是ros定义的标准消息结构
# 编译功能包
cd ~/catkin_ws
catkin_make # 编译功能包
source ~/catkin_ws/devel/setup.bash # 添加环境变量
同一工作空间下,不允许存在同名功能包。
不同工作空间下,允许存在同名功能包。
功能包会创建两个文件,CMakeLists.txt(设置编译功能包代码的规则)和package.xml(告诉用户功能包的基本信息),这两个文件标志着这是一个功能包而不是一个文件夹属性。