ROS 学习笔记(6)- 理解 ROS nodes

本文详细介绍了ROS(Robot Operating System)的基本概念,包括nodes、messages、topics、master、rosout和roscore的作用,以及如何使用rosrun和rosnode进行node管理和通信。通过实例演示了如何启动节点、重命名节点以及使用工具查看运行状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:本文主要是结合 ROS 官网的相关内容以及自己的相应操作心得整理而成,记录在此处仅仅是为了自己查找方便!

ROS 官网相关参考内容网址:http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes

1. 前提

本文将使用轻量级模拟器,运行以下命令来安装它:

sudo apt-get install ros-melodic-ros-tutorials

2. 图形概念快速概览

Nodes:node 是使用 ROS 与其他 node 通信的可执行文件。

Messages:订阅或发布 topic 时使用的 ROS 数据类型。

Topics:node 可以向 topic 发布 message,也可以订阅 topic 以接收 messgae。

Master:ROS 的名称服务(即帮助 nodes 找到彼此)

rosout:ROS 等价于 stdout/stderr

roscore:Master+rosout+参数服务器(后面会介绍参数服务器)

3. nodes

node 实际上只不过是 ROS package 中的一个可执行文件。 ROS node 使用 ROS 客户端库与其他 node 通信。 node 可以向 topic 发布或订阅,也可以提供或使用服务。

4. 客户端库

ROS 客户端库允许使用不同编程语言编写的 node 进行通信:

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

5. roscore

roscore 是在使用 ROS 时应该做的第一件事。运行后会看到类似于下面这样的界面:

6. 使用 rosnode

打开一个新终端,使用 rosnode 来看看运行 roscore 做了什么……请记住,通过打开一个新选项卡或简单地将其最小化来保持前一个终端打开。

当打开一个新终端时,环境将被重置,并且 ~/.bashrc 文件是来源。 如果在运行 rosnode 等命令时遇到问题,那么可能需要将一些环境设置文件添加到 ~/.bashrc 或手动重新获取它们。

rosnode 显示有关当前正在运行的 ROS node 的信息。 rosnode list 命令列出这些活动的 node:

这表明只有一个 node 在运行:rosout。 它在收集和记录 node 的调试输出时始终运行。

rosnode info 命令返回有关特定 node 的信息。

7. rosrun

rosrun 允许使用 package 的名称直接运行 package 内的node(无需知道 package 的路径)。用法:

rosrun [package_name] [node_name]

现在开始运行 turtlesim package 中的 turtlesim_node,在一个新的终端中输入:

rosrun turtlesim turtlesim_node

你会看到海龟的界面(每个人的海龟界面可能会不一样,这是一个小惊喜哦~)

再打开一个新终端,输入:

rosnode list

你会看到:

ROS 的一项强大功能是可以从命令行重新分配名称。关闭海龟窗口以停止 node(或返回 rosrun turtlesim 终端并使用 Ctrl+C)。 然后重新运行这条命令,但这次使用重映射参数来更改 node 的名称:

rosrun turtlesim turtlesim_node __name:=my_turtle

此时如果再运行 rosnode list,会看到:

如果在列表中仍然可以看到 /turtlesim,可能是之前使用 Ctrl+C 停止了终端中的 node 而不是关闭窗口,或者没有按照 网络设置 - 单机配置 中的描述定义 $ROS_HOSTNAME 环境变量。 可以尝试使用以下命令清理 rosnode 列表: $ rosnode cleanup

我们看到了新的 node: /my_turtle。 现在使用另一个 rosnode 命令 ping 来测试它是否已启动:

rosnode ping my_turtle

8. 回顾

  • roscore = ros+core : master (为 ROS提供名称服务) + rosout (stdout/stderr) + parameter server (后面会介绍)
  • rosnode = ros+node : 用于获取节点信息的 ROS 工具
  • rosrun = ros+run : 从给定的 package 运行 node

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值