はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

MAVIC AIR

DJIのドローンは、業務用シリーズがPHANTOM 4、一般向けなシリーズがMAVICとブランドが分かれています。一般向けにはもっと小型のSPARKもありますが、本格的に使うならばMAVICを選択したいものです。

www.dji.com

 

現在、MAVICには、「PRO」と「AIR」に2つのタイプがあります。名前からするとPROの方が上位機種のように思えますが、2018年1月に発売されたばかりのAIRはPROに勝るとも劣らない機体であるといわれています。

スペック比較

それでは基本的なスペックで両者を比べてみましょう。

項目 MAVIC PRO MAVIC AIR
価格 129,800円 104,000円
重量 743g 430g
最大飛行時間 27分 21分
最大速度 65km/h (Sモード)
36km/h (Pモード)
68.4km/h (Sモード)
28.8km/h (Pモード)
最大伝送距離 モバイルデバイス:80m
送信機:4000m~7000m
モバイルデバイス:80m
送信機:500m~4000m
カメラ 3軸ジンバル付き
1200万画素 1/2.3インチCMOS
3軸ジンバル付き
1200万画素 1/2.3インチCMOS
最大動画解像度 4K 30fps 4K 30fps
ビデオビットレート 60Mbps 100Mbps
動画伝送方式 OcuSync 拡張Wi-Fi
動画遅延 160~170ms 170~240ms
SDK あり あり

 

両社の大きな違いは、最大伝送距離と動画遅延になります。MAVIC PROはドローンを視界にとらえて操縦するだけではなくドローンが見えないくらいの距離であっても映像を見ながら操縦することを想定したスペックになっています。一方のMAVIC AIRはそこの部分は少しライトな仕上がりになっていますが、全体的な基本性能はMAVIC PROと同等といえるでしょう。

つまり、ドローンを視界にとらえられる範囲で楽しむならば、AIRというのは最善の選択になるかもしれません。

SDK

開発者ならば自分で飛ばすだけではなくプログラムにより操作してみたいと思うと思います。

https://developer.dji.com/mobile-sdk/

PROもAIRSDKが用意されています。

SDKでできる機能としては

  • 上昇下降
  • 各種センサーデータの取得
  • 障害回避
  • カメラとジンバルのコントロール
  • ライブビデオストリーミング
  • 画像ストレージのアクセス
  • ウェイポイント、ホットポイント、フォローミー機能
  • バッテリーとリモートコントローラーのステータス表示と制御

 

SDKにはiOS用とAndroid用があるので、次回は、ダウンロードしたSDKをXamarinから使う方法を紹介したいと思います。

AndrodでGoogle Playに公開するときのSDKバージョン制限について

android-developers.googleblog.com

2018年8月以降

新規登録は、ターゲットSDKとしてAPIレベル26 (Android 8.0以上) が必須となります。既存アプリについては従来通りでもまだ大丈夫です。

2018年10月以降

上記に加えて、既存アプリのアップデートもターゲットSDKとしてAPIレベル26 (Android 8.0以上) が必須となります。

 

アップデートしないときはお目こぼしのようですが、現在提供中のアプリの更新を行わないというのも考えられませんので、既存アプリの名前を変更するなど(だとしても10月までにやらないといけない)して提供をキープして、主流派APIレベル26でということになるのでしょうか。

Androidアプリの有識者の方、ぜひ、教えてください。

 

2018年8月:APIレベル26(Android 8.0以上)をターゲットにするために必要な新しいアプリ。
2018年11月:APIレベル26以上をターゲットにするために必要な既存のアプリのアップデート。

Xamarin.Forms 2.xと3.0の違い(Xamarin.Forms.Application.Current.Resources)

App.csのコンストラクタで、Xamarin.Forms.Application.Current.Resourcesの初期状態が、Xamarin.Forms 2.xとXamarin.Forms 3.0では異なっていました。

2.x:null

3.0:not null

問題点

そのため、nullだったらCurrent.Resourcesに項目をAddするようなロジックにした場合、2.xでは正常に動作し、3.0ではAddしないため、XAML

BackgroundColor="{StaticResource BorderBrush}"

のような参照をしていると、そこで実行時エラーになってしまいました。

対策

