Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@Monzo_N

おまけ:2018年のLightning Talkネタ

More than 1 year has passed since last update.

3-1 何をやったか

2018年EXPOのLightning Talkではモーションセンサを用いたデモを行ないました。
加速度センサとジャイロセンサを組み合わせた手法(Invensense社のDMPなど)を用いると、角度(ロール・ピッチ・ヨー角)に関しては、かなり安定します(少なくともデモを行なう程度の時間なら全然、問題ありません)。
ということで、向きを変えて見せるなら飛行機かなと思いました。
モーションセンサからArduinoにI2Cでデータを拾うプログラムは公開されていて、私が使ったMPU-9250のライブラリはこの辺を参考にさせていただいています。
ArduinoからMATLABにデータを転送するところは、今年のマウスのデモとほぼ同じ手法です。

3-2 MATLABでいかに見せるか

ちなみにArduinoでもProcessingというプログラミング環境と組み合わせて3Dのデモはできるようになっています。なので、デモをやろうとすると、そうですね、やっぱりどこかで超えないとつまらないかな、は考えました。
3DのAirplaneモデルは、MATLAB File Exchangeのこちらのページから使わせていただきました。

3-3 苦労した点

実際にモーションセンサのデータに合わせて3Dの描画を行なおうとすると、処理が重くて追従しないことがわかりました。
やっぱりリアルタイムについてこないと、面白くないです。
どうやって解決したかと言うと、「飛行機は動かさない」ということになりました。
1回、飛行機を3Dで描画したら、もう再描画はしません。
飛行機の代わりにカメラ位置とカメラアングルが動いているんです。
カメラを動かす部分のスクリプトを下記に示します。

cameraview.m
ax=gca;%現在のfigure
ax.CameraTarget = [0 0 0];%カメラの対象物の座標
d = 7000;%カメラの初期位置
ax.CameraPosition = [d 0 0];%カメラを初期位置に設定

ax.CameraViewAngle = 8;%カメラを初期角度に設定

[Ybias,Pbias,Rbias] = DPMget(s);%飛行機の姿勢の初期位置取得


for t=1:1000
    [Y,P,R] = DPMget(s);%飛行機の姿勢を取得
    grd=-(Y-Ybias)*(pi/180);
    prd=P*(pi/180);
    qrd=R*(pi/180);
    [Zc,Xc,Yc]=sph2cart(qrd,0,1);

    [Yd,Xd,Zd]=sph2cart(grd,prd,d);
    ax.CameraPosition = [Xd Yd Zd];%カメラポジション移動

    ax.CameraUpVector = [Xc 0 Zc];%カメラ角度変更
    drawnow;%すぐに描画
end
%以下、略

というようにして、カメラを飛行機の周りに飛び回らせて、あたかも
飛行機の向きが変わるように見せています。

以下、デモのムービーです。

おつかれさまでした。

その1にもどる

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Monzo_N
某社の中の人。 本業はアナログ系ハードウェア技術者です。 個人的見解、ということで。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?