2019年7月9日火曜日

【Microsoft Azure】 Azure Kinect Sensor SDK on Linux っていうか Ubuntu 18.04 にインストールしてみる

Azure Kineck DK が発売されたので、SDKを準備してみます@Ubuntu

なお、Windowsでの準備はこちらのぶちぞーさんのブログをどうぞ。

SDKは現時点ではUbuntu18.04(bionic)のみ対応になります。
詳しくは公式ドキュメントをご覧ください。

SDKをインストールする前に、Microsoftのパッケージリポジトリを参照する必要があります。

リポジトリの設定から行いましょう。
なお、ここからはターミナルからコマンドを入力するスタイルで参ります。
面倒なので管理者権限で行なっていますが、良い子はsudoを使いましょうね。
# curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
# apt-add-repository https://packages.microsoft.com/ubuntu/18.04/prod   

64bit環境ではi386アーキテクチャをサポートしていない旨が表示されますが、問題ないので続けます。

準備ができたので、まず k4a-tools をインストールします。
このパッケージは Azure Kinect ViewerAzure Kinect RecorderAzure Kinect Firmware Tool が含まれます。
# apt install k4a-tools                                                         

インストールが終わったら、次は開発用のヘッダーを含むライブラリをインストールします。
# apt install libk4a1.1-dev                                                  

これでインストールは完了です。

ここからはデスクトップが必要になりますので、コマンドはデスクトップアプリのターミナルなどから入力します。

早速、Azure Kinect Viewer を起動してみましょう。
ターミナルで以下のコマンドを入力するとウィンドウが開きます。
# k4aviewer                                                                           














こちらも実機がないので、レコーディングされたデータを再生。



















Perfomance Counters も出ます。




















なお、Ubuntu 18.04 OpenGL が古いのか、3D表示にすると「GLSL 4.30 is not supported.」で落ちます。
対応するには自前でOpenGLをコンパイルする必要がありますので、こちらを参考にコンパイルしてみてください。
#うちのグラボがしょぼいからかもしれないが


一通り動きそうなので、実機を楽しみに待つことにします。

2018年10月2日火曜日

【Microsoft Azure】Azure IoT Hub と相性の良さそうなデバイスを独断と偏見で

IoTというとラズパイがまず出てくるようになって久しいですが、3になってからは消費電力も多く、実質省電力PCになってきているようです。
本来IoTデバイスに求められるのは、省電力でネットワーク接続ができることではないだろうかと思うのですがどうなんでしょう。

という訳で、Azuere Sphere も手元に届いたので、Azure IoTを利用する観点から、自分が関わったりしているものを含めて技適も通ってるもの3つをピックアップして独断と偏見で比較してみようかと思います。

デバイス
M5Stack(ESP32)
MT3620(Azure Sphere)
特徴
ディスプレイとバッテリーが一体化している。
セキュリティ確保を目的としたAzureSphereOSを搭載。
Wi-Fi機能をもち、Luaプログラムが実行できるSDカード。GPIOを利用してマイコンとして利用可能。
価格
4,490円(スイッチサイエンス)
9,800円(秋月)
4,410円(Amazon公式)
開発OS
WindowsMacOSLinux
Windows
テキストファイルが扱えれば何でも
開発言語
Processing
C++
Lua
開発ツール
Arduino IDE
Visual Studio
テキストファイル
Azure IoT SDK
GitHubにある(←私が作ったw)
備考
基盤はケースに入っている。拡張センサーはGroveなどでも接続できる。
基盤むき出しの開発キット。実は Device Provisioning Service に対応している。
SDカードなのでGPIOピンへの接続は別途基盤が必要


なお、ESP32は開発用のESP-WROOT-32というパッケージだともっと安く買える(もちろん基盤むき出し)ので、頑張って探してみてもいいかもしれません。

Azure Sphere OS は手元にデバイスがあるのでいろいろいじってみてまとめたいと思います。
シリアルコンソールからログインできないのは若干面白みに欠けますが...

2018年8月16日木曜日

my bloody valentine 2018/08/15 ToyosuPIT @Tokyo, JAPAN

SET LIST


i only said
when you sleep
new you
new song 2
you never should
honey power
new song 1
cigarette in your bed
only tomorrow
only shallow
what you want
thorn
nothing much to lose
who sees you
to here knows when
slow
soon
wonder 2
feed me with your kiss
you made me realise


15日は2013年の東京国際フォーラム以来の単独ライブでした。
2008年のFujiRock以降だいたいの公演見てるので、今回も参戦。

