我正在使用 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')
,因此出现了问题,因为我无法输入名称空间。
答案 0 :(得分:2)
节点的名称空间和名称在启动文件中定义。您可以在thr ROS wiki: roslaunch/XML上找到文档。
命名空间:
由于您正在使用组,因此该节点将放置在其
<group ns="$(arg namespace)">
在您的情况下,命名空间由参数namespace
定义,默认情况下为 bebop :
<arg name="namespace" default="bebop" />
请注意,也可以使用多个嵌套组来创建名称空间。
节点名称:
节点名称由其 name 属性指定:
<node [...] name="bebop_driver" [...]
结果是 bebop / bebop_driver ,您可以通过调用 rosnode list 看到。