rviz黑窗口,无法打开配置文件问题

目录

 

1. 问题描述

2. 解决过程

2.1 解决问题2

2.2 解决问题1

3. 总结


1. 问题描述

最近碰到了两个很奇怪的问题:

  • ROS打开rviz后只显示一个小的黑色窗口,似乎是没有正常加载配置文件,即使手动加载配置文件控制台也会报错。

rviz显示的窗口如下图所示。

rviz黑窗口,无法打开配置文件问题_第1张图片

这说明rviz的默认配置没有正确加载,即使在菜单栏点击File --> Open config也不行,同时控制台会提示两个错误,错误信息如下(poll failed with error Interrupted system call):

rviz黑窗口,无法打开配置文件问题_第2张图片

  • rviz 打开的过程中,控制打印了许多如下信息:
xmbtextlisttotextproperty result code -2

2. 解决过程

2.1 解决问题2

这个问题最开始的表现是rviz打开就是一个黑窗口,没有正常显示仿真中的机器人,即使保存了配置,下次再打开依然是黑窗口。不过你可以通过菜单栏的Panels --> Add new panel添加诸如Display等窗口,但是rviz工作仍然是异常的。

这个时候在控制台就观察到了前面提到的两种错误信息。我最开始解决的是第二个问题,一直认为是这个问题引起了rviz工作异常。搜索了很久,终于在https://forum.manjaro.org/t/getting-error-xmbtextlisttotextproperty-result-code-2-when-running-qt-examples/24879/4找到了问题的原因:

The problem statement was due to locale issue. that was solved by changing to en_US and then back to en_IN.

提示是区域设置的问题。之后开始查找如何修改locale,在https://www.thomas-krenn.com/en/wiki/Configure_Locales_in_Ubuntu有很详细的方案。我通过以下指令将locale切换到en_US.utf8之后重启电脑,第二个问题就解决了。

update-locale LANG=en_US.utf8

2.2 解决问题1

由于只有在rviz菜单栏点击File --> Open config控制台才会打印poll failed with error Interrupted system call错误,所以最开始没有在控制台看到这个信息。但是以这个错误为关键字进行搜索毫无收获。

后来我意识到这个问题是rviz Open config触发的。所以尝试更换了一下搜索关键字:rviz open config error。最终在https://github.com/ros-visualization/rviz/issues/1047找到了一个和我遇到的十分相似的问题。在众多评论的末尾我看到了这样的几条评论:

  1. It is seemed that the yaml-cpp version will cause the problem. I remove the yaml-cpp I install manual and rviz can work properly.
  2. I had this problem too.
    And I found that there are 2 version of yaml-cpp in my computer, one was installed by cmake. and after I deleted it, my rviz repaired.

这两条评论把问题指向了yaml-cpp这个库。回想了一下我之前确实因为读写yaml文件编译链接总是出错而自己从源码重新装了一次yaml-cpp0.5.5。在控制台中输入如下命令进行查看:

sudo dpkg -l | grep yaml-cpp

发现我的yaml-cpp也有多个版本。我自己从源码编译安装的yaml-cpp位于/usr/local/lib下面。把这个目录下的yaml相关库屏蔽掉终于解决了这个问题。如果你不确定是不是这个问题,可以用如下指令先把/usr/local/lib这个目录重命名一下。

cd /usr/local
sudo mv lib xxxlib

然后重新打开rviz看看是否还有问题。

3. 总结

本来已经准备放弃了,奈何重装系统代价实在太大,装虚拟机又没法跑动力学仿真环境才回过头来继续硬着头皮解决这个问题,感谢以上提供帮助的网友们。

你可能感兴趣的:(ROS)