了解ROS Nodes(节点/结点)

embedded/2024/11/15 0:42:58/

1.相关概念

Nodes:A node is an executable that uses ROS to communicate with other nodes.
Messages: ROS data type used when subscribing or publishing to a topic.
Topics: Nodes canpublishmessagesto a topic as well assubscribetoa topic to receive messages.
Master: Name service for ROS (i.e. helps nodes find each other)
rosout: ROS equivalent of stdout/stderr
roscore: Master + rosout + parameter server

2.Nodes

    A node really isn't much more than an executable file within a ROS package. ROS nodes use a ROS client library to communicate with other nodes. Nodes can publish or subscribe to a Topic. Nodes can also provide or use a Service.

3.客户端库

   根据编程语言不同有:

    rospy = python client library
    roscpp = c++ client library

4.roscore

    当运行ROS时第一件事就是运行roscore命令。

5.使用rosnode

    由于执行了roscore命令后Terminal界面就被占用了,此时需要再打开一个新Terminal再进行如下操作才能有相应结果(即操作依赖于roscore的运行):

    rosnode list

    此时会看到:

    /rosout

    当前只有rosout这个node在运行,运行roscore就一直存在,用于调试或打印输出信息。

    rosnode info /rosout

    该命令可以看到rosout这个node的更多信息。

6.使用rosrun

    运行ROS自带的turtle例子:

    rosrun turtlesim turtlesim_node

    其中,turtlesim是包名,turtlesim_node是节点名。

    命令运行后有如下输出:

    [ INFO] [1495245056.523181709]: Startingturtlesim with node name /turtlesim
    [ INFO] [1495245056.543466285]: Spawningturtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

    对应的运行界面如下:

turtle

    此时执行rosnode list命令,会有如下输出:

    /rosout
    /turtlesim

    多了一个turtlesim结点,对于结点名,我们也可以指定,如下命令:

    rosrun turtlesim turtlesim_node __name:=slam_turtle

    即在使用rosrun时通过__name参数来设定,执行该命令后再执行rosnode

list,会有如下返回值:

    /rosout
    /slam_turtle

    接下来使用rosnode ping slam_turtle命令可以测试该结点的运行状况,命令执行返回值:

    rosnode: node is [/slam_turtle]
    pinging /slam_turtle with a timeout of 3.0s
    xmlrpc reply from http://slam:46576/    time=3.997087ms
    xmlrpc reply from http://slam:46576/    time=1.501083ms
    xmlrpc reply from http://slam:46576/    time=1.564980ms
    xmlrpc reply from http://slam:46576/    time=1.533031ms
    xmlrpc reply from http://slam:46576/    time=1.444101ms
    ^Cping average: 2.008057ms

7.回顾

roscore = ros+core : master (provides name service for ROS) + rosout (stdout/stderr) +parameter server
rosnode = ros+node : ROS tool toget information about a node.
rosrun = ros+run : runs a node from a given package.

参考网址:ROS/Tutorials/UnderstandingNodes - ROS Wiki


http://www.ppmy.cn/embedded/102036.html

相关文章

浏览器中使用AI模型 实现绘制人体骨架

浏览器中实现绘制人体骨架 最近在为后续项目做技术预研遇到了一个问题,需要再视频上绘制人体骨架,并在相应的关节点上显示相关数据。 开始方案是python通过模型识别人体关键点位置并将位置推送到mqtt服务上并将视频在推送到视频服务器上,然后…

小琳 AI 课堂:机器学习

嘿,朋友们!欢迎来到小琳 AI 课堂😜 💥机器学习:如同让计算机拥有超能力的神奇魔法💥 😎机器学习,这门超酷的多领域交叉学科🎯,居然融合了概率论、统计学、逼近…

Kafka入门:从零开始了解分布式流处理平台

什么是Kafka Apache Kafka是由LinkedIn公司开发,后来由Apache软件基金会维护的一个分布式、分区、多副本的基于ZooKeeper协调的分布式消息系统。Kafka不仅是一个消息队列,还是一个强大的流处理平台,它能够实时地处理大量数据,满足…

Python数据可视化库之bqplot使用详解

概要 在数据科学和机器学习领域,数据可视化是理解和分析数据的重要工具。bqplot 是一个基于 Jupyter Notebook 的 Python 可视化库,专注于交互式数据可视化。它结合了 D3.js 的强大功能和 Python 的易用性,使用户能够在 Jupyter 环境中创建丰富的交互式图表。bqplot 的设计…

Linux 非root用户部署elasticsearch 7.17.23和ik分词器

文章目录 下载安装包环境安装JDK(三台)注解 安装supervisor(三台)注解 环境初始化(三台)注解 部署 Elasticsearch(三台)解压配置 elasticsearch.yml192.168.0.1192.168.10.2192.168.…

RuoYi前后端分离如何使用详细描述

RuoYi(若依)作为一款基于SpringBoot、Vue等技术的前后端分离框架,广泛应 用于后台管理系统的快速开发。一、环境准备 在开始使用RuoYi前后端分离项目之前,需要准备好以下环境和工具: 开发环境:推荐使用ID…

为什么你的RAG不起作用?如何解决语义失调

无数企业正在尝试使用检索增强生成 (RAG),但他们普遍感到失望,因为他们很难让这些系统达到生产质量。他们的 RAG 不仅效果不佳,而且他们不知道为什么以及下一步该怎么做。 在过去的几个月里,我与数十个 AI 团队和专家进行了交谈。…

代码随想录 -- 哈希表 -- 赎金信

383. 赎金信 - 力扣(LeetCode) 思路: 定义一个字典存放 magazine 中的字母(key)和字母出现的次数(value)。遍历 ransomNote,如果 ransomNote 中的字母没在字典中出现,返…