首页 > 解决方案 > 为什么机器人在 RVIZ 中不动?

问题描述

我现在正在使用真正的机器人turtlebot3 burger。如下面的 rqt_graph 所示,我已经运行了我的自定义包,ann3_publisher即将要发布的节点添加到gmapping包中并在真正的机器人中运行。

rqt_graph

但是当我移动机器人时,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。另一个信息是我在凉亭模拟中运行时。它工作并且机器人移动。但是当我在现实世界中运行时,机器人不会在 rviz 应用程序中移动。

tf_tree

标签: ros

解决方案


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


推荐阅读