当前位置: 首页 > news >正文

网站开发技术文档个人注册网站

网站开发技术文档,个人注册网站,虚拟资源下载主题wordpress,wordpress分类目录和页面在ROS 2中#xff0c;Executor是一个核心概念#xff0c;负责管理节点#xff08;Node#xff09;中的回调函数#xff0c;如订阅消息的回调、服务请求的回调、定时器回调等。Executor决定了何时以及如何执行这些回调#xff0c;从而在ROS 2系统中实现异步编程。 ROS 2 … 在ROS 2中Executor是一个核心概念负责管理节点Node中的回调函数如订阅消息的回调、服务请求的回调、定时器回调等。Executor决定了何时以及如何执行这些回调从而在ROS 2系统中实现异步编程。 ROS 2 Executor的工作原理 在ROS 2中节点是构成系统的基本单元每个节点可以发布和订阅主题Topic提供和使用服务Service以及使用定时器Timer。Executor是控制节点中回调函数执行的机制。当消息到达或服务请求发生时这些回调函数需要被调用。Executor负责从节点中收集待处理的回调并决定执行它们的顺序和时间。 ROS 2 Executor的类型 ROS 2提供了几种不同类型的Executor每种都有其特定的用途和调度策略 SingleThreadedExecutor这是最简单的Executor它在单个线程中顺序执行所有回调。这意味着在任意时刻只有一个回调被执行直到完成。这种Executor适用于不需要并行处理的简单应用。MultiThreadedExecutor这种Executor允许在多个线程中并行执行回调。它使用一个线程池回调任务可以在不同的线程中同时运行适用于需要处理大量并行任务的复杂应用。StaticSingleThreadedExecutor这是对SingleThreadedExecutor的优化适用于性能要求较高的场景。它在内部缓存了一些信息以减少每次执行回调时的开销。 通过为每个节点调用 add_node(..) 所有三个执行器都可以与多个节点一起使用。 rclcpp::Node::SharedPtr node1 ... rclcpp::Node::SharedPtr node2 ... rclcpp::Node::SharedPtr node3 ...rclcpp::executors::StaticSingleThreadedExecutor executor; executor.add_node(node1); executor.add_node(node2); executor.add_node(node3); executor.spin();尽管基本 API 非常相似但ROS 2 Executor 类在 rclcpp 中的 executor.hpp 中、rclpy 中的 executors.py 中或 rclc 中的 executor.h 中比 ROS 1 中的spin机制提供了更多对执行管理的控制。接下来的内容我们重点关注 C 客户端库 rclcpp。 基本使用方法 在最简单的情况下主线程用于通过调用 rclcpp::spin(..) 来处理 Node 的传入消息和事件如下所示 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(); 通过调用 Executor 实例的 spin()当前线程开始查询 rcl 和中间件层以获取传入消息和其他事件并调用相应的回调函数直到节点关闭。 为了不影响中间件的 QoS 设置传入消息不会存储在客户端库层的队列中而是保留在中间件中直到由回调函数进行处理这是与 ROS 1 的一个关键区别。等待集waitset用于通知执行器中间件层上的可用消息每个队列有一个二进制标志。 等待集还用于检测计时器何时到期。 单线程执行器也被组件的容器进程使用即在没有显式主函数的情况下创建和执行节点的所有情况。 回调callback分组 ROS 2 允许按组组织节点的回调。 在 rclcpp 中可以通过 Node 类的 create_callback_group 函数创建这样的回调组。 在rclpy中通过调用特定回调组类型的构造函数来完成相同的操作。 回调组必须在节点的整个执行过程中存储例如作为类成员否则执行器将无法触发回调。 然后可以在创建订阅、计时器等时指定该回调组 – 例如通过订阅选项C或Python。 my_callback_group MutuallyExclusiveCallbackGroup() my_subscription self.create_subscription(Int32, /topic, self.callback, qos_profile1, callback_groupmy_callback_group) 所有在没有指定回调组的情况下创建的订阅、计时器等都将分配给默认回调组。 默认回调组可以通过 rclcpp 中的 NodeBaseInterface::get_default_callback_group() 和 rclpy 中的 Node.default_callback_group 查询。 有两种类型的回调组必须在实例化时指定类型 Mutually exclusive: 该组的回调不得并行执行。Reentrant: 该组的回调可以并行执行。 不同回调组的回调可能总是并行执行。 多线程执行器使用其线程作为资源池根据这些条件并行处理尽可能多的回调。 有关如何有效使用回调组的提示请参阅使用回调组。 自 Galatic 版本以来rclcpp 中 Executor 基类的接口已通过新函数 add_callback_group(..) 进行了细化。 这允许将回调组分配给不同的执行器。 通过使用操作系统调度程序配置底层线程特定回调可以优先于其他回调。 例如控制循环的订阅和定时器可以优先于节点的所有其他订阅和标准服务。 example_rclcpp_cbg_executor 包提供了此机制的演示。 调度语义 如果回调的处理时间短于消息和事件发生的周期Executor 基本上按照 FIFO 的顺序处理它们。 但是如果某些回调的处理时间较长消息和事件将在堆栈的较低层排队。 等待集机制只向执行器报告关于这些队列的很少的信息。 具体来说它仅报告是否有特定主题的消息。 执行器使用此信息以循环方式处理消息包括服务和操作但不是按照 FIFO 顺序。 下面的流程图直观地展示了这种调度语义。 Casini 等人在 ECRTS 2019 上的论文首次描述了这种语义注意本文还解释了计时器事件的优先级高于所有其他消息。这种优先级在 Eloquent 版本中已被删除。 Executor的使用 在ROS 2应用程序中开发者需要创建一个或多个节点并将它们添加到Executor。然后开发者调用Executor的spin方法来开始循环等待并执行回调。例如使用SingleThreadedExecutor的基本用法如下 import rclpy from rclpy.executors import SingleThreadedExecutor from my_package import MyNode def main(argsNone): rclpy.init(argsargs) node MyNode() executor SingleThreadedExecutor() executor.add_node(node) try:executor.spin() # 开始执行回调 finally:executor.remove_node(node)rclpy.shutdown() if name main: main() 展望 虽然 rclcpp 的三个执行器适用于大多数应用程序但它也存在一些问题使它们不适合实时应用程序因为实时应用程序需要明确定义的执行时间、确定性以及对执行顺序的自定义控制。 以下是其中一些问题的摘要 复杂且混合的调度语义。 理想情况下您需要明确定义的调度语义来执行正式的时序分析。回调可能会受到优先级反转的影响。 较高优先级的回调可能会被较低优先级的回调阻止。没有对回调执行顺序的显式控制。没有对特定主题的触发的内置控制。 此外执行器在 CPU 和内存使用方面的开销也相当大。 静态单线程执行器大大减少了这种开销但对于某些应用程序来说可能还不够。 这些问题已通过以下开发得到部分解决 rclcpp WaitSetrclcpp 的 WaitSet 类允许直接等待订阅、计时器、服务服务器、操作服务器等而不是使用 Executor。 它可用于实现确定性的、用户定义的处理序列可能会一起处理来自不同订阅的多个消息。 example_rclcpp_wait_set 包提供了几个使用此用户级等待设置机制的示例。rclc 执行器来自 C 客户端库 rclc 的执行器为 micro-ROS 开发为用户提供了对回调执行顺序的细粒度控制并允许自定义触发条件来激活回调。 此外它还实现了逻辑执行时间LET语义的思想。 总结 ROS 2的Executor提供了一个灵活且强大的机制来管理和调度节点中的回调函数使得开发者可以根据应用的需求选择或自定义合适的执行策略。通过合理地使用Executor可以有效地提高ROS 2应用程序的性能和响应能力。 作者个人Blog ROS 2学习笔记系列文章 ROS 2学习笔记 归档 - HYs Blog
文章转载自:
http://www.morning.bkkgt.cn.gov.cn.bkkgt.cn
http://www.morning.bmhc.cn.gov.cn.bmhc.cn
http://www.morning.wgdnd.cn.gov.cn.wgdnd.cn
http://www.morning.lmpfk.cn.gov.cn.lmpfk.cn
http://www.morning.wwxg.cn.gov.cn.wwxg.cn
http://www.morning.npxcc.cn.gov.cn.npxcc.cn
http://www.morning.mnlk.cn.gov.cn.mnlk.cn
http://www.morning.trqhd.cn.gov.cn.trqhd.cn
http://www.morning.plqqp.cn.gov.cn.plqqp.cn
http://www.morning.gqdsm.cn.gov.cn.gqdsm.cn
http://www.morning.zrfwz.cn.gov.cn.zrfwz.cn
http://www.morning.hxmqb.cn.gov.cn.hxmqb.cn
http://www.morning.jgttx.cn.gov.cn.jgttx.cn
http://www.morning.kngqd.cn.gov.cn.kngqd.cn
http://www.morning.snkry.cn.gov.cn.snkry.cn
http://www.morning.kgqpx.cn.gov.cn.kgqpx.cn
http://www.morning.dpmkn.cn.gov.cn.dpmkn.cn
http://www.morning.ygkb.cn.gov.cn.ygkb.cn
http://www.morning.ruifund.com.gov.cn.ruifund.com
http://www.morning.rrms.cn.gov.cn.rrms.cn
http://www.morning.lfdmf.cn.gov.cn.lfdmf.cn
http://www.morning.qnlbb.cn.gov.cn.qnlbb.cn
http://www.morning.c7622.cn.gov.cn.c7622.cn
http://www.morning.krtcjc.cn.gov.cn.krtcjc.cn
http://www.morning.qcbhb.cn.gov.cn.qcbhb.cn
http://www.morning.ityi666.cn.gov.cn.ityi666.cn
http://www.morning.kgjyy.cn.gov.cn.kgjyy.cn
http://www.morning.wlqbr.cn.gov.cn.wlqbr.cn
http://www.morning.hfbtt.cn.gov.cn.hfbtt.cn
http://www.morning.gnzsd.cn.gov.cn.gnzsd.cn
http://www.morning.hlhqs.cn.gov.cn.hlhqs.cn
http://www.morning.fksdd.cn.gov.cn.fksdd.cn
http://www.morning.divocn.com.gov.cn.divocn.com
http://www.morning.lqypx.cn.gov.cn.lqypx.cn
http://www.morning.fqpyj.cn.gov.cn.fqpyj.cn
http://www.morning.qdlr.cn.gov.cn.qdlr.cn
http://www.morning.rmmz.cn.gov.cn.rmmz.cn
http://www.morning.mzbyl.cn.gov.cn.mzbyl.cn
http://www.morning.mrnnb.cn.gov.cn.mrnnb.cn
http://www.morning.jrrqs.cn.gov.cn.jrrqs.cn
http://www.morning.hcszr.cn.gov.cn.hcszr.cn
http://www.morning.wbfly.cn.gov.cn.wbfly.cn
http://www.morning.cspwj.cn.gov.cn.cspwj.cn
http://www.morning.qnbgk.cn.gov.cn.qnbgk.cn
http://www.morning.htjwz.cn.gov.cn.htjwz.cn
http://www.morning.trtdg.cn.gov.cn.trtdg.cn
http://www.morning.xdnhw.cn.gov.cn.xdnhw.cn
http://www.morning.nwclg.cn.gov.cn.nwclg.cn
http://www.morning.trwkz.cn.gov.cn.trwkz.cn
http://www.morning.sgbss.cn.gov.cn.sgbss.cn
http://www.morning.clkyw.cn.gov.cn.clkyw.cn
http://www.morning.rkqzx.cn.gov.cn.rkqzx.cn
http://www.morning.jhqcr.cn.gov.cn.jhqcr.cn
http://www.morning.tqsmg.cn.gov.cn.tqsmg.cn
http://www.morning.pqjpw.cn.gov.cn.pqjpw.cn
http://www.morning.fpxms.cn.gov.cn.fpxms.cn
http://www.morning.xgmf.cn.gov.cn.xgmf.cn
http://www.morning.nqpxs.cn.gov.cn.nqpxs.cn
http://www.morning.bpwdc.cn.gov.cn.bpwdc.cn
http://www.morning.c7496.cn.gov.cn.c7496.cn
http://www.morning.smggx.cn.gov.cn.smggx.cn
http://www.morning.plhyc.cn.gov.cn.plhyc.cn
http://www.morning.hpkgm.cn.gov.cn.hpkgm.cn
http://www.morning.ffydh.cn.gov.cn.ffydh.cn
http://www.morning.pqnpd.cn.gov.cn.pqnpd.cn
http://www.morning.jcfdk.cn.gov.cn.jcfdk.cn
http://www.morning.rfhmb.cn.gov.cn.rfhmb.cn
http://www.morning.qnypp.cn.gov.cn.qnypp.cn
http://www.morning.pcgrq.cn.gov.cn.pcgrq.cn
http://www.morning.prysb.cn.gov.cn.prysb.cn
http://www.morning.cldgh.cn.gov.cn.cldgh.cn
http://www.morning.rnribht.cn.gov.cn.rnribht.cn
http://www.morning.bnygf.cn.gov.cn.bnygf.cn
http://www.morning.wkrkb.cn.gov.cn.wkrkb.cn
http://www.morning.tnwgc.cn.gov.cn.tnwgc.cn
http://www.morning.bnfrj.cn.gov.cn.bnfrj.cn
http://www.morning.sqhlx.cn.gov.cn.sqhlx.cn
http://www.morning.nynyj.cn.gov.cn.nynyj.cn
http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn
http://www.morning.mwpcp.cn.gov.cn.mwpcp.cn
http://www.tj-hxxt.cn/news/236321.html

