为什么机器人在 RVIZ 中不动?

Why the robot doesn't move in RVIZ?

我现在正在使用真正的机器人 turtlebot3 汉堡。如下面的 rqt_graph 所示,我有 运行 我的自定义包,我正在添加要发布到 gmapping 包和 运行 的 ann3_publisher 节点在真正的机器人中。

但是当我移动机器人时,rviz应用程序中的机器人似乎根本没有移动。如下图所示,地图和机器人都在,但机器人不动:

我尝试在终端运行 rosrun rviz rviz 一个一个添加,出现警告信息如下图

当我 运行 通用包 roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping 时,它可以工作,我没有这个问题。我可以知道为什么以及如何解决这个问题吗?

这是我用于订阅 /scan_new3 主题的自定义 turtlebot3_slam.launch 文件。

<launch>
  <!-- Arguments -->
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="configuration_basename" default="turtlebot3_lds_2d.lua"/>
  <arg name="set_base_frame" default="base_footprint"/>
  <arg name="set_odom_frame" default="odom"/>
  <arg name="set_map_frame"  default="map"/>
  <arg name="open_rviz" default="true"/>

  <!-- TurtleBot3 -->
  <include file="$(find turtlebot3_bringup)/launch/turtlebot3_remote.launch">
    <arg name="model" value="$(arg model)" />
  </include>

  <!-- Gmapping -->
  <node pkg="gmapping" type="slam_gmapping" name="turtlebot3_slam_gmapping" output="screen">
    <param name="base_frame" value="$(arg set_base_frame)"/>
    <param name="odom_frame" value="$(arg set_odom_frame)"/>
    <param name="map_frame"  value="$(arg set_map_frame)"/>
    <rosparam command="load" file="$(find turtlebot3_slam)/config/gmapping_params.yaml" />
    <remap from="/scan" to="/scan_new3"/>
  </node>

  <!-- rviz -->
  <group if="$(arg open_rviz)"> 
    <node pkg="rviz" type="rviz" name="rviz" required="true"
          args="-d $(find turtlebot3_slam)/rviz/turtlebot3_scan3.rviz"/>
  </group>
</launch>

下面是真实机器人的tf_tree。另一个信息是当我 运行 在 gazebo 模拟中。它工作,机器人移动。但是当我在现实世界中 运行 时,机器人在 rviz 应用程序中没有移动。

我得到了答案。这是因为机器人的传感器读取到它周围有障碍物但实际上没有。您可以在第二张图中看到,传感器检测到圆形(绿色)的墙壁并在其周围建造墙壁。所以机器人不能在 rviz 中移动。当我消除那个读数时,机器人可以像往常一样在 rviz

中移动