初音ミクをアクリルで光らせたかった

 

 CNCで桃華ちゃんのサイン掘ったときに光るアクリル板に浮かび上がらせそうだったので作成

  

<手順>

下絵を描く

illustratorなどでパス化(アウトライン)して間隔調整した後DWG,DXF,AI形式のどれか保存

Cut2Dなどで加工経路制作、USBCNCでGコード生成

加工

 

0.5mmの深さで掘った

f:id:tomi-tomi-pon:20200126180947p:plain

 

 

 

 したから青LEDを照らすといい感じ

今回は部室にあるCNCを使用した。個人で欲しい加工機だが10万コースか....

 

初音ミク×アクリル板=kawaii

 

おわり

桃華を呼び出したかった

 

 

 

 iPad買ってから楽しくお絵かきしてたら嫁を召喚したい衝動にかられました。

なのでAR化させて召喚しました。

 

 

 

 

ミクちゃんと撮影 

f:id:tomi-tomi-pon:20200126060501p:plain             

 

とてもかわいい

いつかlive2Dで動かせたらいいな

おわり

 

お借りした物

 WebARジェネレータ

https://web-ar-generator.firebaseapp.com/

 

 

 

 

 

BMX055の9軸データをProcessingで可視化させる

前々回 BMX055からの9軸データ出力

http://tomi-tomi-pon.hatenablog.com/entry/2018/11/07/012854

前回 グラフ作成

http://tomi-tomi-pon.hatenablog.com/entry/2019/04/08/145913

 

今回はBMX055の9軸データをProcessingで可視化していきます

 

 

使用した物

使用した物

・BMX055  (9軸センサモジュール)

Arduino (どこにでもある)

・Processing(ソフトフェア)

 

 

以下githubのgraph_UI.pdeとmadgwick.inoがそれぞれProcessingとarduinoのプログラムになります。

 https://github.com/tomi-09/gryo-acc-mag-axes-graph-processing-

 

f:id:tomi-tomi-pon:20191023144240p:plain

ポートは各々設定してください

実行結果

f:id:tomi-tomi-pon:20190408163400p:plain

作ったUI

 

youtu.be

 

前々回作ったBMX055の9軸データとオイラー角のデータの数値データを前回作ったProcessingでのグラフ化を合わせて見やすいようにUIを作りました。

 

<簡単な動作説明>

 

Processingとarduinoとは加速度、ジャイロ、磁気が来た際(1,2,3,4と置いている)に空白を消して[,]ごとにx,y,zを読み取るという通信を行っています。

その送られてきたデータをグラフ、3Dアニメーション化をしています。

・グラフ

読み取ったデータが0を基準としてグラフの縦軸を超えた場合はグラフ縦軸を臨機応変に変更させています。

・アニメーション

青いboxはyaw→roll→pitchの順で

赤いboxはroll→yaw→pitchの順で

それぞれオイラー角を回転されています。

これは2番目を90度回すとジンバルロックという正常に動作しない現象があるためこのように2通りの描写を行いました。

 

 ここでは簡潔に書かれていますが詳しくはプログラムのコメント欄に記載しています

 <注意点>

ジンバルロックを回避するためにクォータニオンを用いた制御がありますがProcessingはopenGLのため使用できません。しかし、激しい動作でなければジンバルロックが起きないため結構使えます

例外処理を行っていないため通信が切れた時に再通信を行えません。

<まとめ>

Processingはjavaで書くことができ、そこまで難しいわけではないため結構簡単に作ることができます。今回はグラフ化させましたがグラフ以外にも面白いものも作ることができると思うのでおすすめです。(オシロスコープもできますがProcessingは100fpsしか動作保証していないのでご注意を)

Processingは本来アニメーションとかを使うことが多いのですが今回はこんなデバッグツールみたいなものを作るという一例として考えてくれると幸いです。

 ※2019/10/23 Githubのコード修正

 

Processingを用いてArduinoのシリアル通信からのデータ可視化ツール(テンプレート)の作成

前回 BMX055の9軸センサからオイラー角算出

http://tomi-tomi-pon.hatenablog.com/entry/2018/11/07/012854

9軸センサの値を読み取りましたが数値では大変見にくいため今回はそのデータを可視化させるアニメーションの元として1つのリアルタイムグラフを作ります。

 

用はProarduinoのシリアルモニタ見たいな物と考えてもらって構いません。

使用するソフトウェアはProcessingです。

Processing.org

 

 以下arduino側のプログラム

 

以下Processing側のプログラム

 

ポートは各々使用しているポートに変更してください

このプログラムはarduino側で1秒ごとにインクリメントとデクリメントしたデータをProcessingで表示してるだけのプログラムです。 

とりあえずわかりやすいようにコメントアウトしました。

[簡単な補足]

arduino側は表示したいデータnama_1とname_2を

[nama_1]

[,]

[data_1]

改行

との順に送信しています。終了文字の改行をprintln("/n")としてデータ仕切り信号としようとしましたがProcessing側の

String myString = myPort.readStringUntil('\n');

で上手くデータが区切られずprintlnとしています。

 

 

 [まとめ]

arduino側で識別値とデータをカンマで区切りProcessing側で受け取ったのを2つグラフ化するという非常にシンプルなものです。Processingはデバック用のツールではありませんが、シンプルで使い方によって面白い&便利なためおすすめです。

今回は値を増加、減少させただけですが次はこれを応用して9軸センサのデータ可視化を行います。

 

次 BMX055のデータをグラフ化、3Dアニメーション化させる

http://tomi-tomi-pon.hatenablog.com/entry/2019/04/08/181841

Arduinoを用いてBMX 055 9軸センサーモジュールからのオイラー角算出(メモ)

今回はカメラの3軸シンバル(スタビライザ)を作製する(気持ちがあった)ため、その足掛けとして、roll ,pitch, yawのオイラー角をarduinoで計算させました

 

BMX055使用9軸センサーモジュール: センサ一般 秋月電子通商-電子部品・ネット通販

今回はこれを使用しました。

9軸(3軸加速度+3軸角速度+3軸磁気)の値をI2C通信を用いて、この1300円くらいのICで求めることができます。つよい

 

もし詳しい詳細が欲しい時はBMX055のデータシート一覧に書いてあります。

f:id:tomi-tomi-pon:20181107002328p:plain

図  秋月様の取り扱い説明書抜粋

 

このJPのショートとは基盤の裏にあるJP○の場所をはんだすることを指します。

 

 

私も一度間違えてしまい無事にICを焼いてしましましたので気を付けましょう....

 

 I2C通信ではプルアップ抵抗が必要ですが公式のWrieライブラリを使用するとArduino側でプルアプルアップが行われます。

今回はArduinoのプルアップ抵抗を使用するためJP6をショート(はんだ付け)を行い他のJPをオープンとしました。電源Vccを5Vとします。

 

 

[質問があったため追記]

    f:id:tomi-tomi-pon:20181107002521p:plain

 

 

                                          f:id:tomi-tomi-pon:20191023143802j:plain

               図 ショート例

JP6.をこのように2つのランドにはんだを付けショートさせます。

このようにすることによって電源をVcc 5v駆動 I2Cプルアップ、加速度ジャイロ磁気が0x19 0x69 0x13のアドレスとなります。

  f:id:tomi-tomi-pon:20190129003842p:plain

       図 IC BMx 055を用いた回路図

 

回路図を見てわかる通りJP4 JP5をショートさせることでプルアップ抵抗が適用されます。(今回は使用しません)

 

以下arduinoプログラム

#include <MadgwickAHRS.h>
#include <math.h>
//
 
ここは秋月のMBX055のサンプルプログラム参照してください

//
void setup()
{
// Wire(Arduino-I2C)
Wire.begin();
Serial.begin(115200);
//BMX055
BMX055_Init();
delay(300);
MadgwickFilter.begin(10); //周波数
}

 

void loop()
{

BMX055_Gyro();
Serial.print(GRYO);//gryo==1
Serial.print(",");
Serial.print(xGyro);
Serial.print(",");
Serial.print(yGyro);
Serial.print(",");
Serial.println(zGyro);

BMX055_Accl
();
Serial.print(ACCL);//accl ==2
Serial.print(",");
Serial.print(xAccl);
Serial.print(",");
Serial.print(yAccl);
Serial.print(",");
Serial.println(zAccl);
 
BMX055_Mag();
Serial.print(MAG);//mag==3
Serial.print(",");
Serial.print(xMag);
Serial.print(",");
Serial.print(yMag);
Serial.print(",");
Serial.println(zMag);
 
MadgwickFilter.update(xGyro,yGyro,zGyro,xAccl,yAccl,zAccl,xMag,yMag,zMag);
roll = MadgwickFilter.getRoll();
pitch = MadgwickFilter.getPitch();
yaw = MadgwickFilter.getYaw();
Serial.print(XYZ_ROTATION);//XYZ_ROTATION=4
Serial.print(",");
Serial.print(roll);
Serial.print(",");
Serial.print(pitch);
Serial.print(",");
Serial.println(yaw);
delay(50);
} 

 

↓git hubに全データ上げています

#include <MadgwickAHRS.h>

を使用しているためライブラリを落としてください。


シリアル通信は115200に設定(好きな値を)

オイラー角を求めるには相補、カルマン、などいろいろありますが、今回は最近開発されたMadgwickフィルタを使用しています。このフィルタはカルマンフィルタよりマイコンに負荷がかかりにくい事で有名なフィルタです。

 

Madgwickフィルタのサンプリング周波数を10Hzと指定しています。

初期は100Hzらしいです。しかし、応答速度が低く目標の値まで時間がかかってしまったので、下げることにより精度を下げる代わりに応答速度を上げました。

今回は3軸シンバル姿勢制御が目標だったため(一応)応答速度を重視しましたが、各自用途によってサンプリング周波数を変更してください。

 

さらに磁気センサを使用すると周りの磁気の影響を受けてしましますので、roll,pitch,yawの誤差が酷いようでしたら下のように書き換えて6軸のみの計算に切り替えてみてください。

madgwickFilter.updateIMU(xGyro,yGyro,zGryo,xAccl,yAccl,zAccl);

 

f:id:tomi-tomi-pon:20181107011343p:plain

図 実行結果

 

このように値を算出する事ができました。yawの値が時間が経過するにつれドリフトしていますが、それ以外の数値の精度はハードウェアに実装しても問題ないレベルの精度です。

 

補足として

GRYO,ACCL,MAG,XYZ_ROTATIONを数字に置き換えたのはシリアル通信でProcessingにアニメーション化するためにこのようにしました。

次 グラフ化させるため1つのテンプレートを作る

http://tomi-tomi-pon.hatenablog.com/entry/2019/04/08/145913

 

その次 BMX055のデータをグラフ化させ3Dアニメーションを付ける

http://tomi-tomi-pon.hatenablog.com/entry/2019/04/08/181841

 ※2019/10/23 一部修正

pubg のディスプレイ解像度変項、およびハイライト自動キャプチャ―ができない対処

PUBGの解像度が変更できなくなる

さて、引っ越しが終わりPCの電源が起動することを確認してpubgを起動したとき

解像度の変項及び、ハイライト自動キャプチャ―が変更できなくなりました。

f:id:tomi-tomi-pon:20180721124928p:plain

このように変更の場所がありません、というか押せません。

 

同時にNVIDEAのGeforce Experienceの共有ボタンも押せなくなり、録画及びスクショができなくなりました。つい先日引っ越すまではできていたのに.......

 

対処法

 

対処法はいたって簡単でした。ただ、モニターのケーブルをグラボに直結させるだけでした。マザボ側にさしていたが原因でしたとは完全盲点でした。

 

f:id:tomi-tomi-pon:20180721124736p:plain

f:id:tomi-tomi-pon:20180721124736p:plain

f:id:tomi-tomi-pon:20180721124734p:plain

無事にGeForce Experience が起動してくれたのでこれで配信やらキャプチャができたりできるようになりました。

 

 

まとめ

ggっても出てこないし(あたりまえ) これを発見するまでPCを再起動かけたり、モニターの解像度変更したり、PUBGをアンスコしたりして結構苦労しました。ほんと.....

 

間違える人なんてまずいなそうですが、参考程度にどうぞ