ケヴィンがバーガンディーミストのJaguarとかHiWattのアンプ使ってたり。
なお、彼のギターに関してはこちらにFenderのインタビューがあります。

Jazzmasterレジェンド、ケヴィン・シールズとメインギター。

サポートのキーボード/ギターのJen Macroもいい感じで馴染んでます。
HURTLiNGというバンドをやってて、ボーカル/ギターです。
浮遊感あるバンドですので、一聴の価値ありです。

野太いビリンダコールに、ビリンダがたまに反応してたり。
Marshall2台+Vox(たぶんAC30)2台のアンプ鳴らしてあちらも轟音。
なお、途中弾いてたシンセはたぶんJunoか。

デビー姐さんが相変わらずのかっこよさでベース弾きまくり、コーラスも綺麗で。
RDとおそらくオーダーメイドのJaguarベースと、DevidedBy13のヘッド2台にMarshallのキャビ2台でこちらも強烈。
wonder2ではFender Jaguarを使用。

コルムさん、AbbyRoadの頃のジョージ・ハリスンみたいに見えました(個人的感想)が、プレイは相変わらずキース・ムーン。
前回はPremierだった気もしますが(ちょっと覚えてない)、今回はLudwigのブルースパークル。
wonder2のギターはデビーと同じくFender Jaguar。
それ用なのか小さなVoxのコンボも置いてあった。

新曲は2曲。
1曲はピストルズみたいなコード進行のパンクかと思いきや、真ん中でNothing Much To Loseのイントロみたいになったり。
もう1曲は6/8のゆったりした浮遊感のある感じ。
予告されてるEPの曲でしょうかね。

なお、20曲もやったのは驚きでした。
12〜14曲ぐらいかと思ってましたが、新曲とmbvの曲を加えて、今までのライブの定番も全てやるとこの曲数ってことでしょう。

個人的には new you のケヴィンが弾くトレモロサウンド(おそらくBOSSのPN2だと思われる揺れ方)が気持ち良い音でした。
思ったよりペダルが多くない印象でしたが、残念ながら足元を見れなかったので確認できず。

wonder2ではお約束の全員ギター。
最後は言わずもがなのNoisePitだけど、聞く側がすっかり慣れてきたせいかいい感じのサイズでケヴィン先生切り上げてたように見えましたw
なお、ノイズ終る時の「ケヴィンがデビーを見る→デビーがコルムと合わせてベースを高く構えて振り下ろす→曲に戻る」瞬間が大好きです。
曲の終わりに、ケヴィン先生最後のノイズをカマしてきたのが悪戯っぽくてツボでした。

17日のSonicManiaは90分ぐらいのようなので、また違うセットになるのでしょうか。
確認がてら次も行ってきます。

2018年6月12日火曜日

【Microsoft Azure】ESP-WROOM-32 から Azure IoT Hub に接続してみる

最近勝手にあらゆるデバイスを Azure IoT Hub に接続するキャンペーンをしています。
一応前提として、MacOSXでの日本語環境で開発します。

今回は、Espressif Systems の ESP-WROOM-32 という無線通信モジュールから接続してみます。
https://www.switch-science.com/catalog/3156/

ESP-WROOM-32は、Arduinoではないのですが、Arduino IDEで開発ができます。今回は開発キットである ESPr Developer 32 を使います。
https://www.switch-science.com/catalog/3210/

セットアップ方法については以下を参照してください。
http://trac.switch-science.com/wiki/esp32_setup

それでは、Arduino IDE から、Azure IoT Hub の GetStartedサンプルを使って接続してみます。

Arduino IDE を立ち上げて、ボードの設定をします。
「ツール>ボード>ESP32 Dev Module」を選択します。



次に、シリアルポートの設定を行います。
「ツール>シリアルポート>/dev/cu.SLAB_USBtoUART」を選択します。




設定が終わったら、サンプルからAzure IoT Arduinoのスケッチを開きます。
「ファイル>スケッチ例>ESP32 Azure IoT Arduino>GetStarted」を選択します。





開いたサンプルの中の、以下の4箇所の値を設定します。
・DEVICE_ID(9行目):IoT Hubで設定したデバイスID
・ssid(13行目):接続するWi-FiアクセスポイントのSSID
・password(14行目):Wi-Fiパスワード
・connectionString(19行目):IoT Hubで設定したデバイスの接続文字列

設定したら、コンパイルして書き込みます。
以下の「⇨」ボタンを押すとコンパイル、デバイスへの書き込みを行い、プログラムを実行します。



