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
780
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Arduinoと加速度センサーを使って自作コントローラーを作りたい
大LTのスライドです。Arduino初心者なんでお手柔らかに…
なにかアドバイスあればお願いします。
donabe
July 10, 2021
More Decks by donabe
See All by donabe
Unityがマルチプラット フォームビルドできる理由は? よく聞くIL2CPPって? 調べてみました!
donabe3
0
27
ハッカソン請負人の 開発ルーティンを紹介!
donabe3
0
78
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
350
OutOfRange 【プロトスプリントリーグ】
donabe3
0
100
Unityで都市開発シミュレーションゲーム開発をしてみよう
donabe3
0
480
現実 VS バーチャルのマルチプレイゲームを作ろう
donabe3
0
200
Speech to Textureで 思い通りに世界を改変しよう
donabe3
0
41
院試までなにやったか
donabe3
0
48
XR Interaction toolkit & XRHands & Passthrough API で MR 開発
donabe3
0
290
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
520
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
970
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
WCS-LA-2024
lcolladotor
0
750
Joys of Absence: A Defence of Solitary Play
codingconduct
1
420
GraphQLとの向き合い方2022年版
quramy
50
15k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
370
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Bash Introduction
62gerente
615
220k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
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
ご清聴ありがとうございました