0

在文件中使用以下内容.sdf仅适用于生成一个对象。如果我尝试生成多个,则会发生错误,因为有两个对象在同一主题上“交谈”。

我怎样才能更通用地编写这段 sdf,以便生成更多对象不再是问题?例如在主题名称中添加模型名称?

<plugin name="camera_controller" filename="libgazebo_ros_camera.so">
    <alwaysOn>true</alwaysOn>
    <updateRate>0.0</updateRate>  
    <cameraName>RCcar/camera1</cameraName>   
    <imageTopicName>image_raw</imageTopicName>    
    <cameraInfoTopicName>camera_info</cameraInfoTopicName>    
    <frameName>link_camera</frameName>    
    <hackBaseline>0.0</hackBaseline>    
    <distortionK1>0.0</distortionK1>    
    <distortionK2>0.0</distortionK2>    
    <distortionK3>0.0</distortionK3>    
    <distortionT1>0.0</distortionT1>    
    <distortionT2>0.0</distortionT2>    
    <robotNamespace>/</robotNamespace>    
</plugin>
4

1 回答 1

0

有一种方法不需要修改模型配置文件。

在生成模型的 ROS 启动文件中,您可以添加“group ns”属性。这是一个例子:

<!-- BEGIN ROBOT 1-->
  <group ns="robot1">
    <param name="tf_prefix" value="robot1_tf" />
    <include file="EXAMPLE_PATH/EXAMPLE_LAUNCH_FILE_FOR_ONE_ROBOT.launch" >
      (args ...)
    </include>
  </group>

  <!-- BEGIN ROBOT 2-->
  <group ns="robot2">
    <param name="tf_prefix" value="robot2_tf" />
    <include file="EXAMPLE_PATH/EXAMPLE_LAUNCH_FILE_FOR_ONE_ROBOT.launch" >
      (args ...)
    </include>
  </group>

在“EXAMPLE_LAUNCH_FILE_FOR_ONE_ROBOT.launch”文件中,您可以启动一个机器人模型。

那么 rostopics 将是:

...

/robot1/topicXXX
/robot2/topicXXX

...

于 2020-11-30T02:38:03.217 回答