ROS2学习——(ROS2节点node)

节点(node)在ROS2中是发布和接收消息的主体,每个节点都是负责一个单一的模块用途,(如一个节点用于控制车轮电机,一个节点用于控制激光测距仪),每个节点都可以通过主题(topic)、服务(service)、动作(action)、或参数(parameter)向其他节点发送和接受数据。节点、主题、服务、动作和参数的关系见图:

一个完整的机器人系统由许多协同工作的节点(node)组成,在ROS2中,单个可执行文件(C++程序、Python程序等)可以包含一个或多个节点,如turtlesim包含节点:

(1)ros2 run():

ros2 run命令从包中启动一个可执行文件,命令格式是:

ros2 run

例如启动小海龟的命令是:

ros2 run turtlesim turtlesim_node

其中turtlesim是包的名字,turtlesim_node是可执行文件的名字,此时可以通过ros2 node list 查看节点列表/turtlesim

通过命令:ros2 run turtlesim turtle_teleop_key启动小海龟控制器,再次通过ros2 node list查看节点列表:/teleop_turtle和/turtlesim

(2)remap(重新映射)

给默认节点属性(节点名词、主题名称、服务名称等)重新分配给自定义值。

运行代码:ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle

可以看到重新打开了一个海龟窗口,运行 ros2 node list可以看到现在节点列表有三个值,分别为:/teleop_turtle,/turtlesim,/my_turtle

(3)ros2 node info (节点信息)

上一步知道节点名字,可以通过代码获取更多节点信息:ros2 node info ,如:

ros2 node info /my_turtle

可以看到节点/my_turtle的信息列表,包括节点的subscribers,publishers,services,actions,输出信息如下:ROS2学习——(ROS2节点node)_第1张图片

总结:节点是ROS2的基础元素, 在机器人系统中服务于单一的模块化的目的。通过运行可执行文件(executable):turtlesim_node和turtle_teleop_key从包创建节点。

ros2节点名列表获取:ros2 node list

ros2节点信息获取:ros2 node info (eg.ros2 node info my_turtle)

你可能感兴趣的:(ROS2学习,学习)