かわロボ技術賞 テクノクエスト
2017/3/25に実機審査が行われた、センサを活かしたロボットの大会です。
大会のポイントとしては以下となります。
- 別室からロボットを操作
- 配置物の位置を把握
- ペットボトル内の温度を確認
まず一番大きな点は、別室でロボットを操作することです。
ロボットを直接見ることができないので、カメラを搭載して操縦することが基本となります。
今後使えるアイテムをまとめていきたいと思います。
アクションカムの映像をパソコンで表示する。
アクションカムの優位点は、やはり画像処理(手ぶれ補正)でしょう。
ロボットの移動の振動くらいでは映像がぶれません。
しかし弱点として、アンドロイド用アプリは公式で公開されていますが、
PC用ライブビューソフトは公開されていません。
そこで、ソフトを作って動かしてみました。(開発言語C#)
ソースが汚いので全公開はできませんが、手順を説明していきます。
API:アプリケーションインターフェースが、公式より公開されています。
残念ながらサンプルはAndoroid又はiOS向けとなっており、Windows環境では使用できませんが、
付属している仕様のPDFが重要になります。
アクションカムはSSDPに対応しているため、URLを検索することができます。>参考URL
そこで、機器の情報がまとまったdd.xmlを取得するのが1歩目になります。
ただし、PCには複数のネットワークアダプタが接続されていることがあります。
違うネットワークでSSDPを使った検索を行っても、正常な回答はありません。
dd.xmlには、APIを使用するURLが記載されています。
SSDPはUDPで送受信可能です。
送信IPアドレスを239.255.255.250とし、ポート1900を使用するのが特徴です。
この辺りは参考URLを見るといいでしょう。
ライブビューやほかの操作を行うためには、APIを使用するURL、アプリケーションURLに対して、
JSON形式のデータを送る必要があります。
JSON形式とは、ある変数と値のセットをやり取りするための形式です。
主にmethod,params,id,versionの情報を送る必要があります。(仕様のPDFに書いてあります)
JSON形式のデータは、HTTPで送ります。
C#であれば、httpClientクラスが使用できます。
DefaultRequestHeaderでJSON形式を指定し、dd.xmlで取得したアプリケーションURLに対して送受信を行います。
ライブビュー開始コマンドstartLiveviewが通れば、ライブビュー画像のURLが取得できます。
ライブビューを開始できると取得できるURLに対して、WebRequest及びStreamコマンドでbyte形式のデータを取得します。
byteデータは、画像情報とJPEGのデータが入っています。
注意点としては、一度のStreamのreadで、画像情報だけだったり、JPEGのデータだけだったり、JPEGのデータが分割されていることがあります。
画像情報は136バイト固定です。
JPEGのデータは可変長ですが、画像情報にバイト数が入っています。
画像情報は頭のデータが、0xFF,0x01か0x00と決まっているのに対して、
JPEGのデータは、0xFF,0xD8と決まっています。
この辺りを使って、バッファに取り込んだ後、JPEGの識別などを行う必要があります。
正しいJPEGのデータが取得できれば、あとは表示するだけです。
Visual Studioであれば、フォームアプリケーションのイメージボックスあたりを使うといいです。
UDP,SSDP,XML,HTTP,JSON,JPEGといろいろな形式や規格を扱わないといけないため、
ちょっと勉強するのも大変ですが、API発見から実装まで2週間弱でできましたので、頑張ってください。
Raspberry Piを使用した映像転送
現在検討中。
用意するもの
Windows 10のPC
Raspberry Pi 3
microSDカード 16G(PC用のリーダライタも必要)
カメラモジュール
画面(HDMI対応または専用ディスプレイ)
OSにはWindows 10 IoT Coreを使用したいと思います。
まずはmicroSDカードにOSを準備します。
Windows10のPCで、
Raspberry Piの公式HPから、Downloadを選び、
THIRD PARTY OPERATING SYSTEM IMAGESの中からWindwos 10 IoT Coreを選びます。
Raspberry PI公式HP
Microsoftのページに飛びますので、ハードウェア(Raspberry Pi 3)と、
インストールメディア、OSを選びます。
今回はNOOBSを使わず直接BlankSDを使用したいと思います。
IoT CoreとIoT Core Insider Previewが選べますが、
IoT Coreが安定版、Insider Previewが最新ビルドになっています。
次のページで、Windows 10 IoT Dashboardのダウンロードができます。
このソフトは確かWindows 10しかインストールできなかったと思いますので、Windows 10のPCが必要となります。
間違っていたら情報をください。
このソフトでSDカードにWindows 10 Iot CoreのOSのデータを準備します。
microSDを認識すると、ドライブでSDカードが選択できます。
Raspberry Pi3に設定したいデバイス名とパスワードを入力して、SDカードにインストールしてください。
設定がない場合は有線接続となります。
この方法を試した後、再起動するとエラーで停止したので、NOOBSを入れた後、OSでWindows 10 Iot Coreを選びましょう。
これでRaspberry Pi 3の起動が可能となります。
SDカードをRasspbery Piに挿入し、電源を入れ起動すると初期設定が始まります。
NOOBSの場合、インターネットに接続する必要があります。
接続後、OSを選ぶとダウンロードが始まり、自動的にインストールされます。
結構長いです。使ったのはClass10のmicroSDでしたが、それでも10分以上です。
設定が終わると、簡単な情報が表示され、USBのマウスやキーボードが使えます。
歯車のマークからWiFiの設定ができます。
PCを接続しているネットワークに接続しましょう。
PCのWindows 10 IoT Dashboardから、自分のデバイスでアクセスできます。
Rasspbery Piを選んで右クリックすると選択肢が出ますので、Device Portalで開くを選びます。
ブラウザが開きログイン画面が表示されるので、名前はadministrator、パスワードは先ほど設定したものを使用します。設定してなければ「p@ssw0rd」になります。
するとDevice Portalが開きますので、いろいろな設定が可能です。
例えばデバイス名やパスワードの変更が可能です。
好きな名前に変更した後は、ソフトの開発を行います。
個人であれば無償で使用できる、visual Studio Communityが便利です。
ダウンロードしてインストールするときに、Iot Core関連のチェックマークを入れておきます。
特に、ユニバーサルWindowsアプリに関するツールは選択してインストールしてください。
インストール後(要再起動、ログイン)、Windows 10 IoT Dashboardをダウンロードしたページから進み、
Visual Studio GalleryでIot Core Project templateをダウンロードします。(visual studio 2015用もあるようですので、間違えないように)
この後visual Studioを起動して、ファイルから新規作成、プロジェクトを選ぶと、ユニバーサルWindowsとバッググラウンドのソフトのテンプレートを選ぶことができます。
まずはここまで。
最終更新:2017年06月15日 22:44