プログラムの実行状況を確認するために、ターミナルからデバイスへシリアル接続をして確認します。
screenコマンドを実行するとこんな感じになると思います。
{"deviceId":"esp32", "messageId":270, "Temperature":24.000000, "Humidity":87.800003}
Info: >>>IoTHubClient_LL_SendEventAsync accepted message for transmission to IoT Hub.
Info: >>>Confirmation[269] received for message tracking id = 269 with result = IOTHUB_CLIENT_CONFIRMATION_OK
Send Confirmation Callback finished.
{"deviceId":"esp32", "messageId":271, "Temperature":25.000000, "Humidity":57.700001}
Info: >>>IoTHubClient_LL_SendEventAsync accepted message for transmission to IoT Hub.
Info: >>>Confirmation[270] received for message tracking id = 270 with result = IOTHUB_CLIENT_CONFIRMATION_OK
Send Confirmation Callback finished.



確認できたら、「control+a」を押した後に「k」を押してシリアル接続を中止します。

2018年5月19日土曜日

【Microsoft Azure】OpenBlocks IoT で Azure IoT Edge を動かしてみる

OpenBlocks IoT が Azure IoT Edge に対応したので、早速試してみましょう。

OpenBlocks IoT に関してはこちらをご覧ください。
https://openblocks.plathome.co.jp/products/obs_iot/vx2/

事前に準備しておくことは、以下のとおりです。

・OpenBlocksの初期設定とネットワーク接続
・AzureでIoTHubを作成しておく

上記の設定が終わったら、IoT Edgeを使うための設定を行います。


IoTHub側ですが、ポータルにログインしてメニューより「IoT Edge (preview)」を選びます。
(本日はまだプレビュー状態です)


次はデバイスを追加します。右上にある「+ Add IoT Edge Device」をクリックします。



任意のデバイスID(半角英数)を入力したら追加します。(今回は「ob」としてみました)
なお、このデバイスIDはそれぞれのデバイスに割り当てるもので、識別子となります。


追加されると、一覧に表示されます。






IoT Hub の設定はここまでです。

次は、OpenBlocksの管理画面からAzure IoT Edgeを導入します。
基本的には「iotedgectl」コマンドとWebGUIツールがインストールされます。

設定したIPアドレスでWebの管理画面へ接続します。
ポート番号は880です。






「メンテナンス」タブを開いて「機能拡張」で Azure IoT Edge を追加します。
実行ボタンを押すと機能拡張をインストールします。数分かかります。


インストールが終わったら再起動します。




再起動後にログインして、「サービス」タブから「Azure IoT Edge」のリンクをクリックします。



Azure IoT Edge のセットアップをします。
基本的には「接続文字列」のみ設定します。



接続文字列は、IoT Edgeのデバイスのページにある「接続文字列」(特に問題なければプライマリー)をコピーしてきます。(右のコピーボタンをクリックします)





文字列をコピーしたら「実行」ボタンを押してセットアップします。
このあたりは、バックエンドで「iotedgectl setup」コマンドを実行しています。




セットアップが終わったら、IoT Edge のエージェントを実行します。
「Azure IoT Edge」タブの中の「Edge状況」の画面で、「起動」ボタンをクリックします。
バックエンドで「iotedgectl start」コマンドが実行されます。
数分かかります。




表示がかわります。




起動が終わり正常に接続されると、Azureポータルの IoT Edge のデバイスの画面の
「Edge Runtime Response」の表示が「Connected」になります。







2018年3月7日水曜日

【Microsoft Quantum】Q#をMacOSXで動かしてみようではないか

Q#は、Microsoftが開発した量子計算言語です。
詳しくは戸倉彩さんのブログで解説があります。

もちろん、私はMacOSXで動かすわけですが、なんとMac向けSDKもリリースされています。
オリジナルのドキュメントはこちらです。

なお、動作環境として、以下の説明があります。
・AVXを使うのでSandyBridge以降を使った方がいい(そうじゃなくても動くとは思うけど)
・いくつかのサンプルはUIの関連でnpmを使うよ
・Pythonは3.6以降

早速、最新のVisualStudioCode(以下VSCode)をこちらからダウンロードしてインストールします。
(同じ手順でLinuxでも使えます)

ダウンロードして解凍後、私はアプリケーションフォルダに移動して使っています。

ダウンロード後、起動して更新を確認します。
Q# Developer Kit は最新のVSCode(確認時には1.20.1)が必要です。

