スチールウールの活動記録

初心者に向けて(私もだけど)電子工作やプログラミングや関連することをいろいろ。

どこでもcatkin_make && ROS_IPとか自動設定

いつもcatkin_makeをするときに、いちいちワークスペースまで移動するのがめんどう、さらに移動し忘れてていらいらするなどがありました。 さらに、ROS_IPも設定し忘れててなどもよくありました。

なので、今回はどこにいてもcatkin_makeができて、読み込んだ時に現在のIPアドレスをROS_IPに設定できるようにしたいと思います。

どこでもcatkin_make

これは関数、aliasを設定することでできるようにします。

catkin_makeをしたときにワークスペースに移動し、catkin_makeが終了したときにコマンドを実行したディレクトリに戻ります(戻ってきているというわけではありませんが…)。オプションをつけても大丈夫です。さらに、develフォルダにあるsetupスクリプトも一緒に読めるようにします。

bashであれば、関数を定義します。

function catkin_make(){(cd ~/catkin_ws && command catkin_make $@) && source ~/catkin_ws/devel/setup.bash;}

zshではaliasに無名関数が使えるようなので、aliasを設定します。

alias catkin_make='(){(cd ~/catkin_ws && \catkin_make $@) && source ~/catkin_ws/devel/setup.zsh}'

これで楽になりますね。

ROS_IP設定

よくROS_IPの設定を忘れてします人にはとても役立つと思います。 有線接続してあれば有線のIPを、無線接続なら無線のIPを、接続がなければlocalhostをROS_IPにします。

私の師がシェル芸の家元なので、簡単なシェル芸を使って設定します。

export MY_WLAN0IP=`ifconfig wlan0 | grep -o -E "([0-9]+\.){3}[0-9]+" | head -n1`
export MY_ETH0IP=`ifconfig eth0 | grep -o -E "([0-9]+\.){3}[0-9]+" | head -n1`
export ROS_MASTER_URI=http://$(echo $MY_ETH0IP $MY_WLAN0IP localhost|cut -d' ' -f1):11311
export ROS_IP=$(echo $MY_ETH0IP $MY_WLAN0IP localhost|cut -d' ' -f1)

これで ROS_IPとROS_MASTER_URIが現在のIPで設定されます。 .bashrcなどに書いておけば読み込む度に設定されるので便利です。

結論

これでいらいらが多少は改善されると思います。よいROSライフを!!!

その他

catkin_makeのオプションで"--pkg PACKAGE_NAME"で特定のパッケージだけmakeできるんですね