ROS2学习(6)------ROS2 节点介绍

  • 操作系统:ubuntu22.04
  • IDE:Visual Studio Code
  • 编程语言:C++11
  • ROS版本:2

在ROS 2(Robot Operating System 2)中,节点(Node)是执行特定任务的功能单元。每个节点可以负责处理传感器数据、控制硬件、运行算法等。节点通过话题(Topics)、服务(Services)、动作(Actions)等方式相互通信,构成了复杂的机器人系统的基础。以下是关于ROS 2节点的详细介绍:

节点的基本概念

  • 独立性:每个节点都是相对独立的程序,可以单独开发和部署。这有助于提高系统的模块化程度和可维护性。
  • 通信机制:节点之间通过ROS 2提供的通信机制进行交互,主要包括发布/订阅模式(Publish/Subscribe)、请求/响应模式(Request/Response),以及长时间操作的支持(Actions)。
  • 命名空间:节点可以通过命名空间来组织和分组,便于管理和避免命名冲突。

创建和运行节点

使用C++

要在ROS 2中创建一个简单的C++节点,你需要遵循以下步骤:

  • 创建包:首先使用ros2 pkg create命令创建一个新的包。
ros2 pkg create my_cpp_node --build-type ament_cmake --dependencies rclcpp std_msgs
  • 编写代码:在你的包中添加源文件,并编写节点代码。例如,在src/my_node.cpp中编写如下代码:
#include "rclcpp/rclcpp.hpp"

class MyNode : public rclcpp::Node {
public:
    MyNode() : Node("my_node") {
        RCLCPP_INFO(this->get_logger(), "Hello from my node!");
    }
};

int main(int argc, char *argv[]) {
    rclcpp::init(argc, argv);
    auto node = std::make_shared<MyNode>();
    rclcpp::spin(node);
    rclcpp::shutdown();
    return 0;
}
  • 编译:修改CMakeLists.txt以包含你的新源文件,并确保它被正确地构建为可执行文件。然后使用colcon build命令编译整个工作空间。

CMakeLists.txt内容:

cmake_minimum_required(VERSION 3.8)
project(my_cpp_node)

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)

# 声明可执行文件
add_executable(my_node src/my_node.cpp)
ament_target_dependencies(my_node rclcpp std_msgs)

install(TARGETS
  my_node
  DESTINATION lib/${PROJECT_NAME})

if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  # the following line skips the linter which checks for copyrights
  # comment the line when a copyright and license is added to all source files
  set(ament_cmake_copyright_FOUND TRUE)
  # the following line skips cpplint (only works in a git repo)
  # comment the line when this package is in a git repo and when
  # a copyright and license is added to all source files
  set(ament_cmake_cpplint_FOUND TRUE)
  ament_lint_auto_find_test_dependencies()
endif()

ament_package()

  • 编译命令:
colcon build --packages-select my_cpp_node
  • 运行节点:编译完成后,你可以使用以下命令运行节点:
source install/setup.bash
ros2 run my_cpp_node my_node

出现以下运行结果:

INFO] [1747384549.824982066] [my_node]: Hello from my node!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村北头的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值