为什么机器人在 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
中移动
我现在正在使用真正的机器人 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
中移动