次に、Microsoft Quantum Development Kit for Visual Studio Code Extension をインストールします。
こちらのサイトからインストール作業をすすめます。










Install(赤で囲んだ部分)をクリックするとVSCodeが起動します。
以下の画面が表示されると思うので、インストールをクリックします。







インストール後、Q# Development Kit project template をインストールします。
ここから先はターミナルです。

dotnet new -i "Microsoft.Quantum.ProjectTemplates::0.2-*"

これで環境設定は終わりです。
このままgithubにあるチュートリアルのコードを実行してみましょう。

githubからプロジェクトをクローンします。

$ git clone https://github.com/Microsoft/Quantum.git

クローンしたプロジェクトに移動し、サンプルのTeleportationを実行してみます。

$ cd Quantum/
$ cd Samples/Teleportation/
$ dotnet run
Round 0: Sent True, got True.
Teleportation successful!!

Round 1: Sent True, got True.
Teleportation successful!!

Round 2: Sent False, got False.
Teleportation successful!!

Round 3: Sent False, got False.
Teleportation successful!!

Round 4: Sent False, got False.
Teleportation successful!!

Round 5: Sent False, got False.
Teleportation successful!!

Round 6: Sent True, got True.
Teleportation successful!!

Round 7: Sent False, got False.
Teleportation successful!!



Press Enter to continue...

なお、Teleportationは、実行するたびに実行結果が異なります。
Teleportationは量子テレポーテーションをシミュレーションしたものです。

案外簡単にできますので、ぜひ興味をもっていただきたいです。
なお、4月に勉強会を予定してます。こちらで発表する予定です。







2017年10月18日水曜日

【Microsoft Azure, DeepLearning】Gluon API を Azure Cloud Shell で使う

10/12に、AWSとマイクロソフトが深層学習ライブラリ「Gluon」を発表しました。
http://www.businesswire.com/news/home/20171012005742/en/AWS-Microsoft-Announce-Gluon-Making-Deep-Learning

Gluon API は、githubでプロジェクトが公開されています。
https://github.com/gluon-api/gluon-api

今のところApache MXNetをサポートしていますが、近いうちに Microsoft Cognitive Toolkit もサポート予定です。

Pythonが動作すれば動かせそうなので、ここはひとつ、Azure Cloud Shell で動かしてみましょう。(UbuntuだからもちろんVMでもオンプレでも同様に使えます)

まず、AzureポータルでCloudShellを起動します。
右上の「>_」をクリックすると、ページの下にターミナルが立ち上がります。



次に、pip3でMXNetと関連するパッケージを導入します。
なお、アクセス権の問題で「--user」をつけてコマンドを実行してください。

$ pip3 install mxnet --user

インストールが終わったら、手書き文字認識のデモを動かしてみます。
githubのチュートリアルは Jupyter Notebook用のファイルなので、以下のページのPythonコードをコピペしてCloudShellにコードを置きます。
以下のように実行すると、学習データをダウンロードして実行します。(実行結果のスコアは環境によって異なります)

$ python3 sample.py
Downloading /home/takeshi/.mxnet/datasets/train-images-idx3-ubyte.gz from http://data.mxnet.io/data/mnist/train-images-idx3-ubyte.gz...
Downloading /home/takeshi/.mxnet/datasets/train-labels-idx1-ubyte.gz from http://data.mxnet.io/data/mnist/train-labels-idx1-ubyte.gz...
Downloading /home/takeshi/.mxnet/datasets/t10k-images-idx3-ubyte.gz from http://data.mxnet.io/data/mnist/t10k-images-idx3-ubyte.gz...
Downloading /home/takeshi/.mxnet/datasets/t10k-labels-idx1-ubyte.gz from http://data.mxnet.io/data/mnist/t10k-labels-idx1-ubyte.gz...
Epoch 0. Current Loss: 0.13201400637626648.
Epoch 1. Current Loss: 0.14284838736057281.
Epoch 2. Current Loss: 0.015998387709259987.
Epoch 3. Current Loss: 0.1412399709224701.
Epoch 4. Current Loss: 0.01220973301678896.
Epoch 5. Current Loss: 0.020301349461078644.
Epoch 6. Current Loss: 0.008270819671452045.
Epoch 7. Current Loss: 0.001500518061220646.
Epoch 8. Current Loss: 0.0009114982676692307.
Epoch 9. Current Loss: 0.006475736387073994.

ちょっとしたことがCloudShellで出来ちゃいました。