ROSの環境変数を自動的に設定するため、皆さん~/.bashrcに
source /opt/ros/kinetic/setup.bash
または
source 自分のcatkin_ws/devel/setup.bash
足しているよね?
普段はあまり問題無いが、たまにこれのせいで意図した動作をしてくれないときもある。自分が遭遇したオチをここに記録する。
pythonモジュールimport失敗
たとえばvisualモジュールimportしたときにコケるよね?
自分の解決方法は2つがある:
- python起動前にpythonpathを上書きする
$ export PYTHONPATH=/usr/lib/python2.7/dist-packages:$PYTHONPATH
- 以下のコードを自分のpythonソースの先頭に追加
import os,sys
sys.path = [''] + ['/usr/lib/python2.7/dist-packages'] + sys.path[1:]
cmakeの時に目標のPKG_CONFIGにたどり着けない
CMakeListsに自分の環境あわせて以下のようにpkg_config_pathを追加:
set(ENV{PKG_CONFIG_PATH} "/usr/lib/x86_64-linux-gnu/pkgconfig/:$ENV{PKG_CONFIG_PATH}")
rtshellがnameserver見つからないとき
rosのnameserverがデフォルトport 15005を使うが、omniNamesがデフォルト2809を使用する。15005で探そうとすると見つからない。なので、以下のスクリプトを作成、sourceする
#!/bin/bash
unset RTCTREE_NAMESERVERS
export RTCTREE_NAMESERVERS="localhost:2809"
rtcwd localhost:2809/
source /usr/local/lib/python2.7/dist-packages/rtshell/data/shell_support
choreonoidのrtm pluginをbuildするときバージョンで怒られる時
cmakeが先にros環境のopenrtm-aistを見つかるとバージョンが満たさないと怒られる。cmakeでmakefileを生成時に自分の環境に合わせてOpenRTM_DIRを定義するといい。例えばppa:hrg/dailyリポジトリでopenrtmをインストールする場合に以下のオプションをにつけると良い:
-DOpenRTM_DIR=/usr/lib/x86_64-linux-gnu/openrtm-1.1/cmake
その他、思いついたら随時追加する
次回を待て!!