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
540
Arduinoと加速度センサーを使って自作コントローラーを作りたい
大LTのスライドです。Arduino初心者なんでお手柔らかに…
なにかアドバイスあればお願いします。
donabe
July 10, 2021
Tweet
Share
More Decks by donabe
See All by donabe
OutOfRange 【プロトスプリントリーグ】
donabe3
0
14
Unityで都市開発シミュレーションゲーム開発をしてみよう
donabe3
0
73
現実 VS バーチャルのマルチプレイゲームを作ろう
donabe3
0
92
Speech to Textureで 思い通りに世界を改変しよう
donabe3
0
15
院試までなにやったか
donabe3
0
17
XR Interaction toolkit & XRHands & Passthrough API で MR 開発
donabe3
0
180
XRの魅力を語りたい
donabe3
0
25
IVRC、Iwaken Lab.で 見える世界が圧倒的に広がった一年 ~VRで非日常を創造して~
donabe3
0
9
最近実感したこと
donabe3
0
17
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
66
11k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
260
Art, The Web, and Tiny UX
lynnandtonic
298
20k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
174
51k
Bash Introduction
62gerente
610
210k
It's Worth the Effort
3n
184
28k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
39
1.9k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
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
ご清聴ありがとうございました