見出し画像

タッチレスマウスを作ってみた

以前公開した動画はこちら↓

こんにちは。
更新が滞ってしまいましたが、以前まで製作していた #頭部入力デバイスを作ってみる のシリーズは一旦お休みします。今回は新たにタッチレスマウスを製作したのでそちらを紹介したいと思います。

背景

以前から少しづつ、コツコツと頭部入力デバイスの製作を進めていたのですが、コロナで自粛の折、タッチレスなシステムの需要が上がっていると聞きました。ちょうど製作途中だった頭部入力デバイスを少し改変すれば出来そうだったので、作ってみました。

もともとHIDデバイスとして製作していましたが、ハードウェアになってしまうと普及が難しくなるので、Windowsアプリケーションとして実装しています。(MacOS版も製作中です)

ダウンロード

ここからダウンロードできるようにしておきました。
必ず、以下の注意を読んでから使用してください。

======================注意!======================
こちらのアプリは、あくまで私が個人で開発したものです。
テストなども、私の手もとにある2台のWindows10のパソコンで行ったのみで、多くのリソースを投入しての確認などは行っていません。
一応、PCを壊してしまうような危険なものは入っていませんが、操作がうまくいかず、間違ってクリックして大事なファイルが消えた。などの事態は起こってしまうかもしれません。実行時の環境には十分注意してください。
使用は完全に自己責任でお願いいたします。動作保証もありません。
でも、もっとこうしてほしい、こうなればいいのにといったご意見は歓迎いたします。すべてに答えるのは不可能ですが、できる限り改善したいと思います。
================================================

現在Windows版のみの公開です。
リンク先のWindowsフォルダ内、"AprilTagMouse_win.exe"がこちらで紹介しているものと同等のものです。
ダウンロードしたらコメントいただけると幸いです。

詳細

こちらがシステムの詳細を紹介した動画です。

ARマーカーを認識する方式です。ARマーカーには*AprilTagを使っています。Nintendo Switchのようなジャイロのコントローラーと似た操作感です。以下の3つが、このシステムの強みです。

・アプリケーションなので導入しやすい

・コントローラーとPCをペアリングしない

・コントローラーが安価で済む

まず、こちらはアプリケーション形式なので、既存のシステムにダウンロードすればそのまま使えます。デスクトップPCの場合はWebカメラが必要ですが、そこまで高価なものでなくてもよいです。ノートPCならそのまま、PCについているカメラを使います。一気に大量の導入もできます。

次に、コントローラー側とPCの間の通信がないという点です。動画で紹介しているように、同じアプリが起動されているPCであれば、ひとつのマーカーで複数台のPCが操作できます。

最後に、コントローラーが安価で済む点です。コントローラー側はマーカーが認識できれば何でもよいです。気を付けるのは、マーカーの印刷された面がある程度平面が出ていることと、反射しないようにすることです。厚紙などでもよいので、安価に製作可能です。

*Copyright (C) 2013-2016, The Regents of The University of Michigan. All rights reserved.
TagFamily = tag36h11、ID = 0のもの。

起動方法

ダウンロードしたら、ダブルクリックで実行できます。
立ち上がるまでがちょっと遅いです。。。

デスクトップPCの場合はwebカメラを接続してください。
ノートパソコンであれば、PC本体のカメラを優先的に認識します。

ダブルクリックしたら、黒い画面が立ち上がり、しばらくするとカメラ画像(モノクロ)のウィンドウが立ち上がります。
カメラ画像を確認しながら、どの程度の範囲が映っているのか確認してください。マーカーがカメラに写っていないと、カーソル操作ができません。

確認出来たら、どちらのウィンドウも邪魔なので最小化しておきましょう。
出しておいてもいいですが、黒い画面はクリックしてしまうとプログラムが停止してしまうので注意してください。
もしクリックしてしまった場合は、もう一度黒い画面にフォーカスしてエンターを何度か押してください。カメラ画像が動き始めたら復活です。

