배경:
나는 수년 동안 만성 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
웹캠을 사용한 좋은 시선 추적 구현을 찾지 못했지만 가능할 것 같습니다. 내가 찾은 최고는 다음과 같습니다.https://github.com/antoinelam/GazeTracking 그러나 이는 단지 시선 추적 및 "왼쪽 보기" 또는 "오른쪽 보기"일 뿐이며 화면 투사를 향한 시선은 없습니다.
키보드 대신 음성을 사용하기 위해 내 설정을 사용합니다.https://git.sr.ht/~geb/numen 나는 마우스를 사용하지 않고 Vim 텍스트 편집기와 qutebrowser 웹 브라우저와 같은 키보드 중심 프로그램만 사용합니다. 계획은 Raspberry Pi에서 실행하여 Pi에 연결하여 모든 컴퓨터에서 사용할 수 있도록 하는 것입니다. 저는 다이어그램 그리기와 같이 포인팅 장치가 필요한 작업에 대해 시선 추적을 하고 싶습니다.
아마도 제가 여기서 말하는 내용 중 일부가 도움이 될 것입니다.
답변2
저도 RSI에 가입했고 2022년 3월부터 tobii 4c와 함께 talon을 사용하고 있습니다. 커뮤니티가 성장함에 따라 무료 배터리 포함 플랜입니다. 개인적으로 매우 빠르게 설정되고 Linux 시스템을 다시 사용할 수 있어 매우 만족합니다. 아직 설정을 조정하고 있지만 마음에 들지 않는 부분이 분명히 있습니다. 하지만 제 생각에는 사용자 경험(파이썬 스크립트 포함)이 평균 이상이며 제가 아는 것 중 단연 최고의 시작입니다. 또한 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