Dropbox

最近のレース用ドローンはFC(Flight Controller)にマイクロUSB端子が付いていてそれをパソコン、場合によっては携帯電話に接続して細かな設定を行います。現在、一番メジャーなFC用Firmwareであると思われるBetaflightを設定るするためのBetaflight Configuratorを使えるようにするまでに少々時間がかかったので、覚え書きです。

RTF(Ready to Fly)セットならば直ぐに飛ばせますが、それ以外の場合はBetaflightによる設定が必須だったりもします。

BetaflightはスタンドアローンなプログラムだけではなくChromeのもとで動くものもあります。使い勝手はどちらも同じです。USB接続したFCをシリアルポート(いわゆるCOMポート)として認識させるのが唯一の設定ですがWindowsでは少々分かりにくいところがあります。

Betaflight Configuratorの画面上に必要なドライバーのリンクが貼ってあります。macOSでFCの種類によってはドライバーを入れなくても大丈夫です。Tiny7の場合はCP210x Driversをドライバーリンクから導入しないとシリアルポートを認識しませんでした。この時High Sierraの場合はシステム環境設定/セキュリティーとプライバシー画面からSILICON LABSのドライバーに実行許可を与えなければなりません。

問題はWindows 10で構成しようとした時です。指定のドライバーをただ入れただけでは目的のCOMポートにはなりません。デバイスマネージャー(Windows 10だとWindowsアイコンを右クリックで見つかります)で見るとCP210xのUSBデバイスとしては認識されていますがCOMポートにはなっていません。ここからの手順ははっきりとは覚えていませんが最後はデバイスマネージャーでドライバーの手動更新を行って目的の構成になりました。その前にZadigによるドライバーの更新も行っているので、そちらも必須な気がします。またCOMポートに現れても違うドライバーだと動かないということもあります。最終的にはSilicon Labs CP201x USB UART Bridgeというドライバーで動いています。

正しいポートが設定されるとBetaflight Configuratorは自動的にポートを見つけてくれるのでConnectボタンを押せば使えるようになります。

手順を再現するのが難しい(面倒?)なので、詳しくは書きませんが以下のYoutubeが正解を示していると思います。英語で長々と話していますが画面を見ていれば何をやりたいかは分かると思います。

Making Flight Controller Connect Through USB by Project Blue Falcon

Gemini PDAの「かな入力」の不具合について(Android)

この問題は新しいGemini Keyboard(おそらくはバージョン1.0.21以上)をGoogle Playから導入すれば解決します。

Gemini PDA日本語かな入力ガイドもご覧ください。


一年前に申し込んだPlanet ComputersGemini PDAがようやく到着しました。ハードウェアの出来はすこぶる良いです。写真の通り日本語かなキーボードを選択しました。PCにおいては英語キーボードで「かな入力」を行う私としては、このサイズのデバイスで「かな入力」が出来ることは夢のような話でした。かってNokiaのQWERTYデバイス向けに日本語入力ソフトを作っていた時も本当はローマ字入力ではなく「かな入力」を実現したかったのですが、如何せんキートップの数が少なすぎて不可能でした。Gemini PDAではかって一世を風靡したPSION 5のキーボードを踏襲することによりそれが可能となりました。これは試さずにはいられません。

前置きが長くなりました。一年を経てやっと手にしたGemini PDA日本語キーボード版。さっそく使ってみてがっかりしました。一時間もたたないうちに明らかな「かな入力」の不具合が見つかってしまいました。それも致命的なものです。細かいことは置いといて入力方法がわかりづらいものを一つと明らかな不具合を二つ紹介しておきます。

使用しているIMEはATOKとGoogle日本語入力です。物理キーボードでGemini Keyboard Japaneseを割り当てています。

[ 分かりにくかったキーアサイン ]
– 小さい”ぁぅぇぉゃゅょ”の入力はAltキーを使用する。”っ”や”ぃ”はShiftキー併用だったので、しばらく悩みました。

[ 不具合 ]
1) “め”が入力出来ない。Alt+Mが”め”のはずですが何故か”ぬ”が入力されてしまいます。これはどうにもならない致命的なエラーです。字形が似ているので間違ったのでしょうね。

2) 濁点、半濁点を伴う文字列の変換が上手く行かない。ATOKとGoogle日本語入力では挙動が異なるが、どうも濁点と半濁点が単独の文字として扱われているように見える。

