2016年7月16日土曜日

ROS indigoでrqt関連のパッケージがなくなったり、いろいろ動作しなくなった件

今回は、久しぶりにROSを動かそうとしたらいろいろ動かなくなっていたので
その時の対処をメモ。

今回の環境
Ubuntu 14.04
ROS indigo
gazebo

最終的にわかった原因
そう、それはUbuntuを安易にapt-get upgradeしたことによりソフトウェアが更新され、
ROSの依存関係が崩れてしまったこと。(だと思う)

いろいろな症状
ROSでrqt_graphを起動しようとしたら、とりあえずそんなものない的なことを言われた。
エラー内容をメモしておくのを忘れたのでどんなエラーをコンソールに出力したかわからないが、
$ rosrun rqt_graph rqt_graph
found no plugin matching "rqt_graph.ros graph.RosGraph"
...
こんな感じのエラーが出ていた。
rqt_graphを含めrqt_imageとかいろんなものが使えなかった。
また、rqtのみを立ち上げてもPluginにはgraph等はなかった。
ってことで、なくなったrqt関係を全部入れる。
$ sudo apt-get install ros-indigo-rqt-common-plugins
これで、とりあえずrqt関係はインストールされる。
よし、これでrqt_graph起動だ!
と思っても、またしてもエラー↓

NameError: global name 'dot_parser' is not defined
$ rosrun rqt_graph rqt_graph
PluginHandlerDirect._restore_settings() plugin "rqt_graph/RosGraph#0" raised an exception:
Traceback (most recent call last):
  File "/opt/ros/indigo/lib/python2.7/dist-packages/qt_gui/plugin_handler_direct.py", line 116, in _restore_settings
    self._plugin.restore_settings(plugin_settings_plugin, instance_settings_plugin)
  File "/opt/ros/indigo/lib/python2.7/dist-packages/rqt_graph/ros_graph.py", line 202, in restore_settings
    self._refresh_rosgraph()
  File "/opt/ros/indigo/lib/python2.7/dist-packages/rqt_graph/ros_graph.py", line 226, in _refresh_rosgraph
    self._update_graph_view(self._generate_dotcode())
  File "/opt/ros/indigo/lib/python2.7/dist-packages/rqt_graph/ros_graph.py", line 259, in _update_graph_view
    self._redraw_graph_view()
  File "/opt/ros/indigo/lib/python2.7/dist-packages/rqt_graph/ros_graph.py", line 292, in _redraw_graph_view
    same_label_siblings=True)
  File "/opt/ros/indigo/lib/python2.7/dist-packages/qt_dotgraph/dot_to_qt.py", line 248, in dotcode_to_qt_items
    graph = pydot.graph_from_dot_data(dotcode.encode("ascii", "ignore"))
  File "/usr/lib/python2.7/dist-packages/pydot.py", line 220, in graph_from_dot_data
    return dot_parser.parse_dot_data(data)
NameError: global name 'dot_parser' is not defined
dot_parserがない?
調べてみると、Python関係の問題らしい。
Python2.7など、Python2.X系ではpyparsingというライブラリが1.X系でないといけないらしい。
コマンドによるバージョンの調べ方はわからないが下記のコマンド実行時に出てくる出力で
現在入っているバージョンは2.X系であることがわかった。
$ sudo pip uninstall pyparsing
Uninstalling pyparsing:
  /usr/local/lib/python2.7/dist-packages/pyparsing-2.1.5.dist-info/DESCRIPTION.rst
  /usr/local/lib/python2.7/dist-packages/pyparsing-2.1.5.dist-info/METADATA
  /usr/local/lib/python2.7/dist-packages/pyparsing-2.1.5.dist-info/RECORD
  /usr/local/lib/python2.7/dist-packages/pyparsing-2.1.5.dist-info/WHEEL
  /usr/local/lib/python2.7/dist-packages/pyparsing-2.1.5.dist-info/metadata.json
  /usr/local/lib/python2.7/dist-packages/pyparsing-2.1.5.dist-info/top_level.txt
  /usr/local/lib/python2.7/dist-packages/pyparsing.py
  /usr/local/lib/python2.7/dist-packages/pyparsing.pyc
Proceed (y/n)? y
  Successfully uninstalled pyparsing

$ pip install -Iv https://pypi.python.org/packages/source/p/pyparsing/pyparsing-1.5.7.tar.gz#md5=9be0fcdcc595199c646ab317c1d9a709
Downloading/unpacking https://pypi.python.org/packages/source/p/pyparsing/pyparsing-1.5.7.tar.gz
  Downloading pyparsing-1.5.7.tar.gz (939kB): 
  Downloading from URL https://pypi.python.org/packages/source/p/pyparsing/pyparsing-1.5.7.tar.gz
...Downloading pyparsing-1.5.7.tar.gz (939kB): 939kB downloaded
  Running setup.py (path:/tmp/pip-XwB3b7-build/setup.py) egg_info for package from https://pypi.python.org/packages/source/p/pyparsing/pyparsing-1.5.7.tar.gz
...

$ sudo pip install pydot
Requirement already satisfied (use --upgrade to upgrade): pydot in /usr/lib/python2.7/dist-packages
Requirement already satisfied (use --upgrade to upgrade): pyparsing in /usr/local/lib/python2.7/dist-packages (from pydot)
Cleaning up...

$ rosrun rqt_graph rqt_graph

これで、晴れてrqt関係が治った。
やれやれ





0 件のコメント :

コメントを投稿