前回はUbuntu Coreについて紹介しましたが,いわゆる”Snappyな”パッケージシステムは,Ubuntu Coreをインストールしなくても試すことができます.Ubuntu CoreはあくまでSnappyをパッケージシステムとして使っているにすぎません.今回は,通常のUbuntuの上で,”Snappyな”ROSパッケージを作ってみようと思います.
SnappyなROSパッケージの作り方のチュートリアルは,ここにあります.とりあえずこの通りに従ってみましょう.
ただし,これをやる前に,Snapcraft Tourのチュートリアルを一通り読むことをお勧めします.
以下の手順は,Ubuntu 16.04 + ROS Kineticで試したものです.
まず,SnappyのパッケージングツールであるSnapcraftをインストールします.
$ sudo apt install snapcraft
SnappyパッケージにするためのROSパッケージが必要ですが,自分でコードを打ち込むのはめんどくさいので,githubからros_tutorialのソースコードをcloneします.
$ mkdir -p catkin_ws/src $ cd ~/catkin_ws/src $ git clone https://github.com/ros/ros_tutorials.git
snapcraftで初期化します.
$ cd ~/catkin_ws $ snapcraft init
snapというディレクトリができて,その下にsnapcraft.yamlというファイルができます.このファイルを,roscpp_tutorialsの中のバイナリが含まれるように,書き換えます.書き換え方はチュートリアルに解説があるので参照してみてください.雰囲気でわかると思います.
さて,いよいよパッケージを作成します.
$ cd ~/catkin_ws $ snapcraft
なにやらネットワークからいろいろとダウンロードし始めました…snapcraftはcatkinワークスペースを理解できるので,package.xmlを見て,rosdepで必要なパッケージをダウンロードしているのです. 「必要なROSのパッケージは全部システム入ってるはずだけど?」と思われるかもしれませんが,Snappyパッケージは,アプリに必要なものを仮想コンテナにすべて含んだ形で持つので,作成の際にいちいちパッケージをダウンロードし,ソースコードならコンパイルして,仮想コンテナ内にインストールします. しばらくすると,処理が終わり,
Snapped talker-listener_0.1_amd64.snap
と,snapファイルが生成されます. これをインストールするには,
$ sudo snap install --dangerous publisher-subscriber_0.1_amd64.snap
とします.インストールされたか確かめて見ましょう.
$ snap list Name Version Rev Developer Notes core 16-2.26.9 2381 canonical - talker-listener 0.1 x1 -
では,ノードを順番に起動してみましょう.
$ talker-listener.roscore $ talker-listener.talker $ talker-listener.listener
お馴染みの,talker-listenerのノードが動き始めたと思います.
著者について