[ 解析 ]
結論としてはどちらもKey Character Mapの修正で回避出来ました。一つ目は単純に”め”と”ぬ”を取り違えているだけです。Gemini KeyboardのAPKを取り出してkeyboard_layout_japanese_gemini.kcmファイルの中身を見てみます。

key M {
    label: '\u3082'
    base: '\u3082'
    shift, capslock: '\u30FB'
    fn: '\u306C'
}

Mキーはこのように定義されています。\u306cというのは”ぬ”のユニコードです。ここを”め”にするためには\u3081にするだけで大丈夫そうです。

もう一つの問題、濁点と半濁点の扱いは、単純な話では無い気がしました。挙動から濁点、半濁点が単独の文字になっていることは想像出来ました。確認のために”ぱ”という一文字を入力したファイルを作成してバイナリーで表示してみるとe3 81 af e3 82 9aとなっていました。これは”は”と合成用の半濁点という二つの文字です。エディターなどは正しく”ぱ”と表示されます。合成用の半濁点なので当然ですし、なんら問題はないように思えます。ただし、実際の挙動を見るとATOKもGoogle日本語入力も一つの文字コードとしての”ぱ”UTF-8の場合e3 81 b1を期待しているように思えます。ユニコードの定義をまじめに解釈した場合IMEに責任があるように思えます。

かなりやっかいな問題に思えましたがネットをさまよってみるとAndroidデバイスに外部キーボードを接続して「かな入力」を行っている例がちらほら見当たります。「日本語106/109 かな入力対応キーボードレイアウト」というアプリケーションで実現できるようです。試してみると確かに動きます。Google Play上にあるアプリケーションの説明にある”余談”によるとATOKが濁点、半濁点の文字合成をしてくれていると書かれています。ということで、このアプリケーションのkcmファイルを調べてみたところ濁点には ‘\u309b’、半濁点には ‘\u309c’が使われていました。これは単独文字としての濁点、半濁点です。Gemini Keyboardでは、それぞれ合成用の濁点’\u3099’と半濁点’\u309A’になっています。

ユニコードの仕様としてはGemini Keyboardに使われているコードが正しい気もしますがATOKが動いてくれるのであれば、そちらに変更するしかありません。

key O {
    label:              '\u3089'
    base:               '\u3089'
    shift, capslock:    '\u300c'
    fn:                 '\u3099'
}

key P {
    label:              '\u305b'
    base:               '\u305b'
    shift, capslock:    '\u300d'
    fn:                 '\u309A'
}

これがオリジナルです。これを以下のように変更しました。

key O {
    label:              '\u3089'
    base:               '\u3089'
    shift, capslock:    '\u300c'
    fn:                 '\u309b'
}

key P {
    label:              '\u305b'
    base:               '\u305b'
    shift, capslock:    '\u300d'
    fn:                 '\u309c'
}

ということで、3か所の変更をkeyboard_layout_japanese_gemini.kcmに行いAPKを作り直して実機でテストしてみたところうまく動いてくれました。ただし濁点、半濁点の合成はATOKだけで行われますのでGoogle日本語入力では依然として問題は残っています。 ATOKでは、ほぼ思った通りに機能しました。Google日本語入力では何故かChromeやAndroid web browserのアドレスバーでは濁点、半濁点の合成が行われません。他の入力域では大丈夫でした。 若干その他の問題もありますので、今のところATOKがベストチョイスです。

キー数の制限から「かな入力」には色々なシフトを駆使しなければなりません。「かな入力」のメリットはローマ字に比べて打鍵数が少なくて済むので速いことですが、ややこしいシフトのためGemini PDAでの「かな入力」はあまり速くないです。普通に考えるとローマ字入力を使用しておくべきだと思います。

わたし個人としては問題は解決しましたが、正規に直してもらうためにまずはPlanet Computers Developer Forumにてレポートしました。果たして何かしらのアクションに結び付くのかどうか不明です。こういう問題の正式な報告先はどこなんでしょうね。<- 某この界隈で有名な人を介して中の人からコンタクトがありました。詳細ははっきりしてから報告しますが、仕事が速そうですし、良い方向に動きそうです。

#GeminiPDA

