FreeTrack Forum

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

RSS >  Compiling FreeTrack
howecome #1 07/01/2008 - 13h14

Class : Apprenti
Posts : 15
Registered on : 08/11/2007

Off line

Hi there,

I'd like to compile FreeTrack for myself as I would like to bypass some of the stabilisation and sensitivity options.  Ideally I would like to get the data out in actual values of radians or degrees.

I am new to Delphi so it's been a steep learning curve so far.  I believe success is not too far away though.

I have an error...

[Error] ProfilesMngr_fm.pas(514): Undeclared identifier: 'FT_PROGRAMID'

FT_PROGRAMID is certainly declared in Freetrack_fm.pas but not until after the line where 'uses ProfilesMngr_fm' appears. Is this a problem?

The above error then leads to a further error...

[Fatal Error] Freetrack_fm.pas(824): Could not compile used unit 'ProfilesMngr_fm.pas'

Sorry for my ignorance.  Any help would be greatly appreciated.

Cheers,

Ally
Edited by howecome on 07/01/2008 at 13h44.
Kestrel #2 09/01/2008 - 02h31

Webmaster (admin)
Class : Webmaster (admin)
Posts : 780
Registered on : 13/07/2007

Off line

It's also defined in TIRTypes.pas.

Remove the PROGRAMID declaration from Freetrack_fm.pas and put TIRTypes into the uses list. Make sure TIRTypes is usable in ProfilesMngr_fm.pas.
DPLUIGI #3 09/02/2008 - 07h35

Class : Beta Tester
Posts : 50
Registered on : 04/01/2008

Off line

Hi,

I am glad I came across this thread since I would also like to understand how to compile FreeTrack.

Could you help me locate the compiler and library (hopefully they are free utilities) I'd need to compile FreeTrack?

I am new to Delphi and I would also appreciate if you could briefly describe or point me to links explaining who install and use a free Delphi compiler to generate an executable from FT source code.

Many thanks in advance,
Donat
Edited by DPLUIGI on 09/02/2008 at 18h44.
howecome #4 11/02/2008 - 09h16

Class : Apprenti
Posts : 15
Registered on : 08/11/2007

Off line

Hello,

This may not be officially correct, but it worked for me.

1) Get hold of Delphi Version 7 - the licence code can be obtained free from Borland but they do not distribute the software itself anymore.

2) Download the Freetrack source code from this site

3) Download the various libraries described in the readme file.  Then install each of these packages - this confused me a bit.  Unlike other libraries I have used in the past in other languages, you need to install the packages (rather than just linking them) as they add additional menu options to the Delphi IDE software.

4) You may need to change some of the project options, or the compilers options, so that all the dependencies can be resolved.

I hope this helps.

Ally
Edited by howecome on 11/02/2008 at 09h17.
DPLUIGI #5 11/02/2008 - 15h30

Class : Beta Tester
Posts : 50
Registered on : 04/01/2008

Off line

Thanks for the replies Ally and Kestrel.

Ally, in 1) do you mean that if one can find a Delphi software CD Borland would provide a "free" personal license?
If yes, since Borland does not distribute Delphi 7, where could I found the CD? The internet?  I am starting to ask around my programmer friends but so far no one uses Delphi.   :)

I am more familiar with C and C++ and I have to go back to my undergrad for a little programming experience using Borland product with Turbo Pascal in the early 90's.  :huh:   I am wondering how easy it'll be to get together a Delphi compiler and the required library.  The good news is that it looks like it could be free.   :)

Donat
Edited by DPLUIGI on 11/02/2008 at 16h39.
usr #6 11/02/2008 - 18h41

Class : Apprenti
Posts : 43
Registered on : 30/11/2007

Off line

oh my god, there's a readme.txt in the source repository!  :lol:

now i feel a little stupid, having spent so many hours to get the freetrackfilter (if nothing else) to compile, without that totally useful document.