if (Xamarin.Forms.Application.Current.Resources == null || Xamarin.Forms.Application.Current.Resources.Count == 0)

のようにCount判定も追加する。

Xamarinの共有プロジェクトでXamarin.Forms 3.0を使う

Xamarin.Formsも3.0となり、魅力的な機能がさらに追加されました。

主な新規のは次のようなものがあります。

  • FlexLayout
  • ResourceDictionary
  • 右から左(アラビア語など)のサポート
  • CSS StyleSheet
  • Visual State Manger

Microsoft XAMLではおなじみの「ResourceDictionary」や「Visual State Manager」のサポートもうれしいですが、「FlexLayout」と「CSS StyleSheet」のサポートも魅力的ですね。

例えば、FlexLayoutはコンテンツを折り返しならが横方向に並べてくれるレイアウトで、Gridのようにあらかじめ縦横のマス数を指定しなくてもいいので、可変数のコンテンツを効率よく表示するのに適しています。従来であれば、ListViewのように横幅が一定の1列リストなどしか方法がありませんでしたが、タイル状に表示することが可能になりました。

Xamarin.Forms Layout Types

 

新規プロジェクトでのXamarin.Forms 3.0の指定

Visual Studio 2017 (15.7.2)で新規に作成したプロジェクトでXamarin.Forms 3.0を使う方法を紹介します。Xamarin.AndroidとXamarin.iOSに共通のロジックは.NET Standard 2.0でDLL化して共有するのではなく、共有プロジェクトでソースコードレベルで共有するスタイルにします。

image

そのためには、CrossPlatform - Xamarin.Formsテンプレートを選択して、空のアプリで「共有プロジェクト」を選択します。

image

 

この方法で作成したプロジェクトでは、Xamarin.Formsは最初から3.0が設定されています。Xamarin.Formsもnugetパッケージとして提供されていますから、ソリューションエクスプローラーでAndroidのプロジェクトの[参照]フォルダを右クリックして[Nugetパッケージの管理]メニューを選択して、使用されているnugetパッケージのバージョン確認してみましょう。

image

Xamarin.Forms 3.0のnugetパッケージの最新化

テンプレートのXamarin.Forms 3.0は3.0.0.482510ですので、その後に新しいものがでている場合があります。今回も、2018/06/05に3.0.0.530893がでているので、必要に応じてnugetパッケージん更新をしましょう。更新していいかどうかの判断基準は一概にはありませんが、リリースノートなどで判断するのがいいでしょう。

https://developer.xamarin.com/releases/xamarin-forms/xamarin-forms-3.0/3.0.0/

 

Xamarin.Androidのサポートライブラリの最新化

Xamarin.Androidの場合、さらにXamarin.Android.* (サポートライブラリ)のnugetパッケージのバージョンをどうするかも考える必要があります。

テンプレートで指定されてるサポートライブラリのバージョンは、25.4.0.1となっており、この時の依存関係にあるMonoAndroidバージョンはv7.0となっております。

2018/6/6現在に対応している最新MonoAndroidバージョンはv8.1ですので、最新のものを使うなら、サポートライブラリを最新のv27.0.2にします。

 

サポートライブラリとAndroid SDKのバージョンの関連

サポートライブラリのバージョンを更新してMonoAndroidのバージョンが変更されたときは、該当するAndroid SDKがイントールされている必要があります。

たとえば、サポートライブラリをv27.0.2にしたいのであれば、事前にAndroid SDK ManagerでSDK 8.1がインストールされていることを確認してください。

image

該当するSDKバージョンがないとnugetでサポートライブラリのバージョンを更新するときにエラーとなります。

image

ターゲットフレームワークの関連

Android SDK v8.1がインストール出来たらプロジェクトのターゲットフレームワークAndroid 8.1にします。

image

こちらターゲットAndroidバージョンとは別となります。もし(そんなタイミングはすくないでしょうけれど)、ターゲットを最新OSにするのを待ちたいときは、ターゲットAndroidバージョンを明示的に指定することも可能です。

image

2つ指定するのが面倒であれば、SDKのバージョン=ターゲットAndroidバージョンにする「SDKバージョンを使用したコンパイルの使用」という指定もあります。

image

 

Xamarin.Formsで画面を定義してみよう

それでは試しにFlexLayoutを使った画面を定義してみましょう。

