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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
donabe
July 10, 2021
760
0
Share
Arduinoと加速度センサーを使って自作コントローラーを作りたい
大LTのスライドです。Arduino初心者なんでお手柔らかに…
なにかアドバイスあればお願いします。
donabe
July 10, 2021
More Decks by donabe
See All by donabe
Unityがマルチプラット フォームビルドできる理由は? よく聞くIL2CPPって? 調べてみました!
donabe3
0
22
ハッカソン請負人の 開発ルーティンを紹介!
donabe3
0
71
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
340
OutOfRange 【プロトスプリントリーグ】
donabe3
0
91
Unityで都市開発シミュレーションゲーム開発をしてみよう
donabe3
0
450
現実 VS バーチャルのマルチプレイゲームを作ろう
donabe3
0
190
Speech to Textureで 思い通りに世界を改変しよう
donabe3
0
34
院試までなにやったか
donabe3
0
39
XR Interaction toolkit & XRHands & Passthrough API で MR 開発
donabe3
0
290
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
320
A designer walks into a library…
pauljervisheath
211
24k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
530
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Abbi's Birthday
coloredviolet
2
7.6k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
330
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
ラッコキーワード サービス紹介資料
rakko
1
3.3M
What's in a price? How to price your products and services
michaelherold
247
13k
Unsuck your backbone
ammeep
672
58k
Optimizing for Happiness
mojombo
378
71k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
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
ご清聴ありがとうございました