ROS教程(五):理解 ROS节点

【ROS学习笔记】(一)常用命令的解释与举例 roscore是用来启动ros master,是运行ros系统前首先运行的命令;rosrun是用来运行某个功能包内的某个节点的指令,有两个参数,第一个参数是功能包名,第二个参数是节点名。 阅读详情

理解 ROS节点

Description:  本教程主要介绍 ROS 图(graph)概念 并讨论 roscore 、 rosnode 和  rosrun  命令行工具的使用。

Tutorial Level:  BEGINNER

Next Tutorial:   理解ROS话题

先决条件

在本教程中我们将使用到一个轻量级的模拟器,请使用以下命令来安装:

$ sudo apt-get install ros-<distro>-ros-tutorials

用你使用的ROS发行版本名称(例如electric、fuerte、groovy、hydro等)替换掉'<distro>'。

图概念概述

  • Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。

  • Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。

  • Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。

  • Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。

  • rosout: ROS中相当于stdout/stderr。

  • roscore: 主机+ rosout + 参数服务器 (参数服务器会在后面介绍)。

节点

一个节点其实只不过是ROS程序包中的一个可执行文件。ROS节点可以使用ROS客户库与其他节点

通信。节点可以发布或接收一个话题。节点也可以提供或使用某种服务。

客户端库

ROS客户端库允许使用不同编程语言编写的节点之间互相通信:

  • rospy = python 客户端库
  • roscpp = c++ 客户端库

roscore

roscore 是你在运行所有ROS程序前首先要运行的命令。

请运行:

$ roscore

然后你会看到类似下面的输出信息:

  • ... logging to ~/.ros/log/9cf88ce4-b14d-11df-8a75-00251148e8cf/roslaunch-
    
    machine_name-13039.log
    Checking log directory for disk usage. This may take awhile.
    Press Ctrl-C to interrupt
    Done checking log file disk usage. Usage is <1GB.
    
    started roslaunch server http://machine_name:33919/
    ros_comm version 1.4.7
    
    SUMMARY
    ========
    
    PARAMETERS
     * /rosversion
     * /rosdistro
    
    NODES
    
    auto-starting new master
    process[master]: started with pid [13054]
    ROS_MASTER_URI=http://machine_name:11311/
    
    setting /run_id to 9cf88ce4-b14d-11df-8a75-00251148e8cf
    process[rosout-1]: started with pid [13067]
    started core service [/rosout]

如果 roscore 运行后无法正常初始化,很有可能是存在网络配置问题。参见

网络设置——单机设置

如果 roscore 不能初始化并提示缺少权限,这可能是因为~/.ros文件夹

归属于root用户(只有root用户才能访问),修改该文件夹的用户归属关系:

$ sudo chown -R <your_username> ~/.ros

使用rosnode

打开一个新的终端, 可以使用 rosnode 像运行 roscore 一样看看在

运行什么...

注意: 当打开一个新的终端时,你的运行环境会复位,同时你的~/.bashrc

文件会复原。如果你在运行类似于rosnode的指令时出现一些问题,也许你需要添加

一些环境设置文件到你的~/.bashrc或者手动重新配置他们。

rosnode 显示当前运行的ROS节点信息。rosnode list 指令列出活跃的节点:

$ rosnode list
  • 你会看到:
  • /rosout

这表示当前只有一个节点在运行: rosout。因为这个节点用于收集和记录节点调

试输出信息,所以它总是在运行的。

rosnode info 命令返回的是关于一个特定节点的信息。

$ rosnode info /rosout

这给了我们更多的一些有关于rosout的信息, 例如,事实上由它发布

/rosout_agg.

  • ------------------------------------------------------------------------
    Node [/rosout]
    Publications:
     * /rosout_agg [rosgraph_msgs/Log]
    
    Subscriptions:
     * /rosout [unknown type]
    
    Services:
     * /rosout/set_logger_level
     * /rosout/get_loggers
    
    contacting node http://machine_name:54614/ ...
    Pid: 5092