Telloはトイドローンながらプログラムを書いてドローンを制御する方法が用意されています。他のトイドローンには無い意欲的な試みで、わたしがTelloを入手して試したかった最大の理由です。最初、詳細が明らかになっていなくて、やきもきしましたが、いつの間にかRYZE社のDownloadページからドキュメントが落とせるようになっていました。必要なことがら、プログラムパッケージのダウンロードリンクなどが、このPDFドキュメントに記述されています。

得られるものはScratchによるプログラミング環境、Pythonによるサンプル、SDKドキュメントです。

まずはRYZE社の一押しであるScratchによるプログラミングを試してみましたので、紹介します。Scratchは子供向けにプログラミングの概念を教えるためのものです。グラフィカルなエディターでスクリプトを組んでいくものです。その中にTelloを操作するための部品が用意されています。文法やエディターの使い方を気にすることもなくスクリプトが組めますので、本当に子供でも容易にTelloを操作することが出来ると思います。

用意されている動作は単純で、離陸、着陸、上下の移動、前後左右の移動、回転だけです。Scatchと言えどもプログラミング言語ですので、ループ中で変数を変化させたりして動きを組み合わせて行くと、それなりに面白い動作をさせることが出来ます。

脱Mac計画 – Windows 10 WSL Ubuntuコンソールのフォント既定値

自宅デスクトップとして使用していたMac Miniがとうとう立ち上がらくなりIntel NUC + Windows 10で脱Mac計画実行中です。NUCちっさくて凄いとかWindowsも随分と使いやすくなったみたいな話は置いといて、ちょっと悩んだことを覚え書きとして書き残しておきます。

MacOSではコンソールを開くとUnixそのものなのでリモートで接続するLinuxとの親和性の高さが利点のひとつでしたが、いまやWindows 10にもWSLという機能が搭載されているのでLinuxそのものをシームレスに起動することができます。さっそくUbunutuを入れてコンソールを開くと確かにUbuntuなのですが、フォントが昔懐かしいMSゴシックです。プロパティでConsolasというフォントに変更すると良い感じになります。が、新規にコンソールを開くとMSゴシックになってしまいます。既定値を変更しても全く効果なし。

Ubuntuのコンソールの実態はWindowsのターミナルcmd.exeです。ターミナルを開いても同様にMSゴシックで開きます。レジストリーを確認しても既定値のフォントは期待していたものになっています、、、 なんか昔の記憶がよみがえって来ました。ターミナルのコードページが932で立ち上がると自動的にMSゴシックになってしまうのでした。

本当の解決策なのかどうか不明ですが設定/時刻と言語/日付、時刻、地域の追加設定/地域/管理/システム ロケールの変更/で現在のシステムロケールを「英語(米国)」に変更して目的のフォントが最初から使用されるようになりました。この設定はUnicode対応では無い古いアプリケーションで使用する言語を決めるものなので、私の使用環境ではこの設定で問題はないと思われます。

Telloの動画のサンプルはYouTubeで早くから公開していましたが、Full resolutionの写真が見たいという要請がありましたのでFlickrにアップロードしました。

セルフィー用途としては問題ない気がします。使用した携帯電話の種類での差異はあまり無いようです。

まずは屋外での写真です。広角カメラにあるような歪みが少しきつめに出ている気がします。
IMG_0002

逆光ながらちゃんと写っていますが、左奥の建物の上の方が歪んでいます。結構風に耐えて飛んでいたためかも知れません。
1517717444498

1517880450064

1517717858523

夜の室内で蛍光灯の灯りで撮影。暗いとホバリングも安定しないので、ピンぼけが多くなります。その中で写りの良いものをアップロードしました。
1519212404671

昼間、外からの光りが十分な部屋では綺麗な写真が撮影できます。
1519266233513

IMG_0022

IMG_0023

DJI/RYZE TELLOでゲームパッドを使う

Telloは携帯電話を使用して操縦します。ディスプレイの上にあるソフトウェアなスティックを使用しますが、これがなかなか難しく、ゆっくりとした操作ならなんとかなりますが、細かい動きは苦手です。そこでGamepadのjoystickを試してみることにしました。

Telloに関する情報は未だ不足気味で、どういったゲームパッド、ジョイスティックが使用できるのか今ひとつはっきりしていません。

