天天看點

rviz黑視窗,無法打開配置檔案問題1. 問題描述2. 解決過程3. 總結

目錄

1. 問題描述

2. 解決過程

2.1 解決問題2

2.2 解決問題1

3. 總結

1. 問題描述

最近碰到了兩個很奇怪的問題:

  • ROS打開rviz後隻顯示一個小的黑色視窗,似乎是沒有正常加載配置檔案,即使手動加載配置檔案控制台也會報錯。

rviz顯示的視窗如下圖所示。

rviz黑視窗,無法打開配置檔案問題1. 問題描述2. 解決過程3. 總結

這說明rviz的預設配置沒有正确加載,即使在菜單欄點選File --> Open config也不行,同時控制台會提示兩個錯誤,錯誤資訊如下(poll failed with error Interrupted system call):

rviz黑視窗,無法打開配置檔案問題1. 問題描述2. 解決過程3. 總結
  • 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. 總結

本來已經準備放棄了,奈何重裝系統代價實在太大,裝虛拟機又沒法跑動力學仿真環境才回過頭來繼續硬着頭皮解決這個問題,感謝以上提供幫助的網友們。