画面定義は、AndoridとiOSで共通化できるところは共有プロジェクト側に記載します。

image

>|html|
<!--?xml version="1.0" encoding="utf-8" ?-->
<contentpage x:class="XamarinForms3Sample.Views.MainPage" xmlns:local="clr-namespace:XamarinForms3Sample.Views" xmlns:converter="clr-namespace:XamarinForms3Sample.Converters" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns="http://xamarin.com/schemas/2014/forms">
        
    <grid>
        <scrollview>
            <flexlayout justifycontent="SpaceAround" wrap="Wrap" x:name="Flexbox">
                <img />
            </flexlayout>
        </scrollview>
        <activityindicator x:name="activityIndicator" verticaloptions="Center" isrunning="{Binding IsBusy}">
    </activityindicator>
</grid>
||<

Modelなどのロジック部分も完成して実行すればタイル状に画像が表示されるアプリの完成となります。

image

 

ところでFlexLayoutでViewModelとBindingするのはどうするだろう。

 

HoloLensにWindows 10 April 2018 Updateがきました

RS4ことWindows 10 April 2018 UpdateがHoloLensにもやってきました。

HoloLensへの適用は、April 2018 Update済のWindows 10 PCにHoloLensを接続し、Windows Device Recovery Toolを起動して行います。

image

 

HoloLensのアイコンは正しいけれど「電話」という表示は気にしないでおきましょう。そのうち「デバイス」とかに日本語訳も治らないかな。 

image

この画面の見方は、HoloLensのOSバージョンが10.0.17123.1004 (RS4 Preview)で、配布サーバー上のバージョンは10.0.17134.80 (RS4)ということで、更新できるということになります。

 

あとは、画面の指示に従ってサクッとインストールすれば完了です。

注意点追記:

Windows UpdateでのOS更新とは異なり、また、インストールとは言っていますが、リカバリーですからデバイスの中身丸ごと更新になるため、設定やアプリなどはきれいに消えてしまいます
その点、注意してください。

 

Cognitive Service - Speech Service Previewが登場しました

build 2018の初日である2018/5/7にSpeech ServiceがCognitive Serviceに追加されました。

https://azure.microsoft.com/ja-jp/services/cognitive-services/speech-services/

 

あれ?音声認識ってもともとあったよね?とお気づきの方もいるとは思いますが、従来のものは、Bing Speech APIやCustom Speech Serviceですね。

Bing Speech API:20言語に対応した音声認識

https://azure.microsoft.com/ja-jp/services/cognitive-services/speech/

Custom Speech Service:音響モデルや言語モデル、ノイズ除去などに対応した音声認識

https://azure.microsoft.com/ja-jp/services/cognitive-servic

 

新しいSpeech Serviceは、Bing Speech、Custom Speech Service、Translator Speech APIを統合したものです。

  1. 一つのキーで
  2. 一つのSDK
  3. シンプルな価格で
  4. 単一のポータルからカスタマイズ可能で

というのが特徴です。

従来、「音声認識」についてはCustom Speech Serviceがありましたが、Speech Serviceでは「音声合成」もカスタマイズ可能になりました。

カスタマイズポータルは、http://customspeech.ai になっています。

※翻訳部分のカスタマイズは公式サイトからは判断つかなかったですが…

 

いま、比較表をつくっているのですが、buildの資料だと音声認識が28言語ってかいてあるんですが、その一覧がのっている資料がなくてちょっと困っているので、ここにあるよ!って情報をお待ちしております。

 

そうそうGAはいつなの?ってきいたら数か月だと思って!っていたのでGAにも期待sですね。4週間くらいでイテレーション回しているそうなので、なんか気になることがあったらタイムリーにフィードバックしてみるといいかもです。

HoloLens開発のためのUnityおよびMRTKのバージョン(2018/05/09現在)

UnityとMRTKのバージョンはどれをつかえばいいのかわからなくなる時があるのでメモ。

 

UnityはUnty 2018もでていますが、2018/04/30に提供が開始されたUnity 2017.4.2f2。

http:// https://unity3d.com/jp/unity/whatsnew/unity-2017.4.2

 

MRTK (Mixed Reality Toolkit for Unity)は、2017.2.1.4 Patch Release。

github.com