LoginSignup
5
3

More than 3 years have passed since last update.

AWS IoT ShadowとROSのDynamic Reconfigureを同期するノードを作った

Last updated at Posted at 2019-12-14

この記事はROSアドベントカレンダー 14日目の記事です。

こんにちは、WHILLの杉浦です。今年もアドベントカレンダーの時期がやってきましたね。
以前、ROSCon JP 2019で発表させていただいたのですが、AWS IoTのThingShadowとDynamic Reconfigureのパラメータを同期するノードを作りました。もっと早く公開する予定だったのですが、いい機会なのでROSアドベントカレンダーのネタにさせてください。

このノードは、他ノードのDynamic Reconfigureインターフェースにアクセスして、AWSIoT ThingShadowとパラメータを同期してくれるものです。
この仕組みを使うと、既にDynamic Reconfigureインターフェースを実装しているノードをすぐにクラウド対応することができます。今年1月にラスベガスで開催されたCES 2019で発表した仕組みも、この仕組みを使ってクラウドと連携しています。

フル動画はこちら http://www.youtube.com/watch?v=JVf-OTqWyKM

AWS IoT ThingShadowとは?

AWS IoTの機能です。自身でサーバーを用意しなくてもJSON形式でIoT機器のパラメータの保持および状態の管理を行ってくれます。またパラメータの先祖返りを防ぐ機能なども持っています。
AWSの他サービスとの連携が取りやすく、ThingShadowのパラメータによってLambdaを起動したりもできます。

仕組み

(ROSConJPで発表した内容とは微妙に異なります)
image.png

今回作ったdyn_reconf_shadowノードは設定ファイルに基づき、他ノードのdynamic reconfigureサーバーの要素をThingShadowと同期してくれます。
設定ファイルはYamlで記述します。設定ファイルではDynamic reconfigureのサーバー名と、どの項目を同期するかを指定できます。

動かしてみる

あらかじめ、AWS IoTでThingを作っておきます。Thing名はspecialdeviceとします。
AWS IoTでポリシーを作成した時に発行される証明書をダウンロードし、次の名前に変更して~/.awsiot以下に配置します。
- 公開鍵: certificate.pem.crt
- 秘密鍵: private.pem.key
- ルート証明書: AmazonRootCA1.pem

また、以下のような設定ファイルを適当な場所に作っておきましょう

config.yaml

dyn_reconfigures:
  /sample_dyn_server/testServer1:
    - int_param
    - str_param
    - double_param
  /sample_dyn_server/testServer2:
    - double_param

テスト用のDynamic reconfigureサーバーを起動します。roscoreは別ウィンドウで立ち上げておいてください。


$ rosrun dyn_reconf_shadow dyn_server_for_test.py

これを立ち上げると、それぞれ int_param,str_param,double_param,bool_param,sizeというパラメータを持ったdynamic reconfigureサーバー/sample_dyn_server/testServer1/sample_dyn_server/testServer2が起動します。

本体を立ち上げます

$ rosrun dyn_reconf_shadow sync.py _host:=<Your AWS IoT Hostname> _thingName:=specialdevice _dyn_reconf_args:=./config.yaml

はAWS IoTのコンソールのモノ、"specialdevice"画面にある"操作"から確認できます。おそらく、XXXXXXXXXX-ats.iot.ap-northeast-1.amazonaws.comのような形式になっているはずです。

rqt_reconfigureでDynamic reconfigureをGUIで見られるようにしましょう。
$ rosrun rqt_reconfigure rqt_reconfigureを開きましょう。

また、ブラウザでAWS IoTコンソールから、specialdeviceのShadowを開きましょう。

パッケージはこちら

GitHubから落としてcatkin_makeしてください。
rosdep installも必要です。
ros_dyn_reconf_shadow
https://github.com/WHILL/ros_dyn_reconf_shadow/

PR

現在WHILLでは 自動運転・障害物回避などの機能をもったパーソナルモビリティを用いたMaaSサービスを開発しています。
現在、MaaSアプリケーションとして空港利用者向けの移動サービスを世界各地の空港で展開する準備をしています。

インターネットが繋がった移動体をクラウドから操作してサービスを提供できる事ってなんだかワクワクしませんか?
このワクワクを一緒に共有できるクラウドエンジニア、アプリエンジニアを大募集中です。ぜひ一緒に働きましょう!お気軽にTwitter:@aquahikaまでリプライしてください。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3