自2015年底首次踏入ROS(Robot Operating System)的世界以来,我在机器人领域的旅程已近九年。这段历程始于团队几位志同道合的小伙伴在业余时间的自发学习,逐渐演变成成立了一个致力于英特尔硬件平台与ROS框架集成优化的专业团队,最终发展到为商业客户提供基于ROS和英特尔平台的产品设计支持。这一路走来,经历了无数的挑战与成长。为了纪念这一段充满成长与探索的旅程,我计划整理一下积累的知识与经验为一系列的学习性文章,与同样醉心于ROS世界的朋友们分享,希望我们能够一同学习,共同进步。在这份知识的传递与…

2024年2月25日 0条评论 356点热度 0人点赞 阅读全文

在ROS中,计算图(ROS Computation Graph)是一个核心概念,它描述了ROS节点之间的数据流动和通信方式。它不仅仅是一个通信网络,它也反映了ROS设计哲学的核心——灵活性、模块化和可重用性。通过细致探讨计算图的高级特性和实际应用,我们可以更全面地理解其在机器人软件开发中的重要性。 ROS计算图简介 ROS计算图是ROS架构中的一个关键组成部分,它是由多个处理单元(节点)以及这些单元之间的通信链接(主题、服务和动作)构成的网络。每个节点代表ROS中运行的一个进程,负责处理数据并完成特定的任务,如感知…

2024年2月26日 0条评论 720点热度 1人点赞 阅读全文

ROS 2节点简介 节点是执行计算的进程。节点组合在一起形成一个图(graph),并使用主题(topic)、服务(service)和参数服务器(paramter server)相互通信。这些节点旨在以细粒度的规模运行;机器人控制系统通常包含许多节点。例如,一个节点控制激光测距仪,一个节点控制机器人的轮式电机,一个节点执行定位,一个节点执行路径规划,一个节点提供系统的图形视图,等等。 ROS 中节点的使用为整个系统带来了多种好处。由于崩溃被隔离到各个节点,因此具有额外的容错能力。与单片系统相比,代码复杂性降低了。实现…

2024年2月26日 0条评论 989点热度 1人点赞 阅读全文

在ROS(Robot Operating System)中,主题(Topics)是实现节点之间通信的主要机制之一。节点(Node)可以发布(publish)消息到话题,或者订阅(subscribe)话题以接收消息。这种基于发布/订阅的通信模型允许节点之间的松耦合交互,是ROS架构的核心特性之一。本文将详细介绍ROS2中的主题,并与ROS1中的主题进行比较。 ROS2 Topic简介 在ROS2中,Topic的工作原理基本保持不变,仍然是基于发布/订阅模式,但实现方式与ROS1有所不同,主要得益于ROS2底层使用的D…

2024年2月28日 0条评论 931点热度 0人点赞 阅读全文

ROS 2消息简介 ROS程序使用三种不同的接口来进行沟通:消息(message),服务(service)和动作(action)。ROS 2使用一种简化的描述语言:IDL(interface definition language)来描述这届接口。这种描述使得ROS工具自动生成不同编程语言的接口类型源代码变得更加简单。 这三种接口类型简介如下。本文主要介绍有关消息的接口。 消息描述规范 消息在ROS软件包的msg/目录下的.msg文件里定义。.msg文件包含两部分内容:fields和constants。 Field…

2024年3月2日 0条评论 889点热度 0人点赞 阅读全文

在ROS 2中,Executor是一个核心概念,负责管理节点(Node)中的回调函数,如订阅消息的回调、服务请求的回调、定时器回调等。Executor决定了何时以及如何执行这些回调,从而在ROS 2系统中实现异步编程。 ROS 2 Executor的工作原理 在ROS 2中,节点是构成系统的基本单元,每个节点可以发布和订阅主题(Topic),提供和使用服务(Service),以及使用定时器(Timer)。Executor是控制节点中回调函数执行的机制。当消息到达或服务请求发生时,这些回调函数需要被调用。Execut…

2024年3月4日 0条评论 785点热度 0人点赞 阅读全文

服务(Service)是 ROS 2 计算图中节点通信的另一种方法。 服务基于调用和响应模型,而不是主题的发布者-订阅者模型。 虽然主题允许节点订阅数据流并获取持续更新,但服务仅在客户端专门调用时才提供数据。 ROS 2服务的基本概念 ROS 2服务定义了一种一对一的通信模式。在这种模式下,一个节点可以作为服务服务器(Service Server),另一个节点可以作为服务客户端(Service Client)。服务客户端向服务服务器发起请求,并同步等待服务器的响应。 服务通信基于预先定义的服务类型进行,服务类型定义…

2024年3月4日 0条评论 735点热度 0人点赞 阅读全文

ROS 2 Actions是ROS 2中的一个重要概念,它提供了一种用于执行长时间运行的任务或目标的机制。Actions相当于一种高级的服务,允许节点向其他节点发送一个目标,然后接收有关该目标执行状态的反馈,并最终接收执行结果。在本文中,我们将详细介绍ROS 2 Actions的概念、结构和使用方法。 Action 概述 ROS 2 Actions是ROS 2中用于实现异步、长时间运行任务的机制。相比于ROS 1中的服务(Services)和话题(Topics),Actions更适合处理需要长时间运行、具有中间状态…

2024年3月4日 0条评论 799点热度 0人点赞 阅读全文

ROS 2中的参数(Parameters)是一种用于在ROS 2系统中配置节点行为的重要机制。参数提供了一种在节点之间共享配置信息的标准化方式,能够在运行时动态地修改节点的行为。在本文中,我们将详细介绍ROS 2参数的概念、结构和使用方法。 参数概述 ROS 2参数允许开发者在节点中定义和使用配置参数,这些参数可以在节点启动时加载,也可以在运行时动态地修改。参数可以用于调整节点的行为、配置算法参数、设置传感器参数等。通过参数,可以使节点更加灵活、可配置,并且能够在不重新编译代码的情况下进行调整。 参数结构 ROS …

2024年3月4日 0条评论 925点热度 0人点赞 阅读全文

节点组合(Node Composition)是ROS 2中一个重要且强大的特性,它允许开发者以更灵活和高效的方式来构建和管理机器人软件组件。尽管节点的独立性带来了许多优点,但在某些情况下,将多个节点运行在同一个进程中可能更为高效。这是因为跨进程通信比进程内通信要消耗更多的资源,特别是在消息传递频繁或对延迟要求较高的应用场景中。节点组合(也称为组合节点或节点静态组合)正是为了解决这一问题而引入的。 节点组合的概念 节点组合允许将多个节点加载到同一个进程中,每个节点仍然保持独立的逻辑和功能,但它们可以更高效地共享数据和…

2024年3月11日 0条评论 848点热度 0人点赞 阅读全文
12