Gazebo启动报错:加载gmapping插件失败,寻求修复方案
我来帮你捋清楚这个问题并搞定它!
首先解释下你看到的错误含义:
[ERROR] [1515141508.242475977]: Skipped loading plugin with error: XML Document '/opt/ros/kinetic/share/gmapping/nodelet_plugins.xml' has no Root Element. This likely means the XML is malformed or missing.
这个错误是说ROS在尝试加载gmapping的nodelet插件时,找不到格式合法的配置XML文件——要么文件本身缺失了,要么文件内容损坏(比如没有XML根节点,导致解析失败)。虽然当前Gazebo能正常启动,但gmapping相关的功能(比如激光SLAM建图)肯定用不了,所以确实有必要修复。
下面是具体的解决步骤:
第一步:检查目标XML文件是否存在
打开终端运行以下命令,确认文件路径是否正确、文件是否存在:ls /opt/ros/kinetic/share/gmapping/nodelet_plugins.xml如果终端提示
No such file or directory,说明gmapping包安装不完整或者损坏了。第二步:重新安装gmapping包
不管文件是缺失还是损坏,重新安装都能解决大部分问题。运行以下命令重装:sudo apt-get install --reinstall ros-kinetic-gmapping这个命令会重新下载并安装Kinetic版本的gmapping包,修复损坏或缺失的文件。
第三步:验证XML文件格式(可选)
重装后,再用以下命令查看XML文件内容:cat /opt/ros/kinetic/share/gmapping/nodelet_plugins.xml正常的内容应该包含类似这样的根节点结构:
<library path="lib/libgmapping_nodelet"> <class name="gmapping/slam_gmapping" type="gmapping::SlamGmappingNodelet" base_class_type="nodelet::Nodelet"> <description>ROS gmapping nodelet.</description> </class> </library>如果能看到这样的合法XML结构,说明问题已经解决。
第四步:确认ROS环境变量(可选)
有时候环境变量配置错误也会导致ROS找不到包路径,运行以下命令检查:echo $ROS_PACKAGE_PATH输出里应该包含
/opt/ros/kinetic/share,如果没有的话,重新source一下ROS的setup文件:source /opt/ros/kinetic/setup.bash
做完这些步骤后,重新启动Gazebo,应该就不会再看到那个错误提示了。
内容的提问来源于stack exchange,提问作者MoneyBall




