Head Tracking with a Mobile Phone - works remarkably well!

Moderators: Uros, Tom, OXO

Post Reply
User avatar
JBlyth
Posts: 183
Joined: Thu Apr 23, 2020 12:10 pm

Head Tracking with a Mobile Phone - works remarkably well!

Post by JBlyth » Sat May 16, 2020 9:41 am

I am new to Condor, but I have been experimenting with Head Tracking with an old Samsung S4 Android Mobile phone I had laying around, and it is remarkably effective.

I'm using HeadTracker from the Play Store, OpenTrack from https://github.com/opentrack/opentrack , and while it took some time to tune it to work nicely, I have been surprised at how well it works.

My Surface Book 2 laptop is very under the minimum video specifications for Condor 2, but I have been amazed at how well it works anyway. I was "flying" with three monitors (two 32" and my laptop screen), however I now use just the better of the two monitors with Head Tracking. I think it is a lot more realistic.

WARNING:- you will look like a total nut sitting at your computer with a phone on top of your head, but it works. I have used double sided Velcro to attach the phone to a headset that is nice and comfortable.
Setup1.png

After scrolling down the app screen - don't forget to set the IP address of your computer and the port set in HeadTracker
Setup2.png
My OpenTrack ini file is below. The nifty trick about using the X, Y,and Z axes came from this video. https://www.youtube.com/watch?v=4fUb87WsdaY&t=564s

In the end, I didn't use the roll settings discussed.

Cheers
John in Sunny Carnarvon - Western Australia

HeadTrack Condor.ini file:- Copy from below the "=============="
=======================================
[migrations]
last-migration-at=20180428_00~

[opentrack-ui]
pitch-invert-sign=true
roll-invert-sign=false
keycode-center=
yaw-invert-sign=true
z-source-index=4
x-source-index=6
y-source-index=4
roll-source-index=6
neck-enable=false
neck-depth=11
compensate-translation-disable-source-yaw=false
compensate-translation-disable-source-pitch=false
compensate-translation-disable-source-roll=false
relative-translation-mode=0
compensate-translation-disable-x-axis=false
compensate-translation-disable-y-axis=false
keycode-zero-alt=
keycode-zero=
guid-zero={B0C58640-8BC3-11EA-8002-444553540000}
button-zero=0
y-invert-sign=true
z-invert-sign=true
guid-center={B0C58640-8BC3-11EA-8002-444553540000}
button-center=1
pitch-zero-pos=0
y-zero-pos=0
z-zero-pos=-3
center-at-startup=true

[modules]
tracker-dll=udp
filter-dll=kalman
protocol-dll=freetrack

[udp-tracker]
add-yaw=1

[opentrack-mappings]
pitch-alt-axis-sign=true
yaw-alt-axis-sign=false
yaw-max-value=60
pitch-max-value=45
pitch-max-output-value=-180
z-alt-axis-sign=true
x-max-value=100
y-alt-axis-sign=true
z-max-value=15

[spline-pitch]
points="@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@\x1a\0\0\0\0\0\0@2\0\0\0\0\0\0@,\0\0\0\0\0\0@Y\0\0\0\0\0\0@5\0\0\0\0\0\0@e\0\0\0\0\0\0)"

[alt-spline-pitch]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x2@F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0@V`\0\0\0\0\0\0\0\0\0\0\0\0\0)

[spline-yaw]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x5\xc0\0\0\x34m\xc5\xd6\x39\0\0\0\0\0\0\0\0@%\0\0\0\0\0\0@0\0\0\0\0\0\0@4\x80\0\0\0\0\0@M\0\0\0\0\0\0@N\0\0\0\0\0\0@X\xc0\0\0\0\0\0@f`\0\0\0\0\0@f\x80\0\0\0\0\0)

[alt-spline-yaw]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3?\xf8\0\0\0\0\0\0@E\0\0\0\0\0\0@\x10\0\0\0\0\0\0@S\xc0\0\0\0\0\0@%\0\0\0\0\0\0@d@\0\0\0\0\0)

[proto-freetrack]
used-interfaces=2

[spline-X]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@&\0\0\0\0\0\0@*\0\0\0\0\0\0@5\0\0\0\0\0\0@3\0\0\0\0\0\0@X\xe0\0\0\0\0\0@H\x80\0\0\0\0\0)

[spline-Y]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x1@>\0\0\0\0\0\0\0\0\0\0\0\0\0\0)

[alt-spline-Y]
points="@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0@2\x80\0\0\0\0\0@\x14\0\0\0\0\0\0@=\x80\0\0\0\0\0@ \0\0\0\0\0\0)"

[spline-Z]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@>\0\0\0\0\0\0\0\0\0\0\0\0\0\0)

[alt-spline-Z]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x1@$\0\0\0\0\0\0@\x1c\0\0\0\0\0\0)

[spline-roll]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x1@f@\0\0\0\0\0@C\x80\0\0\0\0\0)
You do not have the required permissions to view the files attached to this post.

Post Reply