U.F.O. SA/A10サイクロンSA/バッハスマート コントロールアプリDual版Ver.1.20

2台同時制御時に無駄な通信が若干生じていたのを改良し、無駄な通信を削減しました。

UfoSaCtrlDualはAndroidからBluetooth Low Energy(BLE)接続によりU.F.O. SAやA10サイクロンSAバッハスマートを独自パターン(ランダムパターンも可)でコントロールできる野良アプリです。
こちらは2台を同時にコントロールできるDual版です(U.F.O. SA2台同時、あるいは、異なる製品の組み合わせでも制御できると思います(筆者はU.F.O. SA2台しかもっておりませんので、U.F.O. SA2台による実機確認のみ行っております))。

改善点

従来のバージョンでは2台同時制御をしているときに、このタイミングでは片方とだけ通信すれば良いというタイミングでも両方と通信してしまう、という無駄が若干ありました。

今回、制御アルゴリズムの見直しを考えた際にふとシンプルな解決策が浮かびましたので、それを実装しました。
(というか、なぜこれを開発初期段階で思い付かなかったのか? という作者の頭の悪さが滲み出てますよね〜(´・ω・`)。でも、筆者こういうパターンが非常に多いんですよね、時間が経つとふと改善策を思いつく、という。UfoSaCtrlDualの初版からもうすぐ1年経ちますけどね(^^ゞ)

実を言いますと、この無駄な通信の発生、無駄な通信の分バッテリー消費が増える(と言っても微々たるものですが)の他にちょっと嫌な現象が起こりやすくなる、という問題がありました。
それは、通信を受け取る側のU.F.O. SAやA10サイクロンSAバッハスマートの方で取りこぼしが増える、という問題です。

過去の記事でも書いているのですが、頻繁にデータ送信していると、受け取り側の処理が追いつかなくなってデータを破棄してしまいます。
それでも、ランダム制御しているとそんな取りこぼしが発生しているなんてあまりバレることはないのですが、一点だけバレる現象があります。
それが、『止まらない』です。

止まらせようとして送信したデータが破棄されてしまうとU.F.O. SAやA10サイクロンSAバッハスマートは動作し続けてしまいます。
その『止まらない』現象の発生頻度が高くなる。

これが今までのバージョンでのちょっと嫌な点でした。

この現象はGradual制御やComposite制御など、頻繁に速度変更を行うパターンを使用するとより顕著になるため、筆者はこのUfoSaCtrlDualを使うときはStep制御のみを使用するようになっていました。(ガーン!)

U.F.O. SA/A10サイクロンSAコントロールアプリPro版Ver.1.00』の記事でも書いているのですが、どれくらいの頻度で通信を行えば良いのか?
CSVは100msec単位で書けるので、100msecでイケるのか?
と思いきや、100msecごとにバンバン通信していくと、実に大量に取りこぼしが発生します。それも、適度に抜ける程度なら良いのですが、ある程度バッファに溜め込んで、溢れたらしばらくフリーズみたいな形になりますので、制御できているのかできていないのか分からないような動作になってしまいます。(CSV書くときも余り100msecで連続したデータは書かないようにしましょうね)

じゃあ、確実に取りこぼしが無くなる間隔はどれくらいなんだ?
と言いますと、結構長く取っても連続して通信している限りは偶に取りこぼしが発生してしまうのです。
そこで、筆者のUfoSaCtrlProおよびUfoSaCtrlDualではほぼ100msecで制御はしつつも、通信自体はほぼ200msec間隔で(たまに100msecあるいはそれ以下になるときもある)行うように通信の間引きを行っております。

そんな状況ですので、200msec単位だといっても2台同時に常に連続してデータ送信を行うという制御はあまりしたくないものなのですが、これが従来のアルゴリズムでは片方がGradualな速度変化を起こしているだけで常に2台とも200msec単位の連続送信となってしまっていたので宜しくなかったのです。

それが、今回の改修で(多分)解消されまして、1台のみ制御のUfoSaCtrlProとほぼ同じレベルの通信安定性が得られるようになったのではないかと、昨晩のチクニーで2台Composite制御をしてみて感じました。

これからは、DualでもCompositeで使用できます。うるうる。

このバージョン以前から共通の情報

当アプリはAndroid4.3以上対応ですが、4.3はAndroidOS側の実装がイマイチのようです。筆者の実感としては4.4もイマイチです。
5.0以上ですとMediaButton対応(リモコンなどが使える)していますし、BLE通信の安定性も増している(ような気がする)ので5.0以上推奨です。

筆者はAndroid6.0と9.0の実機でU.F.O. SAをコントロールして確認しています。
A10サイクロンSAバッハスマートを所持しておりませんので、この辺りは完全に推測でプログラムコードを書いている状態です。
ですので、もし、動作不具合等ありましたら、お手数お掛けしてすみませんが、コメントでお知らせいただけると幸いです。

(このアプリの肝がBLE通信にあるため、エミュレータによる確認ができなくて実機確認頼りになってしまいます。)

使用方法等につきましては過去記事『U.F.O. SA/A10サイクロンSAコントロールアプリDual版Ver.1.00』をご参照ください。
(情報量が非常に多いですが、快適に使用するためのコツ等も記載していますので、頑張ってご活用ください)

動きがおかしくなったら

他の記事でもちょいちょい触れていますので、ご参照いただけるとありがたいです。
(あちこちにノウハウは散らばっていますが、まとめたらまとめたで膨大な量になるのでそれはそれでちょっと……)

かいつまんでここにも書いておきますと、
画面オフしたりバックグラウンドにすると制御がおかしくなる場合はOS側の設定を疑ってください。
(このアプリが画面オフでも動作しつづけられるようにバッテリー消費最適化やメモリー解放制御などのOS側がアプリを強制終了してくる機能をこのアプリに適用させないようにしてください。)
あと、キャッシュのゴミが悪影響を及ぼす場合もあります。(筆者も遭遇しました)
設定でできるキャッシュクリアだけでは改善しない場合、RecoverModeに入ってCachePartition Clearを行ってみてください。

ダウンロードファイル

勝手な再配布はしないでください。
特に、うちのサイトは弱小なので、検索で上位に表示されるサイトに勝手にコピーされると、盗まれたのとほぼ同じ状況に陥ります。
何かしらの問題が発覚して、こちらのサイトでファイルを差し替えても、それが皆さんの元には反映されなくなることにも繋がります。

諸事情によりアプリの無料配布を終了致しました。
今後は活動を支援してくださる方とのみ細細と共有していければと思います。

今後のUfoCtrlアプリ配布ページはこちらです。
UfoCtrl Ver1.00 (UfoCtrl開発活動支援プラン)

最後に

アダルドグッズや同人コンテンツなどをご購入の際にはこのサイトのリンクを踏んでから購入していただけると、いくばくかの紹介料をいただけるので筆者が大変助かります。
このアプリや筆者の作成コンテンツが役に立ったとか面白かったとか、ありましたら応援していただけると幸いです。

このアプリの対象となる製品はこちらです。

2019-05-19

コメント

UFO SAについて ゆっき [2019-05-23 14:56]

以前R-1UFOを使ってたんですけど、チクニーまでいきつかず手放してしまいました。              UFO SAはやはり同じものですか?配線が楽になっているだけで以前の記事でトルクが若干弱いとあったので買おうか迷っております。

Re: UFO SAについて 山牧田 湧進 [2019-05-23 16:56]

筆者が持っているU.F.O. SAは一番新しいのでももう3年以上経っているので、最新のがどうなっているのか分からないのですが、基本的には同じモーターで同じ電圧を掛けていると思われますのでほぼ一緒だと思います。

以前の記事で弱いと言っていたのは、2つ意味があります。

1つは、筆者のアプリで1~100まで調整できると言っても1とか指定すると止まるよ~、という意味で弱いと言っているだけです。
本体でのコントロールですと最低でも25とか30とかで動いていると思われますので、止まることはそうそう無いです。

もう1つは、単純に力学的な問題で、パワーが一緒なら遅くするほどトルクは強くなるという原理上の話でして、筆者の好みとしてはもっとギアの変速を低速よりにしてその分トルクを強くして欲しい(そうすれば10とか5でも止まらずにまったり動いてくれるのでその方が良いなあ)という願望です。
凄くゆっくりでも動くようになって欲しいなあ(筆者は高速を全く使わない人なので)、でも、凄くゆっくりだと止まっちゃうんだよなあ、って意味でトルクが弱いと言ったかもしれませんです。

普通にローション付けて、本体の中にローションが入ってしまわないように気をつけていればそうそう止まるものではないです。
大丈夫ですよ。

この記事のタグ

U.F.O.

SA

アプリ

制御

自作