[ iOS ]
おそらくはMFI対応であれば大丈夫です。DJIのビデオではGameSirの物が使われるようです。

わたしはsteelseries Stratus XLという古い物を使用しています。MFIかどうか今ひとつ不明ですが最新のファームウェアにすることによりiPhone/iPadに接続してTelloの操縦に使用することが出来ました。

ゲームパッドはBluetoothでペアリングだけすればTelloアプリケーションからは自動的に認識されすぐに使用できます。離陸、写真の撮影、動画の撮影、フリップなど必要な動作は全てゲームパッドで行うことが出来ます。

ジョイスティックを倒してから機体が反応するまでに少し遅れがあるような気がしますが、操作性は悪くないです。また時々接続が切れるのか、飛行中のTelloが一瞬止まるような動作があります。まあまあ全般的には良好に動作します。

注意) iPhone用として販売されているゲームパッドでMFI以外にもメジャーなものとしてiCade対応の物がありますが、これは今のところTelloでは動作しません。

[ Android ]
Android版のTelloアプリケーションにもゲームパッドを設定する画面はありますが、どういうゲームパッドが使用できるのか今のところまったく分かりません。いくつかのゲームパッドを試してみましたがまったく反応しませんでした。

[ FPVフライト ]
ゲームパッドを使用する目的のひとつとしてVRゴーグルを使用したFPV(First Person View, ドローンの視点)フライトがあります。結論としてはビデオがとぎれとぎれになるため満足に飛行することは出来ませんでした。詳細はビデオにまとめていますのでご覧ください。

支付宝(Alipay)も使える小米リストバンド Amazfit Cor

色々とリストバンドを試してきましたが、小米の新しいリストバンドAmazfit Corはなかなか良い製品です。わたしはリストバンドの通知機能を主に使用していますのでアクティビティトラッカーとしての評価はあまり出来ませんので予めお断りしておきます。

主な特徴は2つあります。ひとつ目は、中国における二大小額決済システムのひとつである支付宝(Alipay)の支払いがリストバンドだけで可能なことです。もうひとつは小型ながら視認性の良いカラー液晶パネル(1.23インチIPS液晶パネル)を備えていることです。

順不同で思いついたことを書き留めておきます。

– 大きさは一般的な小型のリストバンドです。やや厚みがあるような気はしますが重くは無いです。女性の腕には、やはり大きすぎる気がします。

– カラー液晶は見やすく、通知はアプリケーションのアイコンも表示されて分かりやすいです。通知を受け取った時は、そのまま画面を見れば内容が確認できます。しばらくすると通常のホーム画面に戻りますが、メニューから過去の通知として呼び出すことも出来ます。最新から10件ほどの通知を保管してくれています。

– リストバンド自体の言語は中国語ですが日本語の通知も表示できます。また携帯電話側のアプリケーションは完全に日本語化されています。

– 支付宝で使用するための設定は携帯電話の言語を中国語にしないと出てきませんでした。一度設定すれば日本語に戻しても大丈夫です。設定するとPOSレジで使用するための支払い用バーコードもしくはQRコードを簡単に表示出来るようになります。この時、リストバンド自体はネットワークに接続されている必要はありません。言い換えると支付宝のシステムにリストバンド自体が紐付けされてワンタイムパスワード生成器のように一定時間で更新されるコードを表示するものです。リストバンドではパスワードも生体認証もなくコードを表示できますので盗まれた場合は、即座に支付宝で紐付けを解除する必要があります。また、支付宝アプリケーションで一日の消費限度額を適当な金額に設定しておいた方が無難です。

– 腕を上げて時計を見る動作をすると自動的に液晶が表示されます。この機能は各種リストバンドに搭載されていますが、反応がとても良いので、本当に見たい時にちゃんと表示されるのでストレスを感じません。また、この機能を使うかどうか、また何時から何時までの間に使用するかが設定できます。寝ている間は自動的に表示する必要がないので無駄に液晶表示しないのがとても良いです。

– バッテリーの持ちはなかなか良いです。最初ですので通知も多め、画面を見ることも多い状態で、また心拍数の計測を一分ごとに行う設定で9日間使用できました。9日目に入って直ぐにバッテリー残が10%を切りホーム画面上に赤いバッテリーマークが表示されるようになりました。そのまま、ほぼ丸一日使用して充電しましたが、もしかすると10日目まで行けたのかも知れません。