现在,让我们看看更多的节点。为此,我们将使用rosrun 弹出另一个节点。

使用 rosrun

rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。

用法:

$ rosrun [package_name] [node_name]

现在我们可以运行turtlesim包中的 turtlesim_node。

然后, 在一个 新的终端:

$ rosrun turtlesim turtlesim_node

你会看到 turtlesim 窗口:

  • turtlesim.png

注意: 这里的 turtle 可能和你的 turtlesim 窗口不同。别担心,这里有

许多版本的turtle ,而你的是一个惊喜!

在一个 新的终端:

$ rosnode list

你会看见类似于:

  • /rosout
    /turtlesim

ROS的一个强大特性就是你可以通过命令行重新配置名称。

关闭 turtlesim 窗口停止运行节点 (或者回到rosrun turtlesim终端并使用`ctrl

-C`)。现在让我们重新运行它,但是这一次使用Remapping Argument改变节点名称:

$ rosrun turtlesim turtlesim_node __name:=my_turtle

现在,我们退回使用 rosnode list:

$ rosnode list
  • 你会看见类似于:
  • /rosout
    /my_turtle

注意: 如果你仍看到 /turtlesim在列表中,这可能意味着你在终端中使用ctrl-C停

止节点而不是关闭窗口,或者你没有$ROS_HOSTNAME环境变量,这在

Network Setup - Single Machine Configuration中有定义。你可以尝试清除rosnode

列表,通过: $ rosnode cleanup

我们可以看到新的/my_turtle 节点。使用另外一个 rosnode 指令, ping, 来

测试:

$ rosnode ping my_turtle
  • rosnode: node is [/my_turtle]
    pinging /my_turtle with a timeout of 3.0s
    xmlrpc reply from http://aqy:42235/     time=1.152992ms
    xmlrpc reply from http://aqy:42235/     time=1.120090ms
    xmlrpc reply from http://aqy:42235/     time=1.700878ms
    xmlrpc reply from http://aqy:42235/     time=1.127958ms

回顾

本节所涉及的内容:

  • roscore = ros+core : master (provides name service for ROS) + rosout

(stdout/stderr) + parameter server (parameter server will be introduced

later)

  • rosnode = ros+node : ROS tool to get information about a node.
  • rosrun = ros+run : runs a node from a given package.

到这里,您已经了解了ROS节点是如何工作的,下一步,我们来了解一下

ROS话题。如果您想关闭

turtlesim_node,请按下“Ctrl-C”

ROS教程(三):创建程序包及节点(图文) 文章目录前言一、创建功能包二、创建节点三、修改CMakeList.txt四、配置package.xml文件五、编译并执行1.编译2.执行六、rostopic工具总结 前言 根据前篇教程已经创建好了工作空间,并已经成功生效了环境变量,接下来创建一个功能包 一、创建功能包 功能包的名字根据我们这个功能包的作用来命名。比如我现在的功能包是用来学习ROS的C++编程,那么我的功能包名称就叫做learning_cplus。 打开终端,输入下面指令。 cd catkin_ws/src catkin_create_ 阅读详情

相关推荐

ROS学习笔记五:理解ROS topics

ROS学习笔记五:理解ROS topics本节主要介绍ROS topics并且使用rostopic和rqt_plot命令行工具。例子展示roscore首先运行roscore系列服务,这是使用ROS所必需的基础roscoreturtlesim这里还要用到turtlesim例子,先运行其节点:rosrun turtlesim turtlesim_nodeturtle键盘遥控操作我们可以运行一个例程,然后

祝 枫 3万+

ros学习1

1.运行roscore roscore roscore含义:roscore是一个向节点提供连接信息,以便节点间可以互相传递信息的服务程序,每个节点都在启动时连接到roscore并注册该节点发布和订阅的信息,当一个新节点出现时,roscore向它提供与其他发布并订阅相同消息主题的节点建立点对点连接的必要信息,每一个ROS都需要一个roscore,没有roscore,节点之间无法互相找到。 2.打开...

