えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

rclshark v1.0.1を公開しました。

実は、このブログでrclsharkのこと一言も触れてなかったり…


1週間ほど前にrclshark v1.0.0をリリースしました。以下のリンクで紹介しているので、是非見て使ってください。

今日、動作確認用の動画を取るために、今一度インストール方法の確認をしていたら、とんでも無い不具合に気づきました。

それは、ubuntuというユーザネーム以外にインストールできないことです。

v1.0.0のリリースを急いでいたのが悪かったのかもしれません。自分のテスト用コンピュータのユーザ名を全て"ubuntu"にしていたため今まで問題にならなかったものが、今になって出ました。

おそらくこれからも多発しそうですね…

そこで、明日のrosjpの組み込み勉強会の前に大急ぎで修正バージョンを作ったわけです。

組み込み勉強会はこちら

技術的な変更点

今回大きく修正したのは、「service ファイル」です。この不具合が起こるまではあまりsystemdの仕様を理解せずに、ネットに転がっているものをただただコピペ&修正でなんとかしてきました。しかし、ROSを使うときはそうは行かなかったのです。

修正前

修正前のサービスファイルを以下に示します。この場合は、User=ubuntuとGroup=ubuntuのせいで、他のユーザにインストールできないという不具合が起きていました。なぜ気づかなかった

[Unit]
Descripton=ROS2 IP Publisher Start

[Service]
ExecStart=/bin/bash /opt/rclshark_ws/src/rclshark/rclshark/rclshark.bash

Type=simple

User=ubuntu
Group=ubuntu

[Install]
WantedBy=multi-user.target

修正後1

そして、以下のように修正しました。ついでに、GUI状態でも起動するように、WantedByの項目について、multi-user.targetからdefault.targetに変更してどの状態でも良いようにしました。

[Unit]
Descripton=ROS2 IP Publisher Start

[Service]
ExecStart=/bin/bash /opt/rclshark_ws/src/rclshark/rclshark/rclshark.bash

Type=simple

[Install]
WantedBy=default.target

これでも一応動く…はずでした。しかしROSのプログラムは動きません!!!

これには理由がありました。順を追って説明すると、

  1. rclを使用したプログラムが立ち上がる。

  2. rclが"~/.ros/log/"の中にファイルを作成しようとする。

  3. "~"を解析できない(ユーザが指定されていない)ので詰む

ログはプログラム内で無効化することはできますが、ファイル生成は免れないようで意味がありませんでした。

つまり、User=...は避けられないらしいです…

修正後2

そこで、User臨機応変(=強引)に追加することにしました。以下にserviceファイルを示します。

[Unit]
Descripton=ROS2 IP Publisher Start

[Install]
WantedBy=default.target

[Service]
ExecStart=/bin/bash /opt/rclshark_ws/src/rclshark/rclshark/rclshark.bash
Type=simple
Restart=on-failure

# Be sure to leave a line feed.

[Install][Service]を逆にして、Userを追加するスクリプトを使用してインストール用シェルファイルにUser=$USERを追加します。

for service_file in $RCLSHARK_WS/src/rclshark/rclshark/service/*.service ; do
    echo "User=$USER" >> $service_file
# (省略)
done

これによって末尾にUserを補完し、ホームディレクトリを定義することができました。


これから、様々なコミュニティで発表していきます。アプデ報告も引き続きこのブログ上で行っていきます🐢

rclshark v1.0.1はこちらから❗

github.com

↓ちなみに、新しくrclsharkの亀のアスキーアートを作りました。インストール後に見ることができます。

f:id:Ray_ar:20210716231324p:plain