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
490
Arduinoと加速度センサーを使って自作コントローラーを作りたい
大LTのスライドです。Arduino初心者なんでお手柔らかに…
なにかアドバイスあればお願いします。
donabe
July 10, 2021
Tweet
Share
More Decks by donabe
See All by donabe
Unityで都市開発シミュレーションゲーム開発をしてみよう
donabe3
0
34
現実 VS バーチャルのマルチプレイゲームを作ろう
donabe3
0
79
Speech to Textureで 思い通りに世界を改変しよう
donabe3
0
12
院試までなにやったか
donabe3
0
16
XR Interaction toolkit & XRHands & Passthrough API で MR 開発
donabe3
0
160
XRの魅力を語りたい
donabe3
0
18
IVRC、Iwaken Lab.で 見える世界が圧倒的に広がった一年 ~VRで非日常を創造して~
donabe3
0
9
最近実感したこと
donabe3
0
17
IVRCの経験を喋る
donabe3
0
18
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
What's in a price? How to price your products and services
michaelherold
243
12k
Writing Fast Ruby
sferik
627
61k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Being A Developer After 40
akosma
86
590k
Building Applications with DynamoDB
mza
90
6.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
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
ご清聴ありがとうございました