rosintallとrosws (ROS workspace)の仕組みについて調べてみました。
rosintallは、ソースからROSのスタックを持ってきてビルドするためのものでした。
fuerteになって、rosintallはroswsで実質置き換えられたようです。
rosintallは、
rosintall, rosws, roslocate, roscoという4つのコマンドでできているようです。
roswsはrosintallでできることは全部できる、と書いてあるので、
roswsをマスターしましょう。
もとのチュートリアルはこちら。
http://www.ros.org/doc/api/rosinstall/html/rosws_tutorial.html
1.インストール
Ubuntuの人は以下のコマンドで入れることができます。
$ sudo apt-get install python-pip
$ sudo pip install -U rosinstall
2.ワークスペースの初期化
以下のコマンドを打って、/tmp/rosws_tutorialというディレクトリをワークスペースにしてみましょう。
$ cd /tmp
$ mkdir rosws_tutorial
$ cd rosws_tutorial
$ rosws init
Writing /tmp/rosws_tutorial/.rosinstall
(Over-)Writing setup.sh, setup.bash, and setup.zsh in /tmp/rosws_tutorial
rosws init complete.
Type 'source ./setup.bash' to change into this environment.
Add that source command to the bottom of your ~/.bashrc to set it up every time you log in.
If you are not using bash please see http://www.ros.org/wiki/rosinstall/NonBashShells
すると以下のファイルができます。
$ ls -a
./ ../ .rosinstall setup.bash setup.sh setup.zsh
以下のようなコマンドを打ってみると、ワークスペースがセットされました。
$ rosws info
workspace: /tmp/rosws_tutorial
ROS_ROOT: None
もし、はやまって環境変数ROS_WORKSPACEがすでにセットされてるとエラーになります。
ERROR: Ambiguous workspace: ROS_WORKSPACE=/home/ogutti/ros/otl-ros-pkg, /tmp/rosws_tutorial/.rosinstall
そのときは↓のようにしましょう。
$ unset ROS_WORKSPACE
(ROS_WORKSPACEは、rosws initで作ったsetup.bashを読み込むことでセットするもののようです。)
3.ROSディストロの情報をセット
以下のようにするとfuerteの環境がセットされるみたいです。これをやることで/opt/ros/fuerte/setup.bashを読みこまなくてよくなります。
$ rosws merge /opt/ros/fuerte/.rosinstall
Performing actions:
Add new elements:
/opt/ros/fuerte/share, /opt/ros/fuerte/share/ros, /opt/ros/fuerte/setup.sh, /opt/ros/fuerte/stacks
Overwriting /tmp/rosws_tutorial/.rosinstall
rosws update complete.
Do not forget to do ...
$ source /tmp/rosws_tutorial/setup.sh
... in every open terminal.
Config changed, maybe you need run rosws update to update SCM entries.
使い始めるには生成したsetup.bashを読み込みましょう。
これで、ROS_WORKSPACE環境変数がセットされました。
確かめてみてください。
$ echo $ROS_WORKSPACE
$ roscd
すると、ここに来れますね。
4.ワークスペースの拡張
折角なのでrosrubyでも入れてもらいたいところですが、rosruby入れるとメッセージのビルドが遅くなって迷惑をかけるので、最新の私のリポジトリorz-ros-pkgでも入れましょう。
$ rosws info
workspace: /tmp/rosws_tutorial
ROS_ROOT: /opt/ros/fuerte/share/ros
Localname S SCM Version-Spec UID (Spec) URI (Spec) [https://...]
--------- - ---- ------------ ----------- -------------------------
orz-ros-pkg x git master github.com/OTL/orz-ros-pkg.git
/opt/ros/fuerte/stacks
/opt/ros/fuerte/share
/opt/ros/fuerte/share/ros
以上のように表示されたでしょうか?ちゃんとorz-ros-pkgが登録されています。
$ rosws update
すると、見事に登録されたorz-ros-pkgがインストール(ダウンロード)されました。
新しいリポジトリを加えるときは、
- rosws mergeでrosintallファイルを追加
- rosws updateでダウンロード&アップデート。
という流れみたいですね。
これで大体つかめたんじゃないでしょうか?
もっと機能は豊富なので、知りたい人は原典URLを参照ください。
まとめ
ということで今までと↓が変更点です。
ここでは試しに/tmp/rosws_tutorialでやりましたが、本番は~/rosなどでやるといいでしょう。
- .bashrcでROS_PACKAGE_PATHを直接編集しない
- .bashrcにROS_WORKSPACEを書かない
- .bashrcで/opt/ros/fuerte/setup.bashを読み込まない
- 作成したWORKSPACEのsetup.bashを読み込む