Translate

2018年12月18日火曜日

Donkey Carにテレメトリ機能を搭載してみた

自動運転RCカーDonkey Carの走行中のスロットル値、アングル値をWeb画面で参照できるようにしたテレメトリを作ってみた。



左が操舵方向(アングル値)、右がスロットル値をあらわしている。

デバイス側であるDonkey CarはRaspberry Piであり、自律運転という機能上の制約でRaspberry Piへの負担はできるだけ下げておきたいため、通信負荷の低いMQTTを採用した。

ブローカは、テストには eclipse-mosquitto、本番には IBM Watson IoT Platformのライトプラン無料枠で動かしている。

 ソースコードは以下のリポジトリを参照のこと。

[GitHub] Donkey Telemetry
https://github.com/coolerking/donkeypart_telemetry 
[GitHub] Donkeypart Telemetry
https://github.com/coolerking/donkeypart_telemetry

Donkey TelemetryリポジトリがWebアプリケーション側で、Donkeypart TelemetryがDonkey Car上に搭載するパーツクラスが格納されている。



細かい話はGitHub上のドキュメントを参照のこと。



IoT Platform接続にpahoを使おうと頑張っていたが、IoT Platfromのクセ(仕様)が強いので、めんどくさくなりibmiotfパッケージを使った。

テレメトリの場合はDonkey Carがpublisher側としてパーツを実装すればよいが、運転情報をネットワーク経由で取得する場合はsubscriberとして実装しなくてはならない。
ただ、最新イメージをネットワークへ送信するプログラムも必要なので、外部オートパイロットは、もう少し考えないといけない。

あとIoT Platformではバイナリも送れると書かれているのだけど、ibmiotfパッケージはJSONデータを送るだけの実相しか無いので、イメージデータを送るために専用のMessageクラスやCodecクラスを作らないと駄目だった。ご注意を。






2018年12月5日水曜日

donkey tubclean 直後の連番再振り直しツールを作ってみた


donkey tubclean を実行すると、連番がとびとびになってしまい、たとえばpython manage.py train を実行すると、エラーになります。

とはいえtubcleanしないデータとしたデータを比較すると、トレーニング終了時間や実行時の自律運転の精度の向上は無視できません。

かといって連番をそのままつめればよいというわけでなくjsonデータ内のcam/image_array値にイメージファイル名が書かれています。
このためつめた分だけjsonファイルを更新する必要があります。

ということで連番をつめなおし、JSONのcam/image_array値も更新するツールを作成しました。

詳細は以下のGitHubを参照ください。
[GitHub] coolerking/tubarrange
https://github.com/coolerking/tubarrange


p.s.

..日本じゃ Donkey Car やってる人少ないから、需要がないかも..

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...