赞
踩
一个完整的机器人系统就是由多个节点组成的,每个节点各司其职,完成自己的工作。在ROS2中,每一个可执行程序(C++、Python)可以包含1个或者多个节点,这是与ROS1中不同的。 接下来还是在小海龟例程中继续熟悉下节点相关的命令。
ros2 run
相当于ROS1中的rosrun
,主要作用是运行某个功能包中的可执行程序,使用语法如下:
ros2 run <package_name> <executable_name>
比如小海龟仿真界面就是节点的执行程序,位于turtlesim
功能包中,启动它的命令是:
ros2 run turtlesim turtlesim_node
运行上述命令之后,小海龟就会出现在界面上了:
但是大家需要注意,这里的turtlesim
是功能包名字,而turtlesim_node
只是可执行文件的名字,并不是节点名,想要知道节点叫什么,我们需要运行如下命令。
ros2 node list
将显示所有正在运行的节点的名称,相当于ROS1中的rosnode list
。当您想要与一个节点交互,或者当您的系统运行许多节点并且需要跟踪它们时,这一点特别有用。 启动海龟仿真器之后,打开一个终端输入如下指令:
ros2 node list
终端将返回节点名称:
/turtlesim
重新打开一个终端,输入以下命令来启动键盘控制乌龟仿真器:
ros2 run turtlesim turtle_teleop_key
重新运行ros2 node list
之后,可以发现多了一个正在运行的节点:
/turtlesim
/teleop_turtle
ROS中的重映射机制可以帮助我们重定义节点的属性,比如节点名称、话题名称、服务名称等。比如我们想修改看到的节点名turtlesim
,那就可以这样:
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
既然你又在turtlesim上调用ros2 run
,另一个小海龟的仿真界面将打开。但是,现在如果您返回到运行ros2 node list
的终端,然后再次运行它,您将看到三个节点名称:
/my_turtle
/turtlesim
/teleop_turtle
在这里之所以没有冲突,是因为新启动的仿真节点叫做“my_turtle”,并不是默认的“turtlesim”。
现在已经知道了节点的名称,可以通过以下方式访问有关节点的更多信息:
ros2 node info <node_name>
要检查您的最新节点my_turtle
,请运行以下命令:
ros2 node info /my_turtle
可以看到节点的很多信息,包括订阅者、发布者、服务、动作等等。
/my_turtle
Subscribers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/turtle1/cmd_vel: geometry_msgs/msg/Twist
Publishers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/turtle1/color_sensor: turtlesim/msg/Color
/turtle1/pose: turtlesim/msg/Pose
Service Servers:
/clear: std_srvs/srv/Empty
/kill: turtlesim/srv/Kill
/my_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
/my_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/my_turtle/get_parameters: rcl_interfaces/srv/GetParameters
/my_turtle/list_parameters: rcl_interfaces/srv/ListParameters
/my_turtle/set_parameters: rcl_interfaces/srv/SetParameters
/my_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
/reset: std_srvs/srv/Empty
/spawn: turtlesim/srv/Spawn
/turtle1/set_pen: turtlesim/srv/SetPen
/turtle1/teleport_absolute: turtlesim/srv/TeleportAbsolute
/turtle1/teleport_relative: turtlesim/srv/TeleportRelative
Service Clients:
Action Servers:
/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
Action Clients:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。