Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
wstool
とrosdep
だけで行えるようにするのがよいと思います.https://github.com/YOODS/rovi/blob/israfel/Install.sh のように特殊な環境設定法に依存すると,このパッケージの環境設定に手間取ってしまう上に,他のソフトとインテグレーションして動かそうとしたときに,トラブルの原因になります.これはロボットソフトでは良くあるトラブル例ですが,ROSの良いところは,通信形式とかライブラリ以前に,この問題に着目して,誰が作ったパッケージでも同じ手順で開発環境を構築できる点にあると思っています.例:https://moveit.ros.org/install/source/
例:https://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_fetch_robot#setup-environment
ただ実際には色々難しいところがあります.
aravis
,python(pip)
,npm
,/etc/sysctl.conf
あたりが難しい点ですが, まずは一回おいておいて簡単なところから進めていきたいと思います.33bec14 で rovi.rosinstall ファイルを作成しました.これで,
で一通り環境設定が可能になります.
これでInstall.sh の以下の部分は代替出来ます.
rovi/Install.sh
Line 42 in 1f73606
rovi/Install.sh
Line 60 in 1f73606
rovi/Install.sh
Line 81 in 1f73606
以下で3.3.4をインストールしていますが,これは何か理由があるでしょうか? apt で入る 3.3.-beat1-1(3.2.92) で足りない機能はなにになるでしょうか?簡単なところであれば3.3.4から必要な部分だけど,パッケージに含めるのが良いと思います.0633600 も参照ください.
rovi/Install.sh
Lines 46 to 50 in 1f73606
以下でpythonのファイルをdevelスペースにコピーしていますが,
catkin_python_setup
の書き方に従って現状lib/python2.7
以下にあるPythonのコードをsrc/rovi_utils
以下に置けば(3209e57),これらのファイルにアクセスできるようになるはずです.http://docs.ros.org/jade/api/catkin/html/user_guide/setup_dot_py.html
rovi/Install.sh
Line 92 in 1f73606
但し,この場合は既においてあるpythonのコードで
と変更する必要があります(YOODS/rovi_utils@ad00db8)
ただ,この方が名前衝突も割けられますし良い変更かと思います.
以下で
rosrun ...
ではなく直接コマンドを打てばプログラムが立ち上がるようにしているかと思います.rovi/Install.sh
Line 90 in 1f73606
pythonのコードとしてみなせば,setup.pyに書いておくという方法があります.
https://github.com/ros-visualization/rqt/blob/da0b62e2995/rqt_gui/setup.py#L10
今回は
tf_lookup.py
は既に書いてあるので,https://github.com/YOODS/rovi_utils/blob/edd282462/setup.py#L9
これで,rosrun無しで動くようになっています.(インストールされている場所は /home/user/rovi_ws/devel/bin/tf_lookup.py)
もう一つは以下のようにcmakeの
install
コマンドを使う方法です.python以外場合はこちらを使うのが一般的です.https://github.com/ros-visualization/rviz/blob/f9b357fdc0bfea5361e27b506059e62eab1f861b/src/rviz/CMakeLists.txt#L185-L186
こうすればdebファイルが作成されたときには,rosrun無しで実行できるパスにファイルがコピーされます.
開発中もこの環境をつくりたければ,
catkin build
の前でにcatkin config --install
とします(https://catkin-tools.readthedocs.io/en/latest/verbs/catkin_config.html )ただ,この場合全てのパッケージできちんとcmakeのinstall
命令を書かかないと行けなくなるので,ココは後回しにして先に進むのが良いと思います.(debファイルを作成する際にはこれは必須になります)apt
では入らないライブラリを使った開発もROSでは対象になっており,幾つかの方法が試されています.(初期の例 http://wiki.ros.org/ROS/Tutorials/Wrapping%20External%20Libraries ) ,基本はライブラリのソースツリーにpackage.xml
とCMakeLists.txt
を置けばROSのパッケージと同じように開発環境に組み込むことが出来ます.現状の
wstool update
はpythonのtarfile
モジュールのバージョンからtar.xz
に対応していないためとして,このデレクトリの中に以下のファイルを置けば
catkin build
でコンパイル出来ます.https://gist.github.com/d321b6fa8fd3503ba1e395b6651206c6
もう一つの方法はaravisのリリースリポジトリを作ることです.これは将来的にdebでリリースした際に必要になるものかとおもいます.やり方は http://wiki.ros.org/bloom/Tutorials/ReleaseThirdParty を参考にするのですが,aravis-release というリポジトリを作成し,そこに以下のファイルを追加します.
https://gist.github.com/a013458a4e0008b40fc1528ee98096d7
ただ,これは
tar.xz
がpython2では対応していないので,もし,ソースツリーをhttps://github.com/AravisProject/aravis/tree/ARAVIS_0_6_0から持ってきてよければ,
https://gist.github.com/cfff59b21da0332f275ee2c74be8d20f
を利用します.
後はこのディレクトリで
とします,ここで,
git push --all && git push --tags
を行うよう指示がありますが,それをすると,rovi.rosinstall
でこの以下のdebian/kinetic/xenial/aravis
ディレクトリを指定するとpackage.xml
,CMakeLists.txt
入りのソースツリーがダウンロードできます.またここで,
とすると,debファイルも作成されます.
camera_aravisについて
上記の方法でaravisをインストールした場合は,以下のように変更してpkg-config 経由でaravisを見つけるのが楽かと思います.
use pkg-config to find aravis, also assumes ROS aravis packages camera_aravis#2
python(pip)について
上に書いたように
rosdep install ...
として全ての必要なパッケージをインストールする,というコンセプトからすると,pipのパッケージについては以下のようにしてpackage.xml
にかいてrosdep install
でインストールさせるというのがただいいやり方かと思います.新しいpipのパッケージについては以下のようにしてpull requestを出します.
ros/rosdistro#21779
上のようにバージョン固定でインストールする方法についても以下でpull requestをだしました
ros-infrastructure/rosdep#694
ros-infrastructure/rosdep#693
ただ,これをしても/usr/local に入れたpythonのモジュールと他の人のアプリケーションがコンフリクトする,など問題が起こることは多々あるかと思います.
また,この方法でパッケージを作ってもdeb化した際にはpipのモジュールが含まれずに使いづらいものになるかと思います.
他のやり方としては
https://github.com/pyros-dev/catkin_pip や https://github.com/locusrobotics/catkin_virtualenv
があります,こちらのほうがpipのインストール先がワークスペースに限られるなど,メリットがあるかもしれません.
こちらもpipと同様でdeb化した際に問題になるので,可能であればpython/c等の言語でプログラムを書くことを強くおすすめしますが(あるいはjsのコード自体をパッケージに含める)
開発用に
rosdep install
でnpmもインストールできるようなpull requestを以下におきました.ros-infrastructure/rosdep#692
rovi/Install.sh
Line 19 in 1f73606
非常にトリッキーな方法としてはコンパイル時に強制的に設定を追加する,という方法もありますが,
何れにせよ,debファイルを作成時には以下のようなファイルを作成してapt じに設定を書き換えることができます.
https://github.com/tork-a/jsk_3rdparty-release/blob/debian/kinetic/xenial/julius/debian/preinst
https://github.com/tork-a/minas/blob/master/minas_control/CMakeLists.txt#L42-L49
何れにせよupdate_sysctl.sh などのファイルを作成して
rosrun rovi update_sysctl.sh
などとさせるのが良いかと思います.c.f. YOODS/rovi_utils#10, YOODS/camera_aravis#2