3Dマウスの自作⑨ 動作不良の修正
2022.09.11


前回の記事はこちら
https://randol-news.net/art/00547.html

レバーの上方向と右方向の動作があやしい。
動画を見るとマウスカーソルのアイコンが変わるので、
検知は出来ていると思う。
反応が鈍いというか、倒している傾き量が適切に伝わっていないかんじ。



ジョイスティックの故障も考えられるけど、
まずは直接軸を倒してみて確認してみる。
どの角度でも問題なく動くことから、
可動域不足ということがわかります。



横から見るとジョイスティックの軸が中心から右にズレていることがわかります。
これじゃ、右の可動域が狭くなるはずです。
恐らくは使用しているジョイスティックが設計時の物と違い、
仕様変更されたのだと思われます。
穴位置も微妙に違いますしね。

解決方法は、

・底面の外装を修正し印刷しなおす。
・Arduinoの台座を修正し印刷しなおす。
・あとはジョイスティックを設計時のものと完全一致するものに変える。
・ジョイスティックの穴位置を変更する方法

この4つが思い浮かびます。



3Dプリンターで印刷しなおすのは正直面倒です。
楽なのは4つ目ですね。
基板を横にスライドできるように穴を拡張してみました。



基板位置をmm単位で調整しネジで固定。



左右バランスを均等にすることができました。
ついでに前後のバランスも調整しています。



どの角度でも動くようになりましたが、
逆にどの角度でも動作範囲が狭くなっている気がします。
これを解消するには、当たる部分をカット(造形しなおし)するしかなさそうです。

まぁ、回転や移動の速度はマウスを動かすだけで変化させることができるので、
問題ないと言えばその通りですが、もう少し移動量が多くてもいいですよね。



ちょっとソースを覗いてみましょう。
main.cppの908行目以降に、
ジョイスティックの処理をしている部分があります。
注目は929行目と937行目
この行でマウスカーソルを動かす処理をしています。
なんと私は大きな思い違いに気が付きました。
今までさんざん画面でマウスカーソルが動いているところを目撃していて
なぜ気が付かなかったんだろうかと・・

このOrbionはマウスカーソルを動かすことで
回転やパン動作をエミュレートしてるのです。
つまり、Orbionの操作とマウス操作は連動しており、
マウス操作とOrbionの操作はバッティングします。
正直致命的かもしれません(;´Д`)
3DConnectionのSpaceMouseは独立しているので、
左手と右手で別の作業を同時に行っても不都合は起きません。
Orbionも同じような動作なのだと思っていました・・
ショックです(;´Д`)

とりあえず改造して最初の目的である移動量を大きく変えてみます。



X方向、Y方向に対して移動量を3倍にする記述を足してみましょう。
これでかなり改善されました。
しかし、マウスカーソルと連動しているので、
カーソルが画面の境界にぶちあたったりすると、
それ以上進めないために回転処理が止まります。
3倍にしたので激突する機会も増えました(;´Д`)
なんか回転処理が動いたり止まったり不安定だなと思っていたのですが
原因がこんなことだったとはショックです。

ソースをもっと解析していい解決方法がないか研究する必要がありますね。
むぅ・・・

次の3Dマウスの記事はこちら
https://randol-news.net/art/00569.html

- CafeNote -