每次新建功能包都容易忘记第一个程序需要配置什么,特此记录一下。。。
新建工作空间
//创建工作空间
mkdir -p ~/catkin_ws/src
//初始化
cd ~/catkin_ws/src
catkin_init_workspace
//编译
cd ~/catkin_ws/
catkin_make
//添加环境变量
source devel/setup.bash
新建功能包
cd ~/catkin_ws/src
// 功能包命名为:my_first_cpp
catkin_create_pkg my_first_cpp std_msgs rospy roscpp
第一个程序配置
先在功能包内随便写一个程序,假设程序名称为“my_first_cpp_node.cpp”
#include<iostream>
using namespace std;
int main(int argc,char** argv)
{
cout<< "hello word"<<endl;
return (0);
}
进入CMakeLists.txt
//如果没有其他依赖,只需修改biuld
//找到 “Declare a C++ executable”
//将“add_executable()”的注释取消
add_executable(${PROJECT_NAME}_node src/my_first_cpp_node.cpp)
//将“add_dependencies()”的注释取消
add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
//将“target_link_libraries()”的注释取消
target_link_libraries(${PROJECT_NAME}_node
${catkin_LIBRARIES}
)
//然后编译
catkin_make
运行
roscore
source devel/setup.bash
rosrun my_first_cpp my_first_cpp_node
其他程序配置
如果有其他单独节点,可直接在CMakeLists.txt末尾添加:
//假设其节点名为“other_node”
add_executable(other_node src/other_node.cpp )
target_link_libraries(other_node ${catkin_LIBRARIES} )
pcl、opencv、eigen等配置
//找到“ find_package”
find_package(Eigen3 REQUIRED)
find_package(OpenCV REQUIRED)
find_package (PCL 1.8 REQUIRED)
//找到build中的“include_directories()”
${EIGEN3_INCLUDE_DIR}
${OpenCV_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}
//找到需要用到的节点所在的“target_link_libraries()”
加入:${OpenCV_LIBRARIES} ${PCL_LIBRARIES}