マーカーはこちらです。

画像1

マーカーはスマホの画面でもいいですし、印刷して使ってもいいです。小さくても動きますが、認識が外れやすいので、可能であれば一辺が2.5cm~3cm程度あれば確実です。スマホを使う場合はスリープを切るのを忘れずに。印刷して使う場合は、厚紙などのできるだけしっかりしたものに貼りましょう。(ぺらぺらしないもの)
また、動画で紹介したように、マーカーの動きが早いと、画像がぶれて認識できないので注意です。

終了方法

黒い画面のウィンドウを、右上の"×"で閉じてください。
動画にあるように、カメラ画像のウィンドウを閉じても終了しないので注意してください。

操作方法

マーカーの上下に注意しましょう!上に貼ってある画像の向きがニュートラルです。この向きでカメラに向けた時のマーカーの姿勢を0度とします。
角度は全て、"カメラに対して" ですので注意してください!
マーカーが中心で回転するように、素早く回すのがコツです。

・反時計回りに45度以上傾ける
 マウスの左ボタンを押し込んだ状態になります。
 傾けたまま移動すればドラッグできます。

・反時計回りに45度以上傾けた状態から元に戻す
 左ボタンを離した状態になります。
 左クリックするには反時計回りに45度以上傾けて、
 戻すという動作が必要になります

・時計回りに45度以上傾ける
 マウスの右クリックです。
 左と違い、押し込んだ状態にはなりません。
 傾けた時点でクリックになります。

・前に45度以上傾ける
 下スクロールです。

・上に45度以上傾ける
 上スクロールです。

*その他にも、ID=1のTagを認識すると左クリック、ID=2のTagを認識すると右クリックする機能が入っていますが、動作が遅くなるためあまり推奨はしません。

また、こちらはマーカーを左に傾けたときのイベントが"左マウスダウン"となっていますが、左ドラッグを行わないのであれば、
"AprilTagMouse_win_click.exe"の方が使いやすいです。
こちらは、左の傾けたらその時点で"左クリック"が発生します。イベント発火の角度も20度程度に設定してあります。

今後について

今後はこれの修正を続けながら、いくつかやってみたいことがあるのでそれを少しづつ進めていきます。

・MacOSに対応する
動画に出ていたと思いますが、Macでも起動はできているので、もう少しです。もう少しテストをして、ビルドが通れば公開可能です。

・パラメータを設定できるようにする
マウスカーソルの移動スピードや、各操作に対応するマウスイベントの設定、不要なウィンドウの非表示、使用するカメラの選択など、今ハードコーディングされている部分をユーザーが変更できるようにしたいです。

・M5Stackでのハードウェア化
動作は遅くなってしまいますが、完全にハードウェアにすることも可能なのでやってみています。ハードウェア化することで、タブレットやLinuxPCも操作できるようになります。

・頭で入力できるようにする
マーカーを顔のどこかに付ければ、頭で操作できるようになります。頭は手と違って動きが小さいので多少カクカクしますが、十分使えるレベルです。
自前の音声入力と組み合わせて、パソコンに全く触れずにブラウザを立ち上げてYouTubeで好きな動画を検索して見られる程度には、今私の手もとで動いています。もともとの目的はこれだったので、そのうち公開します。

・マーカーなしでも入力できるようにする
まだ何もためしていませんがMediaPipeやLeap Motionなどを使えば、マーカーなしで直接手を認識して動かせるかもしれません。
認識の精度や計算コストなど、やってみないと使用に耐えうるものになるかどうかわかりませんが、調査してみる価値はありそう。
→8/6 やってみました。手で入力するならleap motionがおすすめです。

最後に

ソースコードはここに置いてあります。

https://drive.google.com/drive/folders/1nM6LlWc6BNCsyceVYtdgPGyNTZGjNegG?usp=sharing




よろしければサポートをお願いいたします。 デバイス、ソフトウェアの資金や、今後の活動へのモチベーションとさせていただきます!