了解ROS Nodes(节点/结点)

news2024/9/21 1:13:45

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.coloradmin.cn/o/2072313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLM 直接偏好优化(DPO)的一些研究

今天我们来聊聊大型语言模型(LLMs)吧。要让这些聪明的家伙和咱们人类的价值观还有喜好对上号,这事儿可不简单。以前咱们用的方法,比如基于人类反馈的强化学习(RLHF),虽然管用,但是它…

3.2-CoroutineScope/CoroutineContext:GlobalScope

文章目录 GlobalScope 是一个特殊的 CoroutineScope,它是一个单例的 CoroutineScope,我们可以直接用它启动协程: GlobalScope.launch {}我们在 IDE 用 GlobalScope 时会有一条黄线,提示的是要小心使用它因为容易用错、容易写出问…

标配M4芯片!苹果三款Mac新品蓄势待发

Mark Gurman透露, 苹果正在测试M4系列Mac新品,包含MacBook Pro、Mac mini和iMac,这些设备会在今年10月同台亮相。 根据曝光的开发者日志,上述Mac设备新品测试了两种M4芯片,一种是10核CPU10核GPU,一种是8核C…

无人机PX4飞控 | 电源系统详解与相关代码

无人机需要一个稳压电源用于飞控供电,同时用于电机、舵机、外围设备等的供电。 供电系统一般是一块电池或多块电池 电源模块通常用于“分离”飞行控制器的稳压电源,也用于测量电池电压和PX4学习笔记飞行器消耗的总电流。 PX4可以使用这些信息来推断剩余的…

Steam昨夜故障原因公布:遭DDoS攻击 与《黑神话》在线人数无关

24日晚,Steam平台突然崩溃,国内国外玩家纷纷反馈无法登录,相关话题迅速登上热搜。不少玩家猜测Steam崩溃是因为《黑神话:悟空》在线人数过多导致。 不过,根据完美世界竞技平台发布的公告,此次Steam崩溃是由…

新书推荐:《分布式商业生态战略:数字商业新逻辑与企业数字化转型新策略》

近两年,商业经济环境的不确定性越来越明显,市场经济受到疫情、技术、政策等多方因素影响越来越难以预测,黑天鹅事件时有发生。在国内外经济方面,国际的地缘政治对商业经济产生着重大的影响,例如供应链中断,…

Python画笔案例-010 绘制台阶图

1、绘制台阶图 通过 python 的turtle 库绘制一个台阶图的图案,如下图: 2、实现代码 引入新的命令:turtle.ycor(),获取当前海龟的y 坐标值,turtle.xcor()是获取海龟的 x 坐标值; turtle.setx(x) &#xff0…

NC 最长上升子序列(三)

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定数组 arr…

C++ STL 容器

引言--多看案例 STL概念 STL(Standard Template Library, 标准模板库 ), 是惠普实验室开发的一系列软件的统 称。 STL 6 大组件 容器 : 作用 : 容纳存储数据 分类 : 序列式容器: 强调值的排序,每个元素均有固定的位置, 除非用删除或插…

深度学习与神经网络戴做讲解

深度学习指导,计算机视觉指导。检测,分割,视频处理,估计,人脸,目标跟踪,图像&视频检索/视频理解,医学影像,GAN/生成式/对抗式,图像生成/图像合成&#xf…

C++ 设计模式——迭代器模式

迭代器模式 C 设计模式——迭代器模式1. 主要组成成分2. 迭代器模式范例2.1 抽象迭代器2.2 抽象容器2.3 具体的迭代器2.4 具体的容器2.5 主函数示例 3. 迭代器 UML 图3.1 迭代器 UML 图解析 4. 迭代器模式的优点5. 迭代器模式的缺点6. 迭代器模式的适用场景7. 现代C中的迭代器总…

【kubernetes】相关pod的创建和命令

【书写方法】: 管理使用k8s集群时,创建资源的Yaml文件非常重要,如何快速手写呢? 根据命令提示书写: kubectl explain [资源名称]例如打算写pod资源文件时,可查看如下: # 查看pod下所有字段 …

20. elasticsearch进阶_数据可视化与日志管理

20. 数据可视化 本章概述一. `elasticsearch`实现数据统计1.1 创建用户信息索引1.1.1 控制台创建`aggs_user`索引1.1.2 `aggs_user`索引结构初始化1.1.3 `aggs_user`索引的`EO`对象1.1.4 用户类型枚举1.1.5 数据初始化1.2 内置统计聚合1.2.1 `terms`与`date_histogram``terms``…

RocketMQ指南(二)高级篇

高级篇 1. 高级功能 1.1 消息存储 分布式队列因为有高可靠性的要求,所以数据要进行持久化存储。 消息生成者发送消息MQ收到消息,将消息进行持久化,在存储中新增一条记录返回ACK给生产者MQ push 消息给对应的消费者,然后等待消…

一文学会Shell中case语句和函数

大家好呀!今天简单聊一聊Shell中的case语句与函数。在多选择情况下使用case语句将非常方便,同时,函数的学习和使用对于学好一门编程语言也是非常重要的。 一、case语句 case语句为多选择语句。可以用case语句匹配一个值与一个模式&#xff0c…

g++,gcc

由一个错误引发对这个问题的关注 上面我对于cpp文件利用gcc进行编译时产生的错误,起初我以为时三方库安装版本问题,反复卸载重装,发现仍然没有解决。然后我把目光聚焦到gcc编译这,发现把gcc改成g,编译就通过了。 g和 …

回归分析系列14.2— 正则化回归

16 正则化回归 16.1 简介 正则化回归是一种在回归模型中引入约束的技术,目的是防止模型过拟合并提高其泛化能力。最常见的正则化方法有岭回归(L2正则化)和套索回归(L1正则化)。这些方法通过添加惩罚项来限制模型参数的大小,从而降低模型的复杂度。 16.2 岭回归(L2正则…

OpenStack命令行发放云主机

source keystonerc_admin 查看环境变量 创建租户(项目) openstack project create hds 创建用户 openstack user create hds --password 1 --project hds 追加角色 openstack role add_member --user hds --project hds 创建规格 openstack flavor cr…

警惕.mkp勒索病毒:如何有效预防.mkp勒索病毒攻击

导言: 在数字化时代,网络安全问题日益严峻,勒索病毒作为一种极具破坏性的恶意病毒,严重威胁着个人用户和企业机构的数据安全。其中,.mkp勒索病毒以其强大的加密能力和广泛的传播方式,成为近期备受关注的网…

Linux 命令重定向介绍

今天给伙伴们分享一下Linux 命令重定向,希望看了有所收获。 我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步&…