一. 新建工作空间
mkdir -p ws_chassis/src
二 初始化文件夹为ROS功能包工作空间
在ws_chassis/src目录下执行以下命令
catkin_init_work_space
三.编译工作空间
回到ws_chassis目录,执行以下命令
catkin_make
正常可以看到编译成功到100%
四.创建功能包
在ws_chassis/src目录下执行以下命令
catkin_create_pkg kh_chassis roscpp std_msgs geometry_msgs nav_msgs tf
kh_chassis 为功能包名,后面的都是依赖
五.修改CMakeLists
在ws_chassis/src可以看到创建的功能包文件夹kh_chassis ,进入里面能看到有CMakeLists.txt、include、package.xml、src。在src文件夹下放入ros代码,如chassis.cpp、groy.cpp两个,其中程序入口在chassis.cpp中,groy.cpp中的函数会被调用。
1.确认/添加依赖
打开CMakeLists.txt,找到这一行
find_package(catkin REQUIRED COMPONENTS
可以看到其中包含的依赖就是我们创建功能包时添加的,若想要在创建功能包之后再添加别的依赖,可以直接在这里添加;
2.包含头文件路径
找到这一行:
include_directories(
这部分是用来包含头文件路径的,可以包含kh_chassis文件夹下的include文件夹,例如我们将groy.h放到ws_chassis/src/kh_chassis/include/kh_chassis/文件夹下(include下面的kh_chassis是在创建功能包时自动创建的),修改为如下:
include_directories(
include
${catkin_INCLUDE_DIRS}
)
我们就可以在groy.cpp或chassis.cpp中包含头文件并调用其函数或变量:
#include "kh_chassis/groy.h"
3.设置节点名称及其编译要使用的源文件
ros中一个功能包中可以有多个可独立运行的节点,这里的节点可理解为进程。
找到这一行:
add_executable(${PROJECT_NAME}_node
其中${PROJECT_NAME}_node是该节点的名称(可任意修改),包含的是其所用到的源文件:
add_executable(${PROJECT_NAME}_node
src/chassis.cpp
src/groy.cpp
)
4.指定链接库
找到这一行:
target_link_libraries(${PROJECT_NAME}_node
修改为
target_link_libraries(${PROJECT_NAME}_node
${catkin_LIBRARIES}
)
六.编译源码
和第三步一致