为什么控制台中的节点名称与 .launch 文件中的名称不同?
Why the node's name in the console is different that the one in .launch file?
我正在使用 bebop_driver 包和 运行 安装 bebop_driver_node .
bebop_node.launch文件是这样的:
<?xml version="1.0"?>
<launch>
<arg name="namespace" default="bebop" />
<arg name="ip" default="10.202.0.1" />
<arg name="drone_type" default="bebop2" /> <!-- available drone types: bebop1, bebop2 -->
<arg name="config_file" default="$(find bebop_driver)/config/defaults.yaml" />
<arg name="camera_info_url" default="package://bebop_driver/data/$(arg drone_type)_camera_calib.yaml" />
<group ns="$(arg namespace)">
<node pkg="bebop_driver" name="bebop_driver" type="bebop_driver_node" output="screen">
<param name="camera_info_url" value="$(arg camera_info_url)" />
<param name="bebop_ip" value="$(arg ip)" />
<rosparam command="load" file="$(arg config_file)" />
</node>
<include file="$(find bebop_description)/launch/description.launch" />
</group>
</launch>
但是当我 运行 rosnode list
我收到:
/bebop/bebop_driver
由于我正在尝试使用 rospy.init_node('node_name')
这是一个问题,因为我无法键入命名空间。
节点的名称空间和名称在启动文件中定义。您可以在 thr ROS wiki: roslaunch/XML.
找到文档
命名空间:
由于您使用的是组,节点将被放置在它的命名空间中,由 ns 属性定义:
<group ns="$(arg namespace)">
在您的例子中,命名空间由参数 namespace
定义,默认情况下为 bebop:
<arg name="namespace" default="bebop" />
请注意,多个和嵌套的组也可以创建命名空间。
节点名称:
节点名称由其名称属性指定:
<node [...] name="bebop_driver" [...]
结果是bebop/bebop_driver调用rosnode list.
可以看到
我正在使用 bebop_driver 包和 运行 安装 bebop_driver_node .
bebop_node.launch文件是这样的:
<?xml version="1.0"?>
<launch>
<arg name="namespace" default="bebop" />
<arg name="ip" default="10.202.0.1" />
<arg name="drone_type" default="bebop2" /> <!-- available drone types: bebop1, bebop2 -->
<arg name="config_file" default="$(find bebop_driver)/config/defaults.yaml" />
<arg name="camera_info_url" default="package://bebop_driver/data/$(arg drone_type)_camera_calib.yaml" />
<group ns="$(arg namespace)">
<node pkg="bebop_driver" name="bebop_driver" type="bebop_driver_node" output="screen">
<param name="camera_info_url" value="$(arg camera_info_url)" />
<param name="bebop_ip" value="$(arg ip)" />
<rosparam command="load" file="$(arg config_file)" />
</node>
<include file="$(find bebop_description)/launch/description.launch" />
</group>
</launch>
但是当我 运行 rosnode list
我收到:
/bebop/bebop_driver
由于我正在尝试使用 rospy.init_node('node_name')
这是一个问题,因为我无法键入命名空间。
节点的名称空间和名称在启动文件中定义。您可以在 thr ROS wiki: roslaunch/XML.
找到文档命名空间:
由于您使用的是组,节点将被放置在它的命名空间中,由 ns 属性定义:
<group ns="$(arg namespace)">
在您的例子中,命名空间由参数 namespace
定义,默认情况下为 bebop:
<arg name="namespace" default="bebop" />
请注意,多个和嵌套的组也可以创建命名空间。
节点名称:
节点名称由其名称属性指定:
<node [...] name="bebop_driver" [...]
结果是bebop/bebop_driver调用rosnode list.
可以看到