心拍数は設定で計測間隔の調整や計測無しにも出来ますので使用方法によってはさらにバッテリーの持ちは長くなると思います。ただいま通知を少なめ、心拍数の計測無しで使用していますので、また結果が分かればこの記事を更新する予定です。
-> 節約モードで使用した場合、15日目にバッテリー残量が10%以下になり赤いバッテリーマークが出ました。まる2週間稼働できるの素晴らしいです。

DJI/RYZE TELLOでWiFi Extenderを使う

家庭へのWiFi設備の普及度は凄いことになっています。そのためマンションの庭でTELLOを飛行させると、どうかすると10mほど離れただけでWiFiの干渉があるというメッセージがTELLOの画面に現れます。WiFiアナライザーでTELLOの電波を見ると普通のWiFiルーターと遜色ない電波が出ています。どうも携帯電話側の能力に問題がありそうです。それを改善するためにWiFiエクステンダーを試してみることにしました。

使用したのはParrot Bebopユーザーにも実績のある小米WiFiルーター青春版(R1CL)です。これは小型軽量でモバイルバッテリーでも稼働できる便利なものですが、公式ページが見当たらないので現行製品では無いのかも知れません。ただし中国のネット販売サイトではまだ取り扱いがあるようです。

ひとつ問題があるのは、このルーターをWiFiエクステンダーとして構成した場合、iPhone/iPadではうまく接続出来ません <-その後うまく行きました。Android端末では全く問題ないです。

[ 設定 ]

– ルーターの電源を入れしばらく待ち、resetボタン(下面の空気穴のひとつの中にあります)を押します(10秒ほど押したままにします)。
– しばらくすると初期状態で起動しXiaomi_で始まるSSIDで接続出来るようになります。
– 携帯電話もしくはPCでそのSSIDに接続し、ブラウザーで http://miwifi.com を開きます。
– 最初の方でルーターとして使用するかエクステンダーとして使用するかを聞かれます。ここで中継工作模式という方を選択します。

– あとは画面に従って、拡張するWiFiのSSID(この場合はTELLOを起動しておいてTELLOのSSIDを指定)を選択しパスワードを入力します。
– 次に小米ルーターに接続するためのSSIDとパスワードを指定します(携帯電話から小米ルーターに接続するためのもの)。
– 次に管理用のパスワードを指定して終了です。終了画面が出ませんが、しぱらく待ってから再起動すると、ただしく立ち上がります。

[ テスト ]
実際にテストしてみると間違いなく効果がありました。マンションの庭でNexus6で20mも離れると接続が怪しくなります。iPad miniだと10m怪しい状態です。そこでNexus6+小米ルーターで試すと50mくらいでやっと接続が切れました。小さな機体ですし、これで十分だと思います。

追記) その後WiFiの影響のほとんど無い公園でテストしたところ小米WiFiルーター青春版使わなくともHuawei Mate9単体で100mまで電波が届くことが判明しました。リピーター無くても良いかなって気がしています。詳細は以下のYoutubeをご覧ください。

DJI/RYZE TECHのトイドローンTELLOがやってきた

DJIが販売する初めてのトイドローンTELLOが中国で先行して発売開始されました。DJIが販売しているという安心感と手軽さは多くの人の興味をひくには十分なものがあります。製造はRYZE TECHという新興企業でwebページを見る限り製品はTELLOしかまだありません。

ということで、さっそく入手して色々と試しているところです。取り急ぎ気が付いたことを書いておきます。簡単に飛ばせて楽しいドローンであることは間違いないです。


– プロペラガードが装着された状態で箱に入っていました。付属品はバッテリー一つ、予備のプロペラ4枚一組、プロペラを外すためのツールと説明書です。


– モーターの対角線上の長さは115mmと室内用ドローンとしては大きめです。屋外での飛行も考えた上での大きさであるとも言えます。

– VPSがうまく機能する。高度の維持は内蔵された気圧センサー、横方向の位置は下面に付けられたカメラで床や地面を監視して制御しています。これが良く働いて室内でも屋外でも全く操作することなく定位置でのホバリングが可能です。ただし、やや暗い室内だと下のカメラがうまく機能しなくなるので位置がズレて行きます。それでも高度は維持されるので操縦は難しくはありません。

