FreeTrack Forum

Welcome, you're not connected. ( Log in - Register )

RSS >  Freetrack alternative
C14 #1 25/09/2012 - 15h53

Class : Apprenti
Posts : 7
Registered on : 29/06/2012

Off line

Hi,

Since I got frustrated with the stability of Freetrack
(had a lot of memory exceptions and trouble to get it to work with Arma2)
and since Freetrack seems to be no longer actively developed
(latest version of 2008),
I decided to develop an alternative.

In the process I found the tracking software FaceTrackNoIR, which supports
modular tracker plugins,
so I decided to write a tracker plugin which supports tracking an IR point model.

And here it is:
https://sourceforge.net/projects/ftnoirpt/
For instructions, see also this thread:
https://sourceforge.net/projects/facetracknoir/forums/forum/1150910/topic/5869855

The plugin does not nearly have all of the Freetrack features yet, let alone the great documentation.
It only supports point models with 3 points up till now,
and should not be thought of as an replacement, but as an alternative when Freetrack is too unstable.
However, the core algorithm is the same (POSIT) and the tracking performance is solid.
As a small teaser, here is a short video of its use in Arma2Free:
http://www.youtube.com/watch?v=STGXrk4fNDs

In case someone wants to test this new tracker,
I'd be happy to receive feedback (tracking experience, bugs, suggested features...)

Happy tracking...
C14
sf4JC #2 27/09/2012 - 11h50

Class : Apprenti
Posts : 22
Registered on : 10/09/2007

Off line

THANKS again for this!  Now I've got much more precision inside the Virtual Cockpit.  I did see one possible bug in the curves section last night though, I will post back on the website.

Scott
Steph #3 08/10/2012 - 08h59

Class : Moderator
Posts : 656
Registered on : 16/11/2007

Off line

Hi,

I have tried  FaceTrackNoIR several times and recently again with this plugin.
Installation runs without any problems.
The only issue is, that I have a great deficiency of responsitivity and therefore low accuracy. This makes tracking unusable for sims like IL-2 where sometimes you even need quick 360° rotations.
I got the same feedback from other pilots so my question is: Is there any way to improve this behaviour.  We are fiddling around with any settings we could find without success so far.

Anyway, I think it's a great alternative (as you already said) to avoid installation and setup-problems that many of us meet with Freetrack.

In addition, my modest personal suggestion:
My experience from this forum shows, that most of the tracking problems with wrong output behaviour are the result of wrong model setup.
I think some simple model graphics with axis designations in relation to head-position in the set-up sections could say more than every word explanation. ;)
C14 #4 09/10/2012 - 09h33

Class : Apprenti
Posts : 7
Registered on : 29/06/2012

Off line

Hi Steph,

1. Responsibility:
This is probably just a question of the filter settings.
(of course, there is always the tradeoff between steadyness and responsibility)

I got good results with the following settings:
- turn off the simple mean filtering by settings the smoothing samples to 1.
- in the filter menu, select "Accela Filter Mk2" and hit settings.
You will see curves for rotation and translation.

I set the following points (you can just replace the corresponding section in your settings file to try it out):
[Curves-Accela-Scaling-Rotation]
point-count=5
point-0-x=0
point-0-y=0
point-1-x=1
point-1-y=0.5
point-2-x=2
point-2-y=2
point-3-x=2.5
point-3-y=4
point-4-x=2.7
point-4-y=6

Some explanation what this filter does (its quite simple but effective):
It looks at the difference between the new raw values from the tracker and the last filtered values and maps this difference via the custoizable response function f by:

new_val = old_val + f(new_val - old_val) / 10

So if you set f(x) = 10*x, you will get no filtering at all.
If you set lower values for small x, then small deviations (usually noise) will get dampened. (a dynamic dead-zone around the current position so to say)

What is important is the last two points, because accela uses them to extrapolate for large deviations.
If you want to get a fast unfiltered response, be sure to set a slope >= 10 here. (the slope for extrapolation in the settings above is (6-4)/(2.7-2.5) = 10)

2. Setup:
Did you try the new version? I introduced a graphical setup for the model dimensions ala freetrack there.
As for the model-head offset, the coordinate system should be the same as freetrack's, but you do not need to enter them manually, because there is the automatic calibration.
Steph #5 09/10/2012 - 12h50

Class : Moderator
Posts : 656
Registered on : 16/11/2007

Off line

Hi Patrick,