By the way, the current state of my modified freetrackfilter version has YUY2 support and something best described as "per pixel difference thresholding", working in YUY2 and RGB24 (i broke the other modes when i ported my changes from the FT1.0 source to the current 2.1 source). the "per pixel difference thresholding" stores one frame of past pixels and only writes the current value of each pixel to that buffer if the difference between the new value and the stored value is bigger than some threshold (i simply take half or third of the seuill value) otherwise the stored value won't be changed. this way camera noise is practically nonexistant, yet still real movement results in instant changes with no additional latency. in the RGB24 mode the pixels that are changing are marked blue, in YUY2 they are marked something druggy around the chrominance plane.

beware of the fixed 4-point tracking preference though, this filter takes an arbitrary number of points and takes the four "best" points (highest number of pixels). this makes threshold setup much less critical, because a few stray noise pixels or so won't be able to destroy your tracking. if you still want to test those alternative modes in action you can grab binary or source, but please don't complain about crashes in other modes than RGB24 and YUY2 or lack of 3 point support (look into RemoveWeakestLed() if you are interested in rewiring it for 3 points, i guess someone -me?- should add some code that reads the active point model from the ini file)
Edited by usr on 12/02/2008 at 20h32.
Kestrel #7 12/02/2008 - 00h29

Webmaster (admin)
Class : Webmaster (admin)
Posts : 780
Registered on : 13/07/2007

Off line

Your links are broken Usr (even after removing the %22s and extra http).  I like the idea of "per pixel difference thresholding" or some sort of noise reduction by frame blending. Didn't you also say you had a weighted mean to find centers for sub-pixel accuracy?
usr #8 12/02/2008 - 21h06

Class : Apprenti
Posts : 43
Registered on : 30/11/2007

Off line

sorry for the inconvenience, i think the links are fixed now.

i got rid of the weighted mean (weighted by light intensity) after i made the "delta threshold" thing (shorter name == better name), because this can keep pixels from reaching peak intensities. pixels will only jump by "delta threshold" + x and some some "in-LED" will jump close to 100% while others will stay somewhere around 100%-("delta threshold" + x), totally destroying the weighting.

now while i'm talking about this something else occurs to me: the pixel delta threshold should never be higher than the difference between maximum intensity and the LED threshold, because otherwise you can get pixels that are stuck at a value slightly below threshold and could not even be identified as LED pixels if they went to 100%.

the best way to avoid these problems would certainly be to replace the "per pixel thresholding" with a simple hystheresis function, pseudocode
"if(pixel was in LED last frame) pixel is in LED iff(value>threshold-delta) else pixel is in LED iff(value>threshold+delta)". should not be any more difficult (or slower) than what my code currently does.

multiframe blending is probably not so good, because it adds latency. what i am hoping to do one day is adding a simple in-frame blur filter, this will keep the LED blotches high, keep the "lowlands" low but still even out the pixel noise at the fringes a little. sure, it's a performance hit, but compared to the USB overhead on all my 3 cameras it would still be more than tolerable, at least for people with multicores or network setups.

sub-pixel stuff is btw still done, look for occurrences of the OVERSAMPLE constant in the source, it's pretty much self explaining.
usr #9 12/02/2008 - 22h31

Class : Apprenti
Posts : 43
Registered on : 30/11/2007

Off line

tried the hystheresis thing, feels much better now (no "pixel locked at some middle value" effects). a subjective little drawback is that you don't see background noise in the flats, but i can live with that :)

files are at  binary or source, with the usual limitations (yuy2 and rgb24 only, 4-point only)
jpmclaro #10 26/02/2008 - 16h13

Class : Apprenti
Posts : 1
Registered on : 26/02/2008

Off line

Hi,

Where do I find the file TirTypes.pas? Because I am only finding the file TirTypes.dcu.

Best Regards

João Paulo

 >  Fast reply

Message

 >  Stats

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