ros - 为什么机器人在 RVIZ 中不动?
问题描述
我现在正在使用真正的机器人turtlebot3 burger。如下面的 rqt_graph 所示,我已经运行了我的自定义包,ann3_publisher
即将要发布的节点添加到gmapping
包中并在真正的机器人中运行。
但是当我移动机器人时,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 应用程序中移动。
解决方案
我得到了答案。这是因为机器人的传感器读取它周围有障碍物但没有。您可以在第二个图中看到,传感器检测到圆形(绿色)的墙壁并在其周围建造墙壁。所以机器人不能在rviz中移动。当我消除该读数时,机器人可以像往常一样在 rviz 中移动
推荐阅读
- python - Python multiprocessing.Pool 和参数酸洗
- python-3.x - Python 3.7 - Pygame 1.9.4
- codesniffer - PHP CodeSniffer 是否支持 Rubcop 等特定于规则的配置?
- javascript - 在Javascript中为特定对象键赋值
- python - 更改 django 的默认管理员,但不将模型重定向到默认管理员
- ruby-on-rails - 用设计安装导轨(HEAD版)的正确方法
- c# - 使用网络掩码验证 IPAddress.TryParse
- python - 这是 pypy 的用例吗?
- .net - “计划并等待运行”的任务未运行
- java - 重构代码中的问题/找出要使用的设计模式