在 ROS NOETIC 中启动多个 Turtlebot 时出现转换错误

问题描述 投票:0回答:1

我正在尝试在此之后启动 3 个海龟机器人:repo in ros noetic。 这是我的凉亭启动文件:

<?xml version="1.0"?>
<launch>
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="first_tb3"  default="tb3_0"/>
  <arg name="second_tb3" default="tb3_1"/>
  <arg name="third_tb3" default="tb3_2"/>

  <arg name="first_tb3_x_pos" default="11.466219"/>
  <arg name="first_tb3_y_pos" default="-7.267796"/>
  <arg name="first_tb3_z_pos" default="-0.000"/>
  <arg name="first_tb3_yaw"   default="1.621071"/>

  <arg name="second_tb3_x_pos" default="8.143804"/>
  <arg name="second_tb3_y_pos" default="0.032318"/>
  <arg name="second_tb3_z_pos" default="-0.001064"/>
  <arg name="second_tb3_yaw"   default="-0.309337"/>

  <arg name="third_tb3_x_pos" default="18.376935"/>
  <arg name="third_tb3_y_pos" default="-1.841782"/>
  <arg name="third_tb3_z_pos" default="-0.000988"/>
  <arg name="third_tb3_yaw"   default="2.441699"/>

  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <!-- <arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/tb3_worlds/turtlebot3_world.world"/> -->
    <arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/scene2.world"/>
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>  

  <group ns = "$(arg first_tb3)">
    <param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher0" output="screen">
      <param name="publish_frequency" type="double" value="50.0" />
      <param name="tf_prefix" value="$(arg first_tb3)" />
    </node>
    
    <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model $(arg first_tb3) -x $(arg first_tb3_x_pos) -y $(arg first_tb3_y_pos) -z $(arg first_tb3_z_pos) -Y $(arg first_tb3_yaw) -param robot_description" />
  </group>

  <group ns = "$(arg second_tb3)">
    <param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher1" output="screen">
      <param name="publish_frequency" type="double" value="50.0" />
      <param name="tf_prefix" value="$(arg second_tb3)" />
    </node>

    <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model $(arg second_tb3) -x $(arg second_tb3_x_pos) -y $(arg second_tb3_y_pos) -z $(arg second_tb3_z_pos) -Y $(arg second_tb3_yaw) -param robot_description" />
  </group>

  <group ns = "$(arg third_tb3)">
    <param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher2" output="screen">
      <param name="publish_frequency" type="double" value="50.0" />
      <param name="tf_prefix" value="$(arg third_tb3)" />
    </node>

    <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model $(arg third_tb3) -x $(arg third_tb3_x_pos) -y $(arg third_tb3_y_pos) -z $(arg third_tb3_z_pos) -Y $(arg third_tb3_yaw) -param robot_description" />
  </group>

</launch>

eahc 机器人的 tf 树是分离的,rviz 上缺少地图框架 e,这显示全局状态错误和 nop 转换错误。

rviz error...

下面是tf树:

tf tree

我尝试了多种方法来启动导航堆栈,但每个机器人的 tf 树仍然是独立的,并且没有地图框。

ros rviz tf2-ros
1个回答
0
投票

您有 3 个独立的转换树和

odom
子树,引用
/base_footprint
:

Part of the tree

如果您将 Gazebo 中每个机器人的里程计生成器分开,以使每个机器人都可以使用里程计,这将会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.