1. ROS2功能包:机器人开发的基石单元
在机器人操作系统(ROS2)的开发实践中,功能包(Package)是最基础的代码组织单元。与ROS1时代相比,ROS2的包管理机制进行了深度重构,采用更现代的ament构建系统。一个典型的功能包可能包含:
- 节点(Node)的可执行文件
- 配置文件(如YAML参数)
- 启动脚本(Launch files)
- 消息/服务定义(.msg/.srv)
- 测试用例
创建功能包时,开发者需要明确其类型。ROS2支持多种包类型:
bash复制# C++功能包
ros2 pkg create --build-type ament_cmake <package_name>
# Python功能包
ros2 pkg create --build-type ament_python <package_name>
关键选择:对于计算密集型任务(如SLAM算法)建议使用ament_cmake,而快速原型开发可选用ament_python。实测表明,C++包在复杂算法场景下性能比Python高3-5倍。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 解剖CMakeLists.txt:编译系统的DNA
在ament_cmake包中,CMakeLists.txt是构建流程的核心配置文件。以下是一个最小化但完整的配置示例:
cmake复制cmake_minimum_required(VERSION 3.5)
project(my_robot_package)
# 查找ROS2依赖
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)
# 添加可执行文件
add_executable(talker src/talker.cpp)
ament_target_dependencies(talker rclcpp std_msgs)
# 安装目标
install(TARGETS talker
DESTINATION lib/${PROJECT_NAME})
# 导出依赖
ament_export_dependencies(rclcpp std_msgs)
ament_package()
