manahiyoの気まぐれ

備忘録を兼ねたブログです。

Pokitの測定値をMRで表示してみる

はじめに

先日Quest3の発売日が発表され、MRが話題です。

以前ブログに書きましたPokitは超小型のテスターになりますが、これらの表示も将来はMRグラスで表示するのだろうと想像します。

www.pokitinnovations.com

今回はその1歩手前という感じで、手持ちのQuest2のパススルーモードを使って測定値をMR表示してみました。

Pokitと接続

webを検索したところAndroidからBLE接続の例もあり、初めはそれらを参照して作ろうとしました。しかし、BLEは初めてで知識も乏しく、エラーが出て修正方法も見当がつかず、うまく動かせませんでした。

困ったときのASSET頼みで、結局こちらのASSETを購入するのが一番早かったです。

assetstore.unity.com

サンプルソフトで接続確認

まずはasset内にあるサンプルアプリがQuest2で動作するか試します。

MR表示を想定しているので、OculusIntegrationのPassthroughサンプルをベースにします。これに上記assetのサンプルのScannerTestのCanvasをコピーして実行します。

ちょっとCanvasの設置などの位置が悪く見にくいのですが、もともとのPassthroughサンプルにあるオブジェクトのほかに、CanvasにRSSIやアドレスが表示されていて正常にスキャン動作ができていそうです。下の部分にある通りPokitも認識できました。

Quest2内のスクリーンショットなので、背景が黒になっています。

 

PokitのLEDを点灯

まずはPokit上のLEDにアクセスしてみます。下記にAPIドキュメントがあるのでここから各IDは参照できそうです。こういう資料が公開されているのはありがたいですね。

https://www.pokitinnovations.com/wp-content/uploads/D0005250-PokitMeter-Bluetooth-API-Documentation-0_02.pdf

 

LEDアクセスは下記の部分になります。ここに1を書き込めばよいようです。

点灯するのが一瞬なのでわかりにくいですが、下記のように点灯しました。

 

Pokitの電圧測定値を表示

基本的にはオペレーションモードを電圧測定に変更して値を取得するだけです。レンジはAUTOにしています。手元にあった使用済みの乾電池の電圧を測定してみました。

表示位置はコントローラ基準で置いた状態で見れるように調整しています。

今回はSideQuestでパススルー画像込みでキャプチャしています。

APP起動後、BLE検索状態

接続中

測定中、未接続なので0V

測定中、使用済みなので1.11Vでした。

抵抗を測定

10オーム

47Ω

150Ω

測定がいつもと違って、なんか新鮮です。

最後に

ひとまずPokitから電圧と抵抗を取得してMRで表示することはできました。

QUEST2のパススルー画像は見ての通りいまいちなので、QUEST3で改善したカラーパススルーでぜひ試してみたいところです。

 

 

設計した基板をVR,ARで見たい2

はじめに

電子基板はいつも出来上がってから、あーすればよかった、こうすればよかったと気が付くことがあります。やはり実物を見て気が付くことはよくあることです。

VR内で設計段階で出来上がった3Dモデルを表示して見ることで、実物を見るのに近いことができると思い、以前試しました。

ただ、この時は結局いろいろ手間がかかって、面倒でした。

manahiyo.hatenablog.com

今回改めてやってみたところ、とても簡単にできたので再アップします。

環境

KiCad 7.0.7

Blender 3.4

Unity 2022.3.4f1

Quest2

手順

KiCADでサンプルで用意されている下記を使いました。

kicad\demos\pic_programmer

PCBエディタで開くとこんな感じ。

3Dビューアーで表示

次に、下記のようにメニューからVRML形式で出力します。ReadOnlyなので、出力先は適当に変更してください。

次に、Blenderで取り込みます。下記メニューになります。VRMLという表示がないのですが、wrlの拡張子で問題ありません。

取り込んだところ

TOP面

BTM

これをBlenderの標準形式で保存します。

UnityのAssetフォルダなどにそのファイルをドロップすれば自動で変換して取り込みをしてくれます。

取り込んだところ(一部)

 

表示の様子

Quest2のパススルーモードのプロジェクトを使って、基板を表示してみました。背景が黒になっていますが、実際はパススルーで実環境が表示されています。

下記の通りAR(MR)内で自由な角度から基板が見れます。事前チェックとして結構実用になるのではないかと感じます。

下記に動画置きました。

www.youtube.com

最後に

ふとしたところでkicadStepUpModというものの存在を知り、試していたのですがなかなか思うようにいきませんでした。

結局上記の通りシンプルにやるのが一番簡単というオチでした。

 

2023/10/1追記

Blenderのアドインを使うことでPC-VRがあればBlender内でVRで見れることがわかりました。拡大縮小などもできて、こちらのほうが手軽ですね。

forest.watch.impress.co.jp

スクリーンショット



 

Pokit Meterが届いた

はじめに

先日スマホやスマートウォッチで表示できるテスターを見つけました。世界最小と謳っているだけあってとても小さいです。見た目もかわいい感じで、周波数は低いですがオシロ機能もあり、値段も悪くありません。迷わずポチっとしてしまいました。

下記が公式ページのようです。十分な情報がある印象です。

www.pokitinnovations.com

ちなみに、現時点では公式ページよりもスイッチサイエンスのほうが安かったです。円安になる前に在庫していたからでしょうか。こちらで購入しました。

pokitMeterwww.switch-science.com

届いた

梱包内容はこんな感じ。ケースもついてました。

マニュアルはクイックスタート程度ですが、各言語そろえてあり日本語もありました。

問題発生(のち解決)

マニュアルに従ってみたのですが、スマホのアプリから認識されないという問題にいきなり直面しました。ここは落ち着いてFAQを確認します。下記に認識しなかったときの対処法がありました。

https://help.pokitmeter.com/hc/en-us/articles/360011655974-Why-can-t-the-App-see-my-Pokit-Meter-

こちらを見るとBluetoothを使っているということのようなので、スマホBluetooth 接続から確認できるはず。しかし、新しい機器をスキャンしても出てきません。ところが、バッテリのつけ外しをしていたところ、突然下記のようにpokitが表示されました。

ということは、バッテリの接触が悪いのかなとみていったところ、バッテリの取り付け方で微妙に認識したりしなかったりしました。認識した状態でそのままバッテリのカバーをつけてとりあえずはOKとします。

使ってみる

こちらに動画のチュートリアルが揃っていました。なかなか充実しています。

https://help.pokitmeter.com/hc/en-us/sections/360002899214-Tutorials

このサイトに一通り使ったレポートもあります。

mag.switch-science.com

個人的にはオシロスコープ機能に期待していたので、NanoVNAから50kHzを出力して測定してみました。操作性は慣れが必要な感じがしますが、機能的には下記のように波形もFFTも見れたので、満足です。波形がきれいなsin波でないのはFFT波形で見えるとおり、nanoVNAが高調波を出している影響です。

オシロ画面

FFT画面 Hzとなっていますが、kHzの間違いですね。個人的にはLOG表示もほしい。

左上のアイコンで簡単に画面の記録と確認ができるのが便利です。こちらは保存した画面路呼び出したところ。

インタフェースも公開されている

BluetoothAPIドキュメントがありました。これを参照すれば、自作ソフトにも組み込めそうです。

https://www.pokitinnovations.com/wp-content/uploads/D0005250-PokitMeter-Bluetooth-API-Documentation-0_02.pdf

gitにもサンプルがありました。

github.com

ARとかと組み合わせて何かできるかも。

最後に

ケースに入れたところ。これならいつもカバンに入れておいても邪魔になりません。

 

電波可視化をQuest2のパススルーでやってみた

はじめに

以前よりスマホのAR機能で電波の強さを表示するソフトを作成したりしていましたが、急にスマホを動かしたり、範囲が広くなったりすると位置がずれたりして、トラッキング性能に不満がありました。

Quest2ではVR用ではありますが、パススルーモードを使うことで白黒ですがARと同じようなことができます。

パススルーモード

まずはQuest2でのパススルーモードですが、webにたくさん情報があります。こちらを参考にしました。

qiita.com

Quest3だと、カラーパススルーになるらしいので、待ち遠しいです。QuestProはとても手が届きません。

SDRとの接続

SDRとしてはRTL-SDRとtinySA-ultraを使いました。もともとスマホandroid用にネイティブプラグインとして以前作成したのがあるので、基本的にはそれをQuest2用に合わせて変更できました。この辺りは同じAndroidなので使いまわしがしやすく助かります。

ハンドトラッキング

今回苦労したのはハンドトラッキング対応です。コントローラではアンテナを持つのが厳しいので、ハンドトラッキングに対応させてみたかった次第です。

こちらもほかにやっている人がたくさんいるようで、情報には困りませんでした。

note.com

番役に立ったのは、本家のサンプルです。Oculus Integration のサンプルにありました。こちらを改造しながら実装できました。

お気に入りは手を広げたときにスペクトラム表示がされるようにしたことです。

こんな感じです。

MRキャプチャでwebカメラでMR表示

こちらはだいぶ苦労しました。以前にも一度やっているのですが、QUEST2のバージョンが上がっているせいか、同じように動作しなくなっていました。

そもそも「Mixed Reality Capture」でキャリブレーションが完了できません。下記を参考にしました。

communityforums.atmeta.com

結果としては下記のソフトを代わりに使えばよいとのこと

github.com

なんとか表示できるところまで行きつきました。webカメラとQUEST2での表示が合成されているのがわかります。

とりあえず完成

こちらに動画上げました。ただいろいろバグがあるので、ある程度修正したらapkをgitに上げようかなと思っています。

www.youtube.com

 

QUEST2を屋外で使いたい

はじめに

電波可視化をするにあたり、スマホでは追従性能がいまいちなので、Quest2のパススルーで試し始めました。これはまた別に書こうと思います。

今回は、電波可視化を屋外でできるのか?というところが気になり、quest2を屋外で使う方法を模索した結果です。

下調べ

ちょっと調べるとわかりますが、メーカーは直射日光などが当たることを禁止しているようで、様々なサイトで屋外は禁止となっています。

www.moguravr.com

実際このように故障したという例も…

urashita.com

そうはいっても、方法はないのかと調べたところ、amazonでこちらを見つけました。

https://www.amazon.co.jp/dp/B09TK9L1RQ

レビューを見たところ、ちょっと微妙。おまけに在庫切れとあって、あきらめました。

次に見つけたのがこちら、野原の真ん中でquest2で遊んでいます。

www.youtube.com

どうでもいいことですが、刀で開封するところとか独特の個性があって面白い動画でした。

この製品のメーカーを見たところ、しっかりとしたところなようです。ほかにもいくつかQuest向きのアクセサリを売っていました。

KKCOBVR S2 VR Shell Protective Cover Compatible with Meta/Oculus Quest 2 Accessories Can Play VR Outdoors on Cloudy Dayskkcobvr.com

ほかに似たようなものは見つからなかったのと、価格もさほど高価ではないので、購入を決定。

買ってみた

Aliexpressで購入できました。

https://ja.aliexpress.com/item/1005005130516558.html

1か月くらい覚悟していましたが、意外と早く届きました。梱包もしっかりしており、説明書もあり、品質的にもよさそうです。

レンズ部分はこんな感じ

説明書を読む

よくよく読んでみると

「Enabling VR to be played outdoors on cloudy days.」

・・・曇りの日しかダメなの???

さらに次のページに

[Do not expose it to sunlignt]

・・・晴れは禁止か!!!!

ということで、あくまで曇りの日の屋外を想定したもののようです。

よく見たら、製品ページにも書いてありました。

取り付けてみる

実際にQUEST2につけた状態。うまく引っかかってきれいに取りつきます。

先ほどの動画にもありますが、ぴったり付きすぎで外すのが意外と難しいです。

レンズの効果を見てみる

実際につけて使ってみましたが、屋内で使った感じは特に変化はありません。

ただ、パススルーモードにして、下記のように光の強いところを見ると確かにフィルタを通った部分が他より暗くなっていてフィルタとしての役割は果たしているようです。

 

 

今日は天気が良くて、直射日光を浴びそうなので、屋外での試験はまた別の日にやってみます。

 

 

 

ChatGPTのプラグインでtinySA-ULTRAを操作してみた

はじめに

以前からChatGPTで会話だけでなく、何か外部の機器を操作でないものかと考えていました。先日発表された「Function Calling」を使うことで外部とのやり取りができるということで、試してみました。ただ、この場合は一つのプロンプトに対して1回しか関数が呼ばれないようで、まとめて指示ができないという、いまいちな結果でした。

そんなか先日waitlistに登録していたプラグイン開発の通知が届き、プラグインであればいろいろ融通が利きそうであることから、この機会にやってみました。

今回はローカル動作での実験レベルですが、いろいろ応用がありそうです。

ここではChatGPTからtinySA-ULTRAにUSB経由でコマンドを送り、電波測定をさせてみます。

www.tinysa.org

プラグインの作り方を学ぶ

下記にopenAIのチュートリアルがあり、web上でもたくさん試している人がいたので情報も豊富です。

platform.openai.com

サンプルのtodoプロジェクトをベースに改造をしていきました。

はじめは周波数設定のコマンドのファンクションを作るといったことをやっていましたが、途中からコマンド自体からChatGPTに考えてもらったほうが楽ということに気が付き、作るのは下記2つのファンクションにしました。

・tinySAにコマンドを送る

・tinySAの画面をキャプチャする

本来はシリアル通信も環境によりポートが違ったりするのでいろいろほかにも必要ですが、まずは実験的というところで最小限です。

tinySAを操作してみる

コマンド情報をwebから得るために、WebPilotのプラグインをONにしています。

では測定内容を指示します。

回答はこちら。ちゃんとコマンドも送ってくれています。

デバッガで見ると実はコマンドの書式が間違っていて、設定ができていません。コマンドも一部不要など、この辺りはいつもの通り指摘が必要です。

それを指摘したうえで、FM放送の信号を見るために70M-100Mに設定してもらいました。

今回はちゃんとtinySAの周波数が70M-100Mに設定され、マーカーがピークになっています。

やってる感を出すのに、どうしてもキャプチャ画像をChatGPTの回答に出したかったのですが、初めはやり方がわからず、すこし苦労しました。下記を参考にして解決しました。わかってしまえば簡単ですね。

github.com

ちょっと応用

せっかくChatGPTを使っているので、測定するだけでなく、どこのFM放送局か調べられるのではないかと試しました。ただ直接依頼しただけではちょっと難しいようでした。

そこでFM放送局の周波数が書いてあるサイトを提示したところ、特定してくれました。

感想

現状ではChatGPTの応答が遅く、手で操作したほうが早いので、今すぐ実用になるかというと微妙かもしれません。ただ、測定器とChatGPTの連携により次のようなメリットが考えられます。

  • とにかく指示が楽。曖昧だったり間違えることもありますが、プログラムのように厳密でないので、文法を怒られることもありません。「さっきと同じ手順で、とか、もう一回」といった言い方で指示できるのはほんとにアシスタントという感じです。
  • 細かい設定内容がメニューのどこにあるかわからずに探すのに時間がかかったりよくします。マニュアルをChatGPTに読ませておくことでこんな苦労は不要になります。
  • 例えばスプリアスを確認したいといった抽象的な依頼もChatGPTが手順から考えてコマンドまで落とし込んで勝手にやってくれそう。
  • ChatGPTが翻訳してくれるので、言語の壁がない。ちなみにこのプラグインは英語ですべて定義していますが、上記の通り日本語で使えます。
  • 上記の放送局検索のように、測定器の枠を超えて、あらゆるものをつなげることができる。ここはアイデア次第でしょうか。

 

これは将来便利になりそうです。もちろん機器に対する知識があることが大前提ではありますが。。。

 

下記に動画追加しました。英語でやってみましたが、コマンドの生成は英語で直接指示したほうが精度はいいようです。

youtu.be

 

追記2

前回の動画を作成した後、ブラウザの拡張機能で音声入力ができることに気が付き、試しました。もう測定器も音声でコントロールができる時代ですね。ただ、あっという間にGPT4の回数制限にかかってしまうのがなんとも厳しいです。。。

youtu.be

 

PRETIA AR を使ってみた

はじめに

以前からARの共有には興味を持っていたのですが、ARCoreのCloudAncherで挫折して以来、あきらめていました。そんな状況でしたが、先日PRETIA-ARという日本製のARソフトがあるのを見つけ、これは試すしかないと。公式webサイトはこちら

https://arcloud.pretiaar.com/home

これまでとは一味違ったAR体験が期待できそうです。

まずはサンプルのMultiplayerSampleでAR共有を体験

まずは事前に3Dスキャナアプリで空間の登録が必要です。

こちらが3Dスキャン中の画面で、赤点が特徴点として認識に使っているようです。

 

このアプリで空間認識の確認もできて、あっという間に認識できたのが感動的でした。

ARCoreのCloudAnchorをやったときはうんざりしていたので、雲泥の差です。

また空間認識の精度もアンカーの位置を見る限り何度やってもほとんど変動せず、なかなかよさそうな印象です。ちょっと試したところでは数cm程度のずれでした。ただ、ここは環境に依存する感じがします。

後から気が付きましたが、このスキャンデータにはGPSデータが必須のようです。自宅がバレバレなのがちょっとプライバシー的に気になります。せめて選択できるといいのですが。。。

つぎにサンプルにあったMultiplayerSampleを試してみます。

ARCoreが動作するスマホが2台あったのでこれで共有をしてみました。

起動後は自動的に空間認識をはじめて、認識ができると次のようなログインの画面になります。1台目を起動したときはCreateNewSessionで、2台目はJoinSessionを選ぶことで共有できるようです。

こちらが2台で共有したときの画面です。これをやるだけでもなかなか楽しいです。

1台目が赤のドローン、2台目が青のドローンです。

チュートリアルをやってみる

自分でいじらないことには何もできないので、まずはこちらに従って進めてみました。UNITY2020.3.46f1を使用しました。

docs.arcloud.pretiaar.com

サンプルをやる中で、私がミスっているのか発展途上なのかわかりませんが、いくつか改善してほしいなというところがありました。

・mapの番号を入れ忘れてハマった。自分が悪いがエラー出してくれるとありがたい。

・webのチュートリアルに従うだけでは不明なところがあり、YOUTUBEにあるチュートリアルで補足して何とかできた

www.youtube.com

ネットワークのチュートリアルでハマる

ARの共有をやりたかったので、次のページでネットワーク系のチュートリアルを進める。

docs.arcloud.pretiaar.com

しかし、ここでハマってしまう。

下記のページのコードでエラーがでて、コンパイルが通りません。コピペしただけなのに…

using PretiaArCloud.Multiplayer.Matchmaking;を追加したら解決。

docs.arcloud.pretiaar.com

さらに、次のページでもエラーが発生。Start()の部分でネットワーク系のエラーが出ていました。デバッグをしたところ、OnEnable()の処理と、Start()での処理の順がおかしくなっていました。awaitによるものかと想像しますが、詳しくないのでわかりません。
ただ、Start()内にある処理をOnEnable内にすべて移動したら、正常に動作するようになりました。メモしていないので忘れてしまいましたが、ほかにも数か所あったと思います。

docs.arcloud.pretiaar.com

注)私が何かミスっているのかもしれないので、決して苦情ではありません…

内容の理解には役立ちましたが、こちらのチュートリアルではAR共有までたどり着けませんでした。

サンプルプロジェクトが一番役立った

MultiplayerSampleはすでにARの共有が実装されており、そのまま動作できます。こちらを自分の目的に合わせて修正することにしました。

私は電波可視化でAR共有がしたかったので、画像認識と組み合わせてみました。

なお、ARFondationの使い方はCHATGPTに大変お世話になりました。

とりあえず空間に絵を描くだけですが、書いている様子をほかのスマホから見れるのは新鮮でした。こんな短時間でできるとは思いませんでした。

youtu.be

最後に

電波可視化への応用を考えたときに、いくつか課題がありそうに感じました。

・企業などは情報セキュリティ的に空間情報やGPS情報のクラウドへのアップロードを嫌いそう。

電波暗室などwifiがつながらないところでは使えない。

・不特定多数の人が使いたいとなった場合はユーザー登録が必要だったり、どれだけサーバーに通信がされるかわからないので、GooglePlayへのアップやGITでの公開は難しそう。

・インスタントトラッキングができたらとても便利そう。せめて3Dスキャナをユーザーソフトと統合できると、スマートになりそうです。