一、工作空间
工作空间是存放工程开发项目的文件夹
- src:代码空间,用于放置功能包
- build:编译空间,用于放置编译过程的中间文件
- devel:开发空间,包含编译生成的可执行文件,debug版本
- install:安装空间,包含编译可执行文件,release版本
二、创建工作空间
1.创建工作空间
ll@ll-ThinkPad-P15-Gen-1:~$ mkdir -p ~/ZtTest/src
ll@ll-ThinkPad-P15-Gen-1:~$ cd ~/ZtTest/src
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest/src$ catkin_init_workspace
初始化后有以下内容
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest/src$ ls -n
total 0
lrwxrwxrwx 1 1000 1000 50 10月 20 19:18 CMakeLists.txt -> /opt/ros/melodic/share/catkin/cmake/toplevel.cmake
2.编译工作空间
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest/src$ cd ../
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest$ catkin_make
编译后工作空间内有以下内容
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest$ ls -n
total 12
drwxrwxr-x 8 1000 1000 4096 10月 20 19:19 build
drwxrwxr-x 3 1000 1000 4096 10月 20 19:19 devel
drwxrwxr-x 2 1000 1000 4096 10月 20 19:18 src
devel文件夹下有以下内容:
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest$ ls -n devel
total 48
-rw-rw-r-- 1 1000 1000 0 10月 20 19:19 cmake.lock
-rwxr-xr-x 1 1000 1000 506 10月 20 19:19 env.sh
drwxrwxr-x 2 1000 1000 4096 10月 20 19:19 lib
-rw-r--r-- 1 1000 1000 283 10月 20 19:19 local_setup.bash
-rw-r--r-- 1 1000 1000 352 10月 20 19:19 local_setup.sh
-rw-r--r-- 1 1000 1000 293 10月 20 19:19 local_setup.zsh
-rw-r--r-- 1 1000 1000 260 10月 20 19:19 setup.bash
-rw-r--r-- 1 1000 1000 2779 10月 20 19:19 setup.sh
-rwxr-xr-x 1 1000 1000 13312 10月 20 19:19 _setup_util.py
-rw-r--r-- 1 1000 1000 270 10月 20 19:19 setup.zsh
build文件夹下有以下内容:
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest$ ls -n build
total 80
drwxrwxr-x 2 1000 1000 4096 10月 20 19:19 atomic_configure
drwxrwxr-x 3 1000 1000 4096 10月 20 19:19 catkin
drwxrwxr-x 4 1000 1000 4096 10月 20 19:19 catkin_generated
-rw-rw-r-- 1 1000 1000 0 10月 20 19:19 CATKIN_IGNORE
-rw-rw-r-- 1 1000 1000 109 10月 20 19:19 catkin_make.cache
-rw-rw-r-- 1 1000 1000 18293 10月 20 19:19 CMakeCache.txt
drwxrwxr-x 9 1000 1000 4096 10月 20 19:19 CMakeFiles
-rw-rw-r-- 1 1000 1000 6357 10月 20 19:19 cmake_install.cmake
-rw-r--r-- 1 1000 1000 2393 10月 20 19:19 CTestConfiguration.ini
-rw-rw-r-- 1 1000 1000 104 10月 20 19:19 CTestCustom.cmake
-rw-rw-r-- 1 1000 1000 270 10月 20 19:19 CTestTestfile.cmake
drwxrwxr-x 4 1000 1000 4096 10月 20 19:19 gtest
-rw-rw-r-- 1 1000 1000 9946 10月 20 19:19 Makefile
drwxrwxr-x 2 1000 1000 4096 10月 20 19:19 test_results
3.设置环境变量
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest$ source devel/setup.bash
4.检查环境变量
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest$ echo $ROS_PACKAGE_PATH
/home/ll/ZtTest/src:/opt/ros/melodic/share
5.创建Install文件夹
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest$ catkin_make install
install文件夹下内容
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest$ ls -n install
total 44
-rwxr-xr-x 1 1000 1000 506 10月 20 19:19 env.sh
-rw-r--r-- 1 1000 1000 283 10月 20 19:19 local_setup.bash
-rw-r--r-- 1 1000 1000 354 10月 20 19:19 local_setup.sh
-rw-r--r-- 1 1000 1000 293 10月 20 19:19 local_setup.zsh
-rw-r--r-- 1 1000 1000 260 10月 20 19:19 setup.bash
-rw-r--r-- 1 1000 1000 2781 10月 20 19:19 setup.sh
-rwxr-xr-x 1 1000 1000 13312 10月 20 19:19 _setup_util.py
-rw-r--r-- 1 1000 1000 270 10月 20 19:19 setup.zsh
三、创建功能包
1.创建功能包
使用指令 catkin_create_pkg <package name> [depend1] [depend2] [depend3]
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest$ cd src
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest/src$ catkin_create_pkg srcPkgTest std_msgs rospy roscpp
一个工作空间内不能有同名功能包,不同工作空间内可以有同名功能包
功能包内容如下
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest/src$ ls -n srcPkgTest
total 20
-rw-rw-r-- 1 1000 1000 7067 10月 20 19:46 CMakeLists.txt
drwxrwxr-x 3 1000 1000 4096 10月 20 19:46 include
-rw-rw-r-- 1 1000 1000 2865 10月 20 19:46 package.xml
drwxrwxr-x 2 1000 1000 4096 10月 20 19:46 src
后续如果要修改该功能包的依赖源可以在package.xml文件内修改
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
2.编译功能包
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest/src$ cd ../
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest$ catkin_make
3.设置环境变量
ll@ll-ThinkPad-P15-Gen-1:~/ZtTest$ source ./devel/setup.bash