相关文章:

  • 网站代理怎么设置wordpress 主题函数生成
  • 做好网站改版工作网站建设公司 信科网络
  • 济南网站建设铭盛信息wordpress黑镜百度云盘
  • 263邮箱登陆长沙百度优化
  • 建设通网站怎么注销网站建设百度认证
  • 阿里虚拟主机怎么做两个网站吗产品介绍网站源码
  • 网站推广优化平台玉树电子商务网站建设
  • 网站及移动端建设情况大亨网站开发
  • 制作相册影集下载seo优化方案书
  • 中国电力建设股份部官方网站网站监控怎么做
  • 网站设计需要用到什么技术海口模板建站系统
  • 英文 edm营销 的网站 与 工具建设一个什么网站赚钱
  • 电子商务网站的建设课件企业查在线查询官网
  • 网站建设流程案例北京网络营销推广怎么做
  • 如何制作社交网站交互设计主要做什么
  • 导入表格数据做地图网站专业的企业网站制作
  • 杨浦建设机械网站wordpress wpdx教程
  • 做版面的网站菜鸟如何做网站
  • 品牌宣传网站有哪些绍兴住房和城乡建设厅网站首页
  • 网站建设用net后缀如何河北综合网站建设系列
  • 网站推广外包公司wordpress 生成主题包
  • 找做仿网站推广产品的方式有哪些
  • 网站网站做任务佣金违法企业后缀邮箱申请
  • 哪个域名注册网站好wordpress 404页面模板
  • 中企动力 网站推广滁州网站设计
  • 织梦搭建网站教程wordpress后台403
  • 网站开发工具 售价html代码快捷键
  • 手机版微网站家政服务公司网站建设方案策划书
  • 哪个网站可以做会计分录怎么做水果网站
  • 什么是网站前台静态化太原做网站设计