背景:
私は長年にわたって慢性RSIを扱ってきましたが、ハンズフリーコンピュータ制御のためのさまざまなオプションを探していました。 Linuxは何年も私のOSで、可能であればWindowsに戻りたくありません。しかし、すぐに何も見つからない場合は、チップを数える必要があります。時間を見ながら数時間を過ごしました。
この肉:
特にヘッドトラッキングによる視線追跡(同じプログラムが望ましい)を探していますが、補完的なプログラムとしてジェスチャー技術を検討したいと思います。どんな価格でも大丈夫ですが、無料のオープンソースは常に良いです。推奨される追跡ハードウェアがある場合は、提案を提供してください。固定点を見ると、目は自然に揺れる(または断続運動)ため、この技術の利点は視線追跡速度と頭部追跡の単一ピクセル精度です。私はこの機能と音声認識スタックを使って、コンピュータはもちろんコードまで制御する予定です。
Precision Gaze MouseはEviacamで動作しますが、残念ながらPrecision Gaze Mouseは現在Windowsでのみ利用可能です。このような組み合わせを探しています。以下にリンクされているPrecision Gaze Mouseビデオは、どのように機能するかを示しています。参照リンクは次のとおりです。
答え1
大きすぎる期待はしないで、よく過ごしてください。 Linuxでは、Tobii視線トラッカー(Tobii 4CとTobii 5)用の同様のフリーソフトウェアを作成したいと思います。また、これをRaspberry Piにインストールし、Raspberry Piがマウスとして機能するようにしたいと思います(Linux Gadget、USB On-The-Go)。しかし、独占的にしか作成できず、WinDoWSゲーマーのみを対象とするため、ライセンスを購入する必要があるというメールを何度も受け取った後、私はあきらめました。
TobiiをサポートするTalonというものがあります。https://talonvoice.com 私はそれを使用しませんでした。それは巨大な排他的なパッケージですが、重要です。
Tobiiは安価で、ほとんどのアイトラッカーは学術目的で使用されているので、Tobiiに希望をかけました。比較は次のとおりです。https://thume.ca/2016/03/24/eye-tracker-reviews-pupil-labs-tobii-eyex-eye-tribe-tobii-x2-30
Webカメラを使用した良い視線追跡の実装が見つかりませんでしたが、可能であるようです。私が見つけた最高は次のとおりです。https://github.com/antoinelam/GazeTracking ただし、これは単に視線の追跡と「左側のビュー」または「右側のビュー」にすぎず、画面投影に向かう視線はありません。
キーボードの代わりに音声を使用するために私の設定を使用します。https://git.sr.ht/~geb/numen 私はマウスを使用せず、Vimテキストエディタやqutebrowser Webブラウザなどのキーボード中心のプログラムのみを使用します。計画は、Raspberry Piで実行してPiに接続し、すべてのコンピュータで使用できるようにすることです。ダイアグラムの描画など、ポインティングデバイスが必要な作業について視線追跡をしたいと思います。
おそらく私がここで言うもののいくつかが役に立ちます。
答え2
私もRSIに参加し、2022年3月からtobii 4cでtalonを使用しています。コミュニティが成長するにつれて、無料のバッテリーを含むプランです。個人的に非常に迅速に設定され、Linuxシステムを再利用することができ、非常に満足しています。まだ設定を調整していますが、気に入らない部分がはっきりしています。しかし、私の考えでは、ユーザーエクスペリエンス(Pythonスクリプトを含む)が平均以上であり、私が知っていることが断然最高のスタートです。また、talon を tobii ハードウェアへのインターフェイスとして使用することもできます。
# this is beta-API, the free version differs a tiny bit in its naming; leave a comment if you're interested
import pickle
from talon.plugins.eye_mouse_2 import BaseControlMouse
class StreamingMouse(BaseControlMouse):
def update(self, tracker, screen, frame):
# ~70 Hz on my system
socket.send(
pickle.dumps(
(
frame.gaze,
frame.head,
frame.gaze_frame.ts,
frame.gaze_frame.left.gaze.x,
frame.gaze_frame.left.gaze.y,
frame.gaze_frame.right.gaze.x,
frame.gaze_frame.right.gaze.y,
)
)
)
streaming_mouse = StreamingMouse()
streaming_mouse.start()
https://github.com/adabru/speech/blob/main/adabru_talon/code/eyeput.py