【ROS2】概念:中级-执行器 Executors

 目录

  •  概述

  •  基本使用

  •  执行器类型

  •  回调组

  •  调度语义

  • Outlook

  •  更多信息

 概述 

在 ROS 2 中,执行管理由执行器处理。执行器使用底层操作系统的一个或多个线程来调用订阅、定时器、服务服务器、操作服务器等的回调,以处理传入的消息和事件。显式的 Executor 类(在 rclcpp 中的 executor.hpp,在 rclpy 中的 executors.py,或在 rclc 中的 executor.h)比 ROS 1 中的旋转机制提供了更多的执行管理控制,尽管基本 API 非常相似。

在以下内容中,我们重点介绍 C++ 客户端库 rclcpp。

 基本用法 

在最简单的情况下,主线程通过调用 rclcpp::spin(..) 来处理节点的传入消息和事件,如下所示:

int main(int argc, char* argv[])
{
   // Some initialization.
   rclcpp::init(argc, argv);
   ...


   // Instantiate a node.
   rclcpp::Node::SharedPtr node = ...


   // Run the executor.
   rclcpp::spin(node);


   // Shutdown and exit.
   ...
   return 0;
}

对 spin(node) 的调用基本上扩展为单线程执行器的实例化和调用,这是最简单的执行器:

rclcpp::executors::SingleThreadedExecutor executor;
executor.add_node(node);
executor.spin();

通过调用执行器实例的 spin() ,当前线程开始查询 rcl 和中间件层的传入消息和其他事件,并调用相应的回调函数,直到节点关闭。为了不抵消中间件的 QoS 设置,传入消息不会存储在客户端库层的队列中,而是保存在中间件中,直到由回调函数处理。(这是与 ROS 1 的一个关键区别。)等待集用于通知执行器中间件层上的可用消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值