thanks for these detailed and clear explanations.
I already tried the accela filter but obviously misunderstood the right usage.
I will give a try again with your illustration.

2. I read about the new version yesterday, when going further in reading on SourceForge.net and will test it as soon as possible.
Customizable frame-rate and resolution are good news as well for this update.
Gian92 #6 25/12/2012 - 17h40

Class : Habitué
Posts : 92
Registered on : 08/04/2012

Off line

Patrick, great kudos from me.

I've tested your solution today and it's impressive. Nevertheless, the translations don't seem to work as they should, perhaps I have to play with the settings more (besides the lack of the dummy TrackIR.exe which I need, but I guess that's a FaceTrackNoIR flaw).

The model position calibration is a remarkable leap forward.
Ordem e progresso” - Brazilian flag
MacDillon #7 04/01/2013 - 09h21

Class : Apprenti
Posts : 1
Registered on : 04/01/2013

Off line

Does anyone here on the forums know of a true 1:1 360 headtracking system? Or perhaps know of software that enable this via a webcam ?



——————————————————
"Brevity is the soul of stockings and hosiery." ~ Dorothy Parker
kicaj222 #8 07/01/2013 - 16h52

Class : Apprenti
Posts : 1
Registered on : 15/12/2012

Off line

It is working, smoother than freetrack, but in flight simulator x the head of the pilot is few meters in front of the plane, and no possibility to adjust,
However great job, looking forward for next releases  :D
JayPee #9 10/01/2013 - 14h36

Class : Apprenti
Posts : 12
Registered on : 10/01/2013

Off line

C14 @ 09/10/2012 - 10h33 a dit:

Hi Steph,

1. Responsibility:
This is probably just a question of the filter settings.
(of course, there is always the tradeoff between steadyness and responsibility)

I got good results with the following settings:
- turn off the simple mean filtering by settings the smoothing samples to 1.
- in the filter menu, select "Accela Filter Mk2" and hit settings.
You will see curves for rotation and translation.

I set the following points (you can just replace the corresponding section in your settings file to try it out):
[Curves-Accela-Scaling-Rotation]
point-count=5
point-0-x=0
point-0-y=0
point-1-x=1
point-1-y=0.5
point-2-x=2
point-2-y=2
point-3-x=2.5
point-3-y=4
point-4-x=2.7
point-4-y=6

Some explanation what this filter does (its quite simple but effective):
It looks at the difference between the new raw values from the tracker and the last filtered values and maps this difference via the custoizable response function f by:

new_val = old_val + f(new_val - old_val) / 10

So if you set f(x) = 10*x, you will get no filtering at all.
If you set lower values for small x, then small deviations (usually noise) will get dampened. (a dynamic dead-zone around the current position so to say)

What is important is the last two points, because accela uses them to extrapolate for large deviations.
If you want to get a fast unfiltered response, be sure to set a slope >= 10 here. (the slope for extrapolation in the settings above is (6-4)/(2.7-2.5) = 10)

2. Setup:
Did you try the new version? I introduced a graphical setup for the model dimensions ala freetrack there.
As for the model-head offset, the coordinate system should be the same as freetrack's, but you do not need to enter them manually, because there is the automatic calibration.


If I understand Accela correctly, my head movement delta (difference compared to last known position) is X, while the corresponding Y-value is the delta movement generated by the filter and transfered to the game. That would mean if my curve is linear with a slope coefficient of 1 ([1;1],[2;2],[3;3],etc. coörds.) my head input to signal output ratio is 1:1, right?

I also noted that with optimal cam settings, my head input data is always wobbling from about -2.5 to +2.5, so it has a constant uncontrolled deviation of roughly 2.5.

So again, if I understand Accela correctly, for a 100% accurate and lagless translation from head movement input to signal output I would need two things:
A) A linear curve with a slope coefficient of 1
B) An option to completely disregard the first -2.5 to +2.5 in the delta X
or
C) An option remove the wobbling from the movement input (which currently does not seem achievable with FaceAPI)

Am I correct in my theoretical approach? And if so, how do I achieve this? What would my Accela curves need to look like?

Oh and I'm using a better webcam with constant 30 FPS and hardly any CPU usage. Every auto setting is disabled.
C14 #10 13/01/2013 - 12h09

Class : Apprenti
Posts : 7
Registered on : 29/06/2012

Off line

Thx for your support!