屋外で安定したフリップを行うDJI/RYZE TELLO #tello #ryzetello

Nobumichi Kozawaさん(@nkozawa)がシェアした投稿 –

– 小型のトイドローンとして飛行時間13分は立派。実際に飛行させてもカタログ通り13分ほど飛びました。1000mAhという、このサイズのドローンとしては大きめなバッテリーが搭載されています。飛行時間は長いのですが、充電時間は、おおよそ一時間半とちよっと長め。また、今のところ外部充電器などは無く機体にあるUSBポートで充電しますので、予備バッテリーを入手しても運用は面倒です。TELLOは沢山売れそうなので、サードパーティから外部充電器なども出てくる可能性は高いと思います。自分自身でも外部充電の実験中です。

– 電源のオフが分かりづらい。電源ボタンを一度押すとオンに出来ますが、オフにする時は二回連続して押さないといけません。また、充電するためには電源オフにしないといけません。

– モーターはブラシモーターが使用されています。超小型のドローンとしては正しい選択肢でしょう。ブラシモーターですが、そこそこ力強く、パンチ力(急上昇する勢い)も結構ありますし、強風でなければ屋外で風に対抗することも出来ます。飛行モードをFastにすると室内ではとてもフルにスティクを倒すことが出来ないくらいスピードが出ます。


– 屋外で思いの外飛ばせる事が分かったのでどこまで飛行高度があげられるかテストしてみました。スペックに書いてある通りで10mが限界でした。それ以上の高度を上げられないように制御されています。小さなドローンなので妥当な設定だとは思いますが、もうちょっと上げてみたい気はしました。

– 接続距離は今ひとつ? WiFiアナライザーで調べてみるとTELLOから発信している電波は一般的なWiFiルーターとさほど変わりません。おそらくは家の近くにはびっくりするほどのWiFi電波が飛び交っていることと携帯電話自体の発信する電波が強くないことに問題があると思われます。うちのマンションの庭では10m以上離れると電波干渉があるというメッセージが出てカメラからの映像に影響が出始めます。時々通信が途切れたりもします。WiFi extender経由での操作が可能であることは確認出来ているので、公園などで距離テストを行ってみたいと考えています。

– 機体にはストレージが無く写真やビデオはWiFi経由で得られたものを携帯電話で記録します。写真はそれなりですが、動画のクオリティーは今ひとつです。カタログでは720P30と書かれていますが、そこから想像される画質を思うとがっかりするかも知れません。トイドローンと割り切った方が良いです。動画の画質も携帯電話にも左右されている感じもしますが、まだ良くわからないです。写真と動画を比べると動画の画面サイズはだいぶ小さくなります。おそらくソフトウエア的なスタビライズ処理が入っているものと思います。屋外で風に翻弄されている画像にいくらかのjello effectが見られるのは、この処理がうまく行っていないからと思います。

– 期待するPrograming環境についてはScratchもSDKもまだ全くの謎です。早く試したいのですが情報待ちです。

Inductrix FPVのフレーム修理

室内FPVドローン、Inductrix FPV、のフレーム(おそらく本物では無いです)が割れてしまいました。アクロモードなどの練習で何度も激突していたので仕方ありません。

中国の通販サイトはなんでも揃っているので交換用のフレームを探しました。ところが、これがなかなか難しくInductrix FPVで検索すると一回り大きなサイズのInductrix FPV Plus用のものばかり見つかります。最終的にはJJRC H36用のフレームを入手しました。サイズ的にはぴったりです。細かい部分の形状が違いますが、調節可能で組み上げることは出来ました。

ひとつだけ気になることがあります。それはダクト内部の支柱に傾斜が付けられているのですが、それがオリジナルと反対になっています。言い換えるとH36とInductrix FPVとではプロペラの回転方向が逆になっています。実際に飛ばしてみて問題が有るわけでは無いのですが、空力的には問題が有るような気がします。

といこうとで、オリジナルのフレームを修理してみました。使用したのはUVクリアーという紫外線で固まる接着剤です。

そこそこの接着力です。なんといっても紫外線LEDライトを数秒間照射するだけで硬化させることが出来るので、とても作業が簡単です。

激しくぶつけると接着箇所が剥がれてしまいそうですが、普通に飛ばしている分には問題なしです。