BlessingXRY的博客 510

ROS总结——ROS节点

理解ROS节点本博客是对http://wiki.ros.org/上ROS教程的学习总结,欢迎大家交流学习。本节介绍 ROS 图(graph)概念并介绍如何使用roscore、rosnode和 rosrun 命令行工具。 1.图概念概述 Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。 Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。 T

YongqiangGao的专栏 5316

ROS入门_1.8 理解ROS节点

目录 先决条件图概念概述节点客户端库roscore使用rosnode使用 rosrun回顾 0. 先决条件 在本教程中我们将使用到一个轻量级的模拟器,请使用以下命令来安装: $ sudo apt-get install ros-indigo-ros-tutorials 1. 图概念概述 Nodes:节点,一个节点即为一个可执行文件,它可以

ShuaiWang优快云的博客 1076

ROS学习笔记四:理解ROS节点

ROS学习笔记四:理解ROS节点本节主要介绍ROS图形概念,讨论ROS命令行工具roscore、rosnode和rosrun。要求要求已经在Linux系统中安装一个学习用的ros软件包例子:sudo apt-get install ros-indigo-ros-tutorialsROS图形概念概述 nodes:一个节点可以通过ROS和其他节点进行通信; messages:当订阅或者发布一个topic

祝 枫 4144

ROS节点,消息,话题,服务的介绍

整理结合机器人操作系统(ros)浅析和网址http://wiki.ros.org/cnNODEnode几乎是无处不在,这个东西相当于可执行文件,目前我更愿意把它当做cpp文件,通过catkin_make之后生成可执行文件。Message不用说了,没有message就是哑巴了。还是这是血液吧,不然传递机制是无法建立起来的TOPIC就像是QQ群一样,当有人发了一条消息后,QQ群告诉任何一个加群的人,有没

Shirlim 1万+

捕获ctrl+c信号量

#include#includevoid ctrlhandler( int a ){ printf("you have press ctrl+c /n"); /* close 相关操作*/ getchar(); exit(0);}int main(){ signal(SIGINT,ctrlhandler); /*其他操作*/ getchar();

朝着未来勇敢前进 5556

【ROS2入门系列3】:理解ROS2的节点

Ros2的Node类同于Ros1,但学习Ros2要系统化;因此本文将特别展现两种版本的Node,及它们之间的些许不同。

gongdiwudu的专栏 8261

ubuntu ctrl+c 无法结束ros节点

问题描述: 在命令窗口中按下ctrl+c后 程序虽然停止运行,但不能退出到命令行状态,必须强制退出才可以。 添加了signal(SIGINT, MySigintHandler);但不能自动调用 解决办法: signal(SIGINT, MySigintHandler);添加的位置不正确。调整在程序中的位置如下所示:放到ros::Rate 和 ros::NodeHandle nh; 语句后面就可以...

ABC_ORANGE的博客 5688

测试dali协议的软件,DALI2.0和DALI1.0完美兼容同一个模块,测试每项可过协议

DALI2.0和DALI1.0完美兼容同一个模块,测试每项可过协议深圳聚积智能 夏先生 13246760327 QQ 349098308■IEC62386-102(V2.0)通过测试内容IEC62386-102/2.1/Test preambleIEC62386-102/3.1/Polarity testIEC62386-102/3.2/Maximum and minimum system v...

weixin_35343788的博客 1351

虚拟零售智能客服架构设计:如何用大模型实现多轮对话与精准推荐?

想象一下,当你在一个电商平台购物时,遇到了一个能像你的专属导购一样,不仅能听懂你模糊的需求(“我想买一件适合夏天去海边玩,又能兼顾日常通勤的裙子”),还能记得你之前提到的尺码偏好和预算,甚至在你犹豫时,主动推荐几款符合你风格且正好有促销活动的商品——这不再是科幻电影中的场景,而是基于大语言模型(LLM)技术的新一代虚拟零售智能客服能够提供的体验。这一层是我们架构设计的重点,会在后续章节详细展开。如基于CRF、RNN的模型,或基于规则的状态更新,通常需要大量标注的对话状态数据,且对新领域、新槽位的适应性差。

Java大师兄的博客 1589

ROS: 理解 ROS节点

理解 ROS节点先决条件图概念概述节点客户端库roscore使用rosnode使用rosrun小结参考文章 先决条件 老规矩, 在本教程中我们将使用到一个轻量级的模拟器,请使用以下命令来安装: sudo apt-get install ros-<distro>-ros-tutorials 图概念概述 Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。 Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。 Topics:话题,节

GungnirsPledge的博客 2819

【SWAT水文模型】SWAT-CUP参数率定与模型验证实战指南

本文提供了SWAT水文模型参数率定与模型验证的完整实战指南。详细介绍了如何使用SWAT-CUP工具,特别是SUFI-2算法,进行自动化参数校准,并阐述了模型验证的关键步骤以避免过度拟合。内容涵盖从工程搭建、核心参数选择、迭代优化到结果分析与常见问题排查的全流程,旨在帮助用户提升SWAT模型模拟的准确性与可靠性。

weixin_29072299的博客 499

ROS2教程(入门级):理解ROS 2的节点

目标: 学习ROS 2关于关于节点的功能,并且通过工具跟它交互。 知识讲解 ROS 2 图 (ROS 2 graph) 经过前面的几个博客,我们通过rqt这个图形界面工具,以及turtlesim大致的了解到ROS 2 的一下核心的概念。这个核心的概念组成了ROS 2 graph(图)。如果你还没有浏览过之前的博客,可以到我的ROS 2专栏中翻一下。 在接下来的几个教程,我们将会详细地学习到一系列关于ROS 2的核心概念。 ROS 图(graph)是一个能够同时地共同进行数据处理的ROS 2的组件。它包含了全

D109的博客 3552

企业级智能知识库问答AI助手(大模型+Python)

智能知识问答库AI助手

usa_washington的博客 1655

Fluent后台计算中Journal文件的自动化编写与优化实践

本文深入探讨了Fluent在Linux/Unix环境下进行后台计算时,Journal文件的自动化编写与优化实践。Journal文件作为Fluent后台计算的“灵魂”,是实现仿真流程自动化、保证计算可重复性与准确性的关键。文章从基础脚本骨架搭建、命令简写技巧,到进阶的参数化研究与批量计算实现,提供了详实的实战指南,帮助工程师大幅提升仿真效率。

postgres8guard的博客 757

【ROS2入门】理解 ROS 2 节点

介绍 ROS2 eloquent版本在EHub_tx1_tx2_E100载板,Jeston TX1 核心模块,JetPack_4.6.3刷机后, ubuntu18.04 环境下介绍和学习节点,这个主要概念。

cau_weiyuhu的博客 2323

微信小程序一键跳转公众号(使用 official-account 组件)

在当今移动互联网时代,用户体验已成为应用成功的关键因素之一。微信小程序作为一种便捷的应用形式,广泛应用于各个行业,为用户提供了丰富的服务和信息。然而,如何进一步提升用户体验,使其在小程序中能够更方便地获取相关信息,成为开发者需要关注的重要课题。实现一键跳转到公众号的功能,正是一个有效的解决方案。通过这一功能,用户可以轻松访问公众号,获取更多内容和服务,从而增强与品牌的互动和粘性。本文将详细介绍如何在微信小程序中实现这一功能,并提供相关的操作步骤和注意事项。

不迁怒,不贰过。小知识,大智慧。 3127

ROS节点中的CAN命令

前言:由于在使用TX2的过程中,需要使用CAN通讯的方式使我的机器人底盘与TX2进行命令收发,而我的其他传感器都建立在ROS框架下,为了以后能使数据交互我希望把底盘数据也放到我的ROS框架里面。 1.ros_canopen ros_canopen是ROS系统专门为在ROS框架内启动CAN节点所做的一个软件包,在ROS节点中使用CAN时,需要首先将CAN口挂载到ROS中,具体可以参考链接: http...

YiYeZhiNian的博客 8236

Windows10下安装VMware16虚拟机

由于本人系统为Windows 10 家庭中文版,无法安装Linux子系统WSL,虽然网上也有强制安装的方法,但为保险起见,还是把之前的VMware虚拟机重新进行安装,并浅浅记录一下安装过程。

沉香best的博客 864

4、LTE无人机认证:保障通信安全的新方案

本文针对LTE网络中无人机通信存在的安全风险,提出了一种基于可信第三方GCS的新型认证协议。该协议通过非对称加密和哈希函数保护IMSI等敏感信息,防止身份泄露、中间人攻击、拒绝服务攻击和位置追踪等威胁。利用Scyther工具对协议进行形式化分析,验证了其在机密性、一致性和活性等方面的安全属性,证明该方案能有效提升无人机在LTE网络中的通信安全性与隐私保护能力。

pink的博客 61

【ROS2】初级:CLI工具- 理解节点

目标:了解 ROS 2 中节点的功能以及与之交互的工具。教程级别:初学者时间:10 分钟目录背景1 ROS 2 图两个节点在 ROS 2先决条件任务1 ros2 运行2 ros2 节点列表3 ros2 节点信息摘要下一步相关内容背景1 ROS 2 图表在接下来的几个教程中,您将学习一系列构成所谓的“ROS(2)图”的核心 ROS 2 概念。ROS 图是一个 ROS 2 元素的...

cxyhjl的博客 1377

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

动手学ROS(1):创建ros节点

动手学ROS(1):创建ros节点 ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。 1 安装 ros 安装步骤请参考 安装教程 该页面是ROS Melodic版本。本系列教程提供的代码均为在Ubuntu18.04上实测通过。 2 创建ros node 2.1 创建catkin workspace: $ mkdir -p ~/catkin_ws/

sinat_26057343的博客 7453

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ROS教程5:理解ROS节点

文章目录先决条件:安装轻量级模拟器ros重要概念理解nodes客户端库roscorerosnoderosrun节点名称重新配置rosnode ping node_name测试连通性 先决条件:安装轻量级模拟器 使用以下命令安装: $ sudo apt-get install ros-kinetic-ros-tutorials 不明白为什么以前安装过了还要再安装一次。。。 ros重要概念理解 n...

吉大秦少游 559

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ROS2入门教程

https://www.ncnynl.com/archives/201801/2250.html ROS2入门教程-基本概念 介绍ROS2的基本概念 1. 基本概念: ROS是一个用于在不同进程间匿名的发布、订阅、传递信息的中间件。 ROS2系统的核心部分是ROS网络(ROS Graph)。 ROS网络是指在ROS系统中不同的节点间相互通信的连接关系。 ROS Graph这里翻译成了ROS网络,因为我觉得Graph更加抽象,而网络的概念更容易帮助理解其内涵。 2. ROS网络(ROS Graph)概念简介:

AbiUni(YY熊) 1万+

ROS5—理解ROS节点

这篇教程会介绍ROS图概念和并讨论roscore、rosnode和rosrun命令的使用。1.预备条件这里会使用轻量级的模拟器,先安装$ sudo apt-get install ros-<distro>-ros-tutorials 将替换成你的ROS版本名称。2.图概念的快速概览 节点(nodes):节点是一个利用ROS来与其他节点通信的可执行文件。 消息(messages):在顶阅或推送一个主题

InfinityForever的博客 2323
上一篇: ROS教程(四):编译ROS程序包
下一篇: ROS教程(六):理解ROS话题
沫尘雪痕
博客等级 码龄16年 166粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值