ROS 2节点-nodes-

教程演示环境为Windows+ROS2,过程和方法同样适合MacOS和Linux。

视频教程(Linux):https://www.bilibili.com/video/BV1qp4y1U7iq/

ros2的常用命令如下所示:

本节详细介绍节点node。

安装与环境配置参考链接:

1. 如何理解节点node:

ROS中的每个节点用于实现单个模块功能(例如,一个节点用于控制电机,一个节点用于控制激光测距仪等)。每个节点都可以通过主题topic,服务service,行动action或参数param向其他节点发送和接收数据。一个完整的机器人系统由许多协同工作的节点组成。在ROS 2中,单个可执行文件(C ++程序或Python程序等)可以包含一个或多个节点。

2. 节点node有哪些命令功能:

使用如下命令:

ros2 node -h

得到如下:

主要有:

  • info 输出节点信息
  • list 输出正在运行的节点列表

3. 运行节点并掌握

3.1 标准命令格式

命令ros2 run可以从功能包中启动一个可执行程序:

ros2 run <package_name> <executable_name>

以turtlesim为例,开启一个CMD,输入如下命令:

ros2 run turtlesim turtlesim_node

将会看到如下窗口:

这里,功能包名为turtlesim,可执行文件名为turtlesim_node。

3.2 命令工具

ros2 node list将显示所有正在运行的节点的名称。当要与节点进行交互时,或者当系统运行着许多节点并需要对其进行跟踪时,此功能特别有用。

当turtlesim仍在另一个终端中运行时,打开一个新终端,然后输入以下命令:

ros2 node list

终端会显示节点的名称:

再打开另一个新终端,并使用以下命令启动遥控Teleop节点:

ros2 run turtlesim turtle_teleop_key

此时,将再次搜索turtlesim软件包,这一次是启动名为turtle_teleop_key的可执行文件。

返回之前运行的终端,然后再次运行ros2 node list。现在,将看到两个活动节点的名称:

3.3 重命名

有时候,并不期望默认的命令,如何修改呢?

将默认节点属性(例如节点名称,主题名称,服务名称等)重新分配自定义值。

现在,让重新分配节点/turtlesim的名称。在新的终端中,运行以下命令:

ros2 run turtlesim turtlesim_node --ros-args --remap __node:=ros2_turtle

由于再次调用turtlesim,因此将打开另一个turtlesim窗口。但是,现在,如果返回运行的终端,然后再次运行list,将看到三个节点名称,如下:

3.4 节点信息

通过以下方式访问有关节点的更多信息:

ros2 node info <node_name>

要检查最新的节点ros2_turtle,请运行以下命令:

ros2 node info /ros2_turtle

返回与该节点交互的订阅者,发布者,服务和行动(ROS图连接)的列表。输出应如下所示:

现在,尝试在/teleop_turtle节点上运行相同的命令,并查看其连接与ros2_turtle的区别。

ros2 node info /teleop_turtle

4. 小结

节点是基本的ROS 2单元,在机器人系统中实现模块化的目标。

关键词:

  • turtlesim
  • node
  • teleop
  • list
  • info
  • --ros-args --remap __node:=ros2_turtle

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
如果您想在 Unity 中使用 ROS2,可以使用 ros2-for-unity 库。下面是一些步骤,帮助您开始使用 ros2-for-unity: 1. 安装 ROS2:请根据您的操作系统在 ROS2 官方网站上安装 ROS2。 2. 安装 Unity:请在 Unity 官方网站上下载并安装 Unity。 3. 安装 ros2-for-unity:请参考 ros2-for-unity 的安装指南。 4. 创建 ROS2 节点:请在 Unity 中创建一个新的 C# 脚本,并使用 ros2-for-unity 创建 ROS2 节点。您可以使用以下代码示例: ``` using UnityEngine; using System.Collections.Generic; using ROS2; public class MyNode : MonoBehaviour { Node node; Publisher<std_msgs.msg.String> publisher; void Start() { // Initialize ROS2 ROS2.Init(); // Create a ROS2 node node = ROS2.CreateNode("my_node"); // Create a ROS2 publisher publisher = node.CreatePublisher<std_msgs.msg.String>("my_topic"); } void Update() { // Publish a ROS2 message std_msgs.msg.String message = new std_msgs.msg.String(); message.data = "Hello, ROS2!"; publisher.Publish(message); } void OnDestroy() { // Shutdown ROS2 ROS2.Shutdown(); } } ``` 5. 运行 ROS2:在您的 ROS2 安装目录中打开新的终端,并运行以下命令: ``` $ ros2 run demo_nodes_cpp talker ``` 这将启动一个 ROS2 Talker 节点,它将发布一个字符串消息到 "my_topic" 话题中。 6. 运行 Unity:在 Unity 中打开您的项目,并运行您的场景。您应该能够在 Unity 控制台中看到 "Hello, ROS2!" 消息。 这只是一个简单的示例,您可以根据您的需求和项目来实现更复杂的功能。希望这能帮助您开始使用 ros2-for-unity。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrelay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值