Forum

Compiling FreeFrameARTK+Tracker

While evaluating the ARTK+ plugin, i figured that the maximum number of detectable patterns (ID based) in one camera image is limited to 8.

And as it turns out is hardcoded in ARTK+Tracker.cpp:

// create a tracker that does:
    //  - 6x6 sized marker images
    //  - samples at a maximum of 6x6
    //  - works with luminance (gray) images
    //  - can load a maximum of 1 pattern
    //  - can detect a maximum of 8 patterns in one image
    FTracker = new ARToolKitPlus::TrackerSingleMarkerImpl<6,6,6, 1, 8>(FWidth, FHeight);

Now id like to change that, but trying to compile gives these errors:

||=== Build: Release in ARTK+Tracker (compiler: GNU GCC Compiler) ===|
ARToolKitPlus\include\ARToolKitPlus\config.h|224|warning: "MAX_PATH" redefined|
C:\Program Files (x86)\CodeBlocks\MinGW\include\windef.h|42|note: this is the location of the previous definition|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx||In constructor 'ARToolKitPlus::TrackerImpl<**PATTERN_SIZE_X,**PATTERN_SIZE_Y, **PATTERN_SAMPLE_NUM,**MAX_LOAD_PATTERNS, __MAX_IMAGE_PATTERNS>::TrackerImpl()':|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx|66|note: #pragma message: >>> not using SinCos LUT|
ARToolKitPlus\include\ARToolKitPlus\TrackerImpl.h|636|error: invalid use of member 'ARToolKitPlus::TrackerImpl<**PATTERN_SIZE_X,**PATTERN_SIZE_Y, **PATTERN_SAMPLE_NUM,**MAX_LOAD_PATTERNS, __MAX_IMAGE_PATTERNS>::screenWidth' in static member function|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx|449|error: from this location|
ARToolKitPlus\include\ARToolKitPlus\TrackerImpl.h|636|error: invalid use of member 'ARToolKitPlus::TrackerImpl<**PATTERN_SIZE_X,**PATTERN_SIZE_Y, **PATTERN_SAMPLE_NUM,**MAX_LOAD_PATTERNS, __MAX_IMAGE_PATTERNS>::screenHeight' in static member function|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx|449|error: from this location|
ARToolKitPlus\include\..\src\TrackerSingleMarkerImpl.cxx||In instantiation of 'int ARToolKitPlus::TrackerSingleMarkerImpl<**PATTERN_SIZE_X,**PATTERN_SIZE_Y, **PATTERN_SAMPLE_NUM,**MAX_LOAD_PATTERNS, **MAX_IMAGE_PATTERNS>::calc(const unsigned char*, int, bool, ARToolKitPlus::ARMarkerInfo**, int*) [with int**PATTERN_SIZE_X = 6; int **PATTERN_SIZE_Y = 6; int**PATTERN_SAMPLE_NUM = 6; int **MAX_LOAD_PATTERNS = 1; int**MAX_IMAGE_PATTERNS = 8](with int **PATTERN_SIZE_X = 6; int**PATTERN_SIZE_Y = 6; int **PATTERN_SAMPLE_NUM = 6; int**MAX_LOAD_PATTERNS = 1; int __MAX_IMAGE_PATTERNS = 8)':|
C:\Users\Thomas\Documents\Programme\vvvv\Experiments\vvvv-sdk\vvvv45\addonpack\src\nodes\freeframes\ARTK+Tracker\ARTK+Tracker.cpp|582|required from here|
ARToolKitPlus\include\..\src\TrackerSingleMarkerImpl.cxx|188|error: 'convertTransformationMatrixToOpenGLStyle' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive](-fpermissive)|
ARToolKitPlus\include\..\src\TrackerSingleMarkerImpl.cxx|188|note: declarations in dependent base 'ARToolKitPlus::TrackerImpl<6, 6, 6, 1, 8>' are not found by unqualified lookup|
ARToolKitPlus\include\..\src\TrackerSingleMarkerImpl.cxx|188|note: use 'this->convertTransformationMatrixToOpenGLStyle' instead|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx||In instantiation of 'const char* ARToolKitPlus::TrackerImpl<**PATTERN_SIZE_X,**PATTERN_SIZE_Y, **PATTERN_SAMPLE_NUM,**MAX_LOAD_PATTERNS, **MAX_IMAGE_PATTERNS>::getDescription() [with int**PATTERN_SIZE_X = 6; int **PATTERN_SIZE_Y = 6; int**PATTERN_SAMPLE_NUM = 6; int **MAX_LOAD_PATTERNS = 1; int**MAX_IMAGE_PATTERNS = 8](with int **PATTERN_SIZE_X = 6; int**PATTERN_SIZE_Y = 6; int **PATTERN_SAMPLE_NUM = 6; int**MAX_LOAD_PATTERNS = 1; int __MAX_IMAGE_PATTERNS = 8)':|
C:\Users\Thomas\Documents\Programme\vvvv\Experiments\vvvv-sdk\vvvv45\addonpack\src\nodes\freeframes\ARTK+Tracker\ARTK+Tracker.cpp|582|required from here|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx|669|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings](-Wwrite-strings)|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx|669|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings](-Wwrite-strings)|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx|669|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings](-Wwrite-strings)|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx|669|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings](-Wwrite-strings)|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx|669|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings](-Wwrite-strings)|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx|669|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings](-Wwrite-strings)|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx|669|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings](-Wwrite-strings)|
ARToolKitPlus\include\ARToolKitPlus\..\..\src\TrackerImpl.cxx|669|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings](-Wwrite-strings)|
||=== Build failed: 5 error(s), 13 warning(s) (0 minute(s), 0 second(s)) ===|

I pulled the vvvv-sdk, and opened
vvvv-sdk\vvvv45\addonpack\src\nodes\freeframes\ARTK+Tracker\ARTK+Tracker.cbp
with the latest CodeBlocks:
codeblocks-16.01mingw-setup.exe

The readme in that folder tells something about a compiler:
//////language/ide
//c++/codeblocks (using mingw 3.4.5)

Do I have to install exactly that one?

iirc i had troubles with different mingw versions thats why i mentioned the exact version in the readme. so yes, i’d try that for a start.

or even better of course try to google for the errors or ask in a mingw/codeblocks forum/irc-channel for help.

Thanks Joreg,
it was the compiler.

For the record: I downloaded the mingw installer from:
https://sourceforge.net/projects/mingw/files/Installer/
And then used that installer to download the 3.4.5 Version.
Then in codeblocks changed the path to the new complier.

Btw: I figured out why the plugin was so badly at detecting markers.
Now the tracking is quite nice and doesn’t give any weird positions for one frame.

question now: how can I contribute? Do I have to fork the vvvv-sdk on github and then create a pull request?

that sounds wonderful.
indeed for contributing please follow the vvvv-sdk instructions and create a pullrequest.