从零构建ROS2话题通信:一个发布者与订阅者的诞生之旅
1. 环境准备与工作空间搭建
在开始构建ROS2话题通信之前,我们需要确保开发环境已经正确配置。ROS2的开发通常从创建工作空间开始,这是组织代码和依赖的基础架构。
首先确认你的ROS2版本,本文基于Humble Hawksbill版本进行说明。打开终端,执行以下命令验证ROS2安装:
source /opt/ros/humble/setup.bash
ros2 doctor
如果看到"All checks passed"的提示,说明ROS2环境配置正确。接下来创建工作空间目录结构:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
工作空间采用标准的ROS2结构,其中src目录用于存放功能包源码。这种分层结构使得代码管理更加清晰,也便于使用ROS2的构建工具。
提示:建议为每个项目创建独立的工作空间,避免不同项目间的依赖冲突。
2. 创建功能包与依赖配置
功能包是ROS2中的基本组织单元,包含节点、库、配置文件等。我们使用ament构建系统来管理C++功能包。
在src目录下创建名为sensor_communication的功能包:
cd ~/ros2_ws/src
ros2 pkg create sensor_communication \
--build-type ament_cmake \
--dependencies rclcpp std_msgs
创建完成后,查看功能包的结构:
sensor_communication/
├── CMakeLists.txt
├── include
│ └── sensor_communication
├── package.xml
└── src
package.xml文件定义了功能包的元数据和依赖关系。打开该文件,完善描述信息:
<?xml version="1.0"?>
<?xml-model href="/https://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>sensor_communication</name>
<version>0.0.0</version>
<description>传感器数据发布与订阅示例</description>
<maintainer email="developer@example.com">Developer</maintainer>
<license>Apache-2.0</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<depend>rclcpp</depend>
<depend>std_msgs</depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>
CMakeLists.txt文件配置构建规则,确保包含以下内容:
cmake_minimum_required(VERSION 3.8)
project(sensor_communication)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)
# 后续将在这


1万+

被折叠的 条评论
为什么被折叠?