@Gian92:
Could you post the details of your y-translation bug in the FTNoIR forum again? However, it looks like its related to FTNoIR (which handles the communication with the actual game) and not the Pointtracker plugin itself, unless you get y translation in the output shown in FTNoIR.

@JayPee:
You are right about your accela explanations, except for the fact that the y-coordinates in my test version are scaled down by a factor of 10 and in the official FTNoIR version by a factor of 100 (see post above, this is because of some limitations witht the functionconfigurator-widget, which only allows integer ranges)
In the new version of FTNoIR, this additional reduction factor will be configurable.
So to get 1:1 output, you currently need a slope of 10 or 100.
To disregard deviations of 2.5 and get 1:1 transition otherwise, you could try to set (2.5,0), (2.6,26).
For further questions about accela please post to the FTNoIR help forum.
Gian92 #11 24/01/2013 - 08h19

Class : Habitué
Posts : 92
Registered on : 08/04/2012

Off line

Hi Patrick,

I've solved that bug unchecking "ShowVideo Widget" in the settings. Now it's perfect.

Regards
Ordem e progresso” - Brazilian flag
SwiftyUKCX #12 21/02/2013 - 00h37

Class : Apprenti
Posts : 5
Registered on : 28/01/2013

Off line

Hi Guys,
           C14 what a lovely piece of software you have shared with us, a massive thank you, personally I like it better than FeeTrack, with a little 'tweaking' its smooth, accurate and it works without crashing!!!! A BIG thanks again.

Win 7 64 bit
AMD 965  o/c 3.6Ghz
8Gig DDR3 RAM
Nvidia TX660
3 Point cap sfh485p LED's
PS3 Camera with IR Filter removed
Camera resolution set to 640x480
99FPS Focal length/sensor width 3.40
Min Diameter 5px  Max Diameter 35px

            I have found a slight bug that 'at the moment' while playing Flight Simulator X, I haven't been able to solve, its the position of the pilot, he is around a meter or so forward of the correct position, thus not allowing visuals of the controls etc.

IF anyone has managed to fix this bug or found a way around it  please could you post your comment here, or even if C14 has time to address this or post a fix it would be very gratefully appreciated.

Also posted onSourseforg.net
Edited by SwiftyUKCX on 22/02/2013 at 00h06.
CyberVillain #13 01/03/2013 - 09h58

Class : Apprenti
Posts : 14
Registered on : 07/11/2011

Off line

Nice work C14!

How much help do you get from the Facetracknorir API?

I would love to see something like this get integrated into FreePIE and cut of the overhead of having two programs one for optic tracking and than FreePIE for baking the signal to a format that all games can use.

FreePIE does not offer any API for accesing webcameras etc though, thats why I'm asking
C14 #14 13/03/2013 - 17h39

Class : Apprenti
Posts : 7
Registered on : 29/06/2012

Off line

@SwiftyUKCX:
Seems to be a similar problem to Gian's and must be some protocol issue with FSX. Is this specific to Pointtracker or do you see the same effect when using the IR-free facetracking?

@CyberVillain:
There is no camera input support from FTNoIR, it is currently done in Pointtracker using the videoinput library.
So yes, I think it could be integrated into another program quite easily.
You may have a look at the code at svn+ssh://svn.code.sf.net/p/ftnoirpt/code/trunk
sthalik #15 27/04/2013 - 12h03

Class : Apprenti
Posts : 3
Registered on : 27/04/2013

Off line

Thanks Patrick for explaining how Accela works, so that everyone understands it :)

Can you take a look at what happened to PT after 1.7? Did I break anything?

Anyone wants to take on 1.8 pre-alpha? Builds available at:

http://ananke.laggy.pk/ftnoir/

New features

- Memory leak fixes, crash bugfixes, handle leaks plugged
- NaturalFailClient.c fixed somewhat
- Zoom slowness for MFD viewing pleasure
- Filter polling interval increased 10x for better interpolation
- No OpenGL crashes at startup or otherwise
- Linux support!
- New tracker
- Support for Oculus rift (working) and Hillcrest (WIP)
- Proper interpolation of control points in Accela and curves, no longer make differential shape...

Please report bugs through email, sthalik@misaki.pl

Trying to get it into shape and feature-complete for the next point-release :)

cheers!
-sh

 >  Fast reply

Message

 >  Stats

1 user(s) connected during the last 10 minutes (0 member(s) and 1 guest(s)).