|
現: 2020-12-26 (土) 15:08:16 yuji |
| + | * ROSをソースからビルドしてインストールする [#r5ad2771] |
| | | |
| + | 以下のような環境へ,ROS Lunerをソースからビルドしてインストールしてみた。 |
| + | |
| + | * インストールする環境 [#gd18903e] |
| + | Windows 7に,VMware Workstation 12 Playerで''Ubuntu 17.10 64bit''を動かしている。~ |
| + | そのUbuntu 17.10に,ROS Luner(5/23/2017にリリースされた)をソースからビルドしてインストールする。 |
| + | |
| + | * 準備をする [#w12dd31b] |
| + | |
| + | ** 依存ソフトウェアのインストール [#h61893aa] |
| + | 最初に,ビルドするために必要な依存ソフトウェア等ををインストールする。 |
| + | # apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential |
| + | |
| + | ** rosdepの初期化 [#a4a9146c] |
| + | rosdepとは,rosの主要コンポーネントの使用時,もしくはコンパイル時に,依存関係にあるパッケージのインストールを容易に管理するツール。 |
| + | $ sudo rosdep init |
| + | $ rosdep update |
| + | |
| + | * ビルドとインストール [#w01e390d] |
| + | 以下のようにしてROSをビルドし,インストールした。 |
| + | |
| + | ** catkinワークスペースの作成 [#h35baad1] |
| + | ROSパッケージをビルドするには,catkin(キャッキン)ワークスペースが必要。まず,このcatkinワークスペースを作成する。~ |
| + | catkinは,ビルドシステムのことで,CMakeを拡張したもの。 |
| + | $ mkdir ~/ros_catkin_ws |
| + | $ cd ~/ros_catkin_ws |
| + | |
| + | ** ソースコードの取得 [#s35aa312] |
| + | 次に,ROSパッケージをビルドできるように,ファイルを取得する必要がある。 |
| + | このために,wstoolを使用する。 |
| + | インストールするタイプを決めて,wstoolコマンドにオプション指定します。 |
| + | |
| + | Desktop-Full: ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception が入っている |
| + | $ rosinstall_generator desktop_full --rosdistro lunar --deps --tar > lunar-desktop-full.rosinstall |
| + | $ wstool init -j8 src lunar-desktop-full.rosinstall |
| + | |
| + | Desktop(推奨): ROS, rqt, rviz, and robot-generic libraries が入っている |
| + | $ rosinstall_generator desktop --rosdistro lunar --deps --tar > lunar-desktop.rosinstall |
| + | $ wstool init -j8 src lunar-desktop.rosinstall |
| + | |
| + | ROS-Comm(ベアボーンのみ):Coreのビルド, 通信ライブラリ GUIツールは無し |
| + | $ rosinstall_generator ros_comm --rosdistro lunar --deps --tar > lunar-ros_comm.rosinstall |
| + | $ wstool init -j8 src lunar-ros_comm.rosinstall |
| + | |
| + | ここでは,Desktop-Fullをビルドしてみた。 |
| + | |
| + | watoolは,インストールするタイプのすべてのcatkinパッケージを追加し,必要なソースを~/ros_catkin_ws/srcディレクトリに取得する。~ |
| + | まあ,結構時間がかかる。-j8オプションは,8パッケージを並列に処理するオプション。 |
| + | |
| + | 上記の3つのインストールタイプに加えて,ロボットや知覚など,さらに多くのプログラムが用意されている。~ |
| + | これらを追加するには,パッケージパスを必要なものに変更すればOK。 |
| + | $ rosinstall_generator robot --rosdistro lunar --deps --tar > lunar-robot.rosinstall |
| + | $ wstool init -j8 src lunar-robot.rosinstall |
| + | |
| + | wstoolでの処理が失敗するか中断された場合は,次のコマンドでダウンロードを再開出来る。 |
| + | $ wstool update -j 4 -t src |
| + | |
| + | ** 依存関係の解決 [#kc6f9239] |
| + | catkinワークスペースをビルドする前に,依存関係の必要なものが全てあることを確認する必要がある。 |
| + | これには,rosdepツールを使用します: |
| + | $ rosdep install --from-paths src --ignore-src --rosdistro lunar -y |
| + | |
| + | これは,srcディレクトリ内のすべてのパッケージを見て,それが持つすべての依存関係を見つけます。 |
| + | 次に,依存関係を再帰的にインストールしていく。 |
| + | |
| + | --from-pathsオプションは,パッケージのディレクトリ全体(この場合はsrc)の依存関係をインストールすることを示す。 |
| + | --ignore-srcオプションは,rosdepに対して,パッケージマネージャからsrcフォルダにROSパッケージをインストールしようとすべきではないことを示す。 |
| + | ROS環境設定がまだ無いので,--rosdistroオプションが必要です。この時,ビルドしようとしているROSのバージョンをrosdepに指定する必要がある。 |
| + | 最後に,-yオプションを指定すると,パッケージマネージャからのプロンプトでyesを入力するのを省くようにrosdepに指示する。 |
| + | |
| + | しばらくすると,rosdepはシステムの依存関係のインストールを完了し,ビルド出来るようになる。 |
| + | |
| + | ** catkinのワークスペースのビルド [#p89ea855] |
| + | パッケージのダウンロードと依存関係の解決が完了したら,catkinパッケージをビルドする準備が出来ている。 |
| + | |
| + | catkin_make_isolatedコマンドを使用するのは,インストールにcatkinとplain cmakeパッケージの両方があるため。 |
| + | catkinのみを使用するように選択すると,catkin/commands/catkin_makeを,catkinパッケージのみで使用出来る。 |
| + | |
| + | catkin_make_isolatedを実行する。 |
| + | $ ./src/catkin/bin/catkin_make_isolated --make-arg -j1 --install -DCMAKE_BUILD_TYPE=Release |
| + | |
| + | 無事ビルドに成功したらパッケージは,~/ros_catkin_ws/install_isolated もしくは,--install-space引数で指定した場所にインストールされている。 |
| + | そのディレクトリの中に,setup.bashファイルが生成されていることを確認する。 |
| + | |
| + | ビルドしたROSを利用するには,setup.bashスクリプトを読み込んで利用する。 |
| + | $ source ~/ros_catkin_ws/install_isolated/setup.bash |
| + | |
| + | * ソースコードが更新された場合 [#m89d48d3] |
| + | ソースコードを最新の状態に保ちたい場合は,定期的にrosinstallファイルを更新し最新のソースをダウンロードして,ワークスペースを再構築する必要がある。 |
| + | |
| + | ** ワークスペースの更新 [#zb93ef2f] |
| + | ワークスペースを更新するには,まず既存のrosinstallファイルを上書きしないようにどこかに移動し,更新されたバージョンを生成する。 |
| + | わかりやすくするために,''desktop-full''タイプで,説明する。 |
| + | |
| + | 他のタイプについては,ファイル名とrosinstall_generator引数をそれに合わせて変更する。 |
| + | |
| + | $ mv -i lunar-desktop-full.rosinstall lunar-desktop-full.rosinstall.old |
| + | $ rosinstall_generator desktop_full --rosdistro lunar --deps --tar > lunar-desktop-full.rosinstall |
| + | |
| + | 次に,新しいrosinstallファイルを古いバージョンと比較して,更新されるパッケージを確認する。 |
| + | $ diff -u lunar-desktop-full.rosinstall lunar-desktop-full.rosinstall.old |
| + | |
| + | これらの変更が問題なければ,新しいrosinstallファイルをワークスペースに組み込み,ワークスペースを更新する。 |
| + | $ wstool merge -t src lunar-desktop-full.rosinstall |
| + | $ wstool update -t src |
| + | |
| + | ** ワークスペースの再ビルド [#b3c84510] |
| + | ワークスペースに最新のソースが用意されたので,再ビルドする。 |
| + | $ ./src/catkin/bin/catkin_make_isolated --install |
| + | |
| + | 注意:最初にワークスペースを指定したときに,--install-spaceオプションを指定した場合は,作業領域を再ビルドするときに再度指定する必要がある。 |
| + | |
| + | ワークスペースが再ビルド出来たら,セットアップファイルを再度読み込む必要がある。 |
| + | $ source ~/ros_catkin_ws/install_isolated/setup.bash |