以程序名为control为例:
1. 创建工作空间
mkdir control_ws
2. 创建源码文件夹
control_ws下
mkdir src
3. 创建功能包
control_ws/src下
mkdir control
4. 创建control源码文件夹
control_ws/src/control下
mkdir src
5. 创建CMakeLists.txt
下面是一个依赖于rclcpp的基本CMakeLists.txt模板:
cmake_minimum_required(VERSION 3.15)
project(control)
# Set C++ standard
set(CMAKE_CXX_STANDARD 17)
# Find ROS 2 packages
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
include_directories(
include
)
# Add an executable
add_executable(${PROJECT_NAME}
src/main.cpp
)
# Link dependencies
ament_target_dependencies(${PROJECT_NAME} rclcpp)
# Install the executable
install(TARGETS ${PROJECT_NAME}
DESTINATION lib/${PROJECT_NAME})
#install(DIRECTORY launch/
# DESTINATION share/${PROJECT_NAME}/launch)
ament_package()
需要根据程序名,修改第2行的project(xxx);
后续每添加一个依赖,需要在10行添加find_package(xxx REQUIRED),且第20行括号里最后添加 ament_target_dependencies(${PROJECT_NAME} rclcpp xxx);
第26行暂时被注释掉,可以手动在control_ws/src/control下添加一个launch文件夹,并在里面写上.launch文件,这样第26行就可以用了。
如果有多个可执行文件,可以增加:(注意修改了1,6,9行三处的可执行文件的名字)
add_executable(exec2
src/exec2.cpp
)
# Link dependencies
ament_target_dependencies(exec2 rclcpp)
# Install the executable
install(TARGETS exec2
DESTINATION lib/${PROJECT_NAME})
6. 创建package.xml
下面是依赖于rclcpp的基本package.xml模板:
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>control</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="[email protected]">wcx</maintainer>
<license>TODO: License declaration</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<depend>rclcpp</depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>
需要根据程序名,修改第3行的name;
后续每添加一个依赖,需要在12行添加<depend>xxx</depend>。
7. 创建源码
在control_ws/src/control/src下,写一个最基本的依赖于rclcpp的main.cpp文件:
#include "rclcpp/rclcpp.hpp"
int main(int argc, char * argv[]) {
rclcpp::init(argc, argv);
return 0;
}
8. 编译
回到control_ws工作空间:
colcon build