2018年1月10日水曜日

ROSを使ったリモートシャットダウン

最近ROSでロボットを作っていて、電源OFFが少し煩わしいように思ってきたのでここをROSで改良します。

今私の環境では手元のPCとロボット に積んでいるRaspberry Piがあります。Raspberry Piは電源を繋げると勝手にONになります。しかしOFFにするときは
  1. sshでログイン
  2. パスワードを入力
  3. $ sudo shutdown now
  4. パスワードを入力
と4行を書く必要があります。

shutdownを行うROSnodeを書いて、ROSのリモートランチを使えば1行だけで記述をすることが出来ます。
しかしshutdownはsudo権限が必要なので単純に
system("sudo shutdown now");
とCで書いても実行されません。インタラクティブにパスワードを求められるのでコマンドでどうにかすることはできません。shutdownをユーザー権限でできるように権限の設定を変えても良いのですが、面倒な感じがします。実は"sudo -S"とやると標準入力からパスワードを入力できます。そこで以下のノードを作って、リモートから実行すると電源OFFが簡単にできます。

#include <stdlib.h>
int main(void)
{
    system("echo 'raspberry' | sudo -S shutdown now");
    return 0;
}

0 件のコメント:

コメントを投稿