Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Arduinoと加速度センサーを使って自作コントローラーを作りたい
Search
donabe
July 10, 2021
0
460
Arduinoと加速度センサーを使って自作コントローラーを作りたい
大LTのスライドです。Arduino初心者なんでお手柔らかに…
なにかアドバイスあればお願いします。
donabe
July 10, 2021
Tweet
Share
More Decks by donabe
See All by donabe
現実 VS バーチャルのマルチプレイゲームを作ろう
donabe3
0
70
Speech to Textureで 思い通りに世界を改変しよう
donabe3
0
11
院試までなにやったか
donabe3
0
16
XR Interaction toolkit & XRHands & Passthrough API で MR 開発
donabe3
0
140
XRの魅力を語りたい
donabe3
0
18
IVRC、Iwaken Lab.で 見える世界が圧倒的に広がった一年 ~VRで非日常を創造して~
donabe3
0
7
最近実感したこと
donabe3
0
16
IVRCの経験を喋る
donabe3
0
18
xR分野紹介
donabe3
0
16
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Statistics for Hackers
jakevdp
796
220k
How to Ace a Technical Interview
jacobian
275
23k
WebSockets: Embracing the real-time Web
robhawkes
59
7.4k
How to train your dragon (web standard)
notwaldorf
87
5.6k
How GitHub (no longer) Works
holman
311
140k
Infographics Made Easy
chrislema
239
18k
Building Better People: How to give real-time feedback that sticks.
wjessup
362
19k
Rails Girls Zürich Keynote
gr2m
93
13k
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Transcript
ARDUINOと加速度センサーを使って 自作コントローラーを作りたい 土鍋
自己紹介 • 会津大学学部2年の土鍋です • Twitter:@nabeyakiyudai • 所属サークル A-PxL(VRサークル) Zli(今年から) •
趣味 ゲーム(シミュレーション、ストラテジー)、アニメ、鉄道旅行、サカナクション Vtuber(ホロ、にじ、個人幅広く) 普段はUnityでVRゲーム作ってます 大学からプログラミングを始めてUnity(C#)ばっかり触ってて 他分野のことがあまりわからないので新鮮 去年のチーム開発の作品
きっかけ • IVRCというVR系のコンテストに参加したい • ハードウェア知識がない • 「Arduino」が始めやすいと聞いたので一か月前から触り始めた • Unityと組み合わせたらおもしろそう!
作りたいもの 「VR刀バトルゲーム」 Arduinoと9軸センサーを用いて制作した刀型コントローラーを振るとUnity内 の刀も連動して動く ぶっちゃけ、既存のVRコントローラーでできるし Wiiのコントローラーも似たような感じ… でも自分で作ることに意味がある!
使用したもの •Arduino UNO •Fabo #501、#202 •Unity 2020
Arduinoとは • 知ってる人も多そうですが… • イタリアで生まれたオープンソースのマイコン • 初心者でもプログラムを書いてかんたんにハードウェアで遊べる
Faboとは • 会津大学のOBが起業した会社、その製品 • 簡単にセンサーをセットアップでき、サンプルコードなどが充実している ため、初心者でもすぐに様々なセンサーを扱える
さて作っていきましょう 今回はArduinoとUnityの連携部分を作った ① センサーで加速度とジャイロ(角加速度)を取得 ② 値をシリアル通信でArduinoからUnityへ ③ 取得した値を利用して物体を移動させたり回転させたりさせる
加速度センサーの値を取ってくる。 • 9軸センサー(Fabo#202)は加速度、ジャイロ、コンパスの情報を獲得できる。 • 今回はコンパスは使わない。 • Faboが提供するライブラリを使用する。 • コードはサンプルコードをもとに書いた。
ArduinoとUnityをシリアル通信する • 取得した加速度、ジャイロの値をシリアル通信で受け取る • 受け取った値を物体に加速度を加えるメソッドと角加速度を加えるメソッドに入れる RBはRigidBodyです
まずジャイロの値をUnity内のキューブに反映
しかし、ここで問題発生 • 取得した値には重力の加速度も含まれる • 単純に値を使うことが出来ない
重力うざい! 地球から重力がなくなればいいのに… うーん
そうもいかないので • 重力を打ち消したい • 単純にZ軸の加速度から重力を引くと傾けたときに値がおかしくなる。 • つまり、センサーの座標軸ではなく重力に関してはワールド座標で考える 必要がある。
重力を打ち消す • ワールド座標Z軸正の向きに重力と同じ加速度を与えてみる。 • ただUnityではY軸(ややこしい) 重力加速度9.8だとうまく行かなかったので0.8
とりあえず出来た センサーを振り回すと動く めちゃめちゃ重い… なんでや…
苦労したこと • シリアル通信を行うととんでもなくUnityが重くなる • どうやらReadTo()の部分が原因のよう • (ギリギリまで粘ったけど結局改善出来なかったので、どなたか教えて下さい…) • 重力を考慮すること •
センサ座標とワールド座標 • もともと三軸でどうにか実装しようとしていたがうまく行かなかった • 徹夜で作った
まとめと今後の目標 • そんな重い処理じゃないはずなのになぜか重すぎるのでどうにかする必要がある • 挙動のずれが大きいので修正が必要 • 物理と数学はゲーム作る上で重要 • VRの中でも五感再現等に興味がある •
刀で切られた感覚を再現できたら面白いよね(ただの妄想) • IVRCは一人で挑戦するのは厳しいので、一緒にやってくれる人募集してます
みんなもゲーム作ろう • ゲームを作ると入力処理、敵のAI、パラメーターやアイテム管理、UI、ネット ワーク、アニメーション、モデリング、VFX、サウンドなどなど幅広い分野に 触れられる • デザインパターンやクラス設計など就職してから使うであろうことを学べる。 (とくにチーム開発)
参考資料 • https://faboplatform.github.io/ArduinoDocs/03.I2C%20Brick/202_brick_i2c_9axis/ • https://rikoubou.hatenablog.com/entry/2018/02/08/174506 • https://www.f-sp.com/entry/2017/09/06/181854 • https://docs.unity3d.com/ja/2018.4/ScriptReference/Rigidbody.AddRelativeForce. html
ご清聴ありがとうございました