Giter VIP home page Giter VIP logo

biotracker_core's Introduction

README

Build Status

README

Using BioTracker

See the wiki.

Running BioTracker from prebuild binaries:

The releases github page provides stable version. Most recent binaries can be grabbed from the pipeline.

Building trackers against prebuild BioTracker

This will enable you to only build your own plugin without having to care about the robotracker toolchaining/dependencies/etc..

Build dependencies

Building the BioTracker needs:

  • opencv (> 3.0)
  • QT (>= 5.4)
  • Boost
  • CMake (>= 3.13)
  • Buildtools (Tested: MSVC buildtools or g++)
  • recommendet: ninja

Building BioTracker (Windows x64)

The dockerfile documents the dependency installation: (includes dependencies for all projects, e.g. BioTracker, interfaces, ...)

Install and configure those dependencies. A shorthand to the dockerfile is using vcpkg Get the boost and opencv packages:
vcpkg install boost-property-tree:x64-windows-14.16 boost-bimap:x64-windows-14.16 boost-assign:x64-windows-14.16 boost-system:x64-windows-14.16 boost-filesystem:x64-windows-14.16 boost-chrono:x64-windows-14.16 boost-timer:x64-windows-14.16 boost-program-options:x64-windows-14.16
vcpkg install openblas:x64-windows-14.16 opencv[opengl,ffmpeg,ximea,cuda]:x64-windows-14.16
... and Qt systemwide using Qt5_dir
Now call cmake with some switches to include vcpkg: -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-14.16
... and build. Proceed withe the build steps as in the linux section.

Building BioTracker (Linux)

The dockerfile documents the dependency installation: (includes dependencies for all projects, e.g. BioTracker, interfaces, ...)
Having set all the library paths you can build it just like any cmake project. It's split into a few repositories for modularization. Clone, build and install them in order: Interfaces, Utility, Behavior loader, the BioTracker itself and any tracking plugin of your liking, eg. the Background subtraction tracker.

Building BioTracker (OSX)

Technically the BioTracker should build using the CMake toolchain and run on OSX. This is not officially supported, though.

biotracker_core's People

Contributors

amjadsaadeh avatar anjoer avatar berleon avatar failure-to-thrive avatar ferwar avatar h2nguyen avatar hmoenck avatar jotpio avatar jutanke avatar maiky avatar mxbrt avatar nebw avatar ronjadeisel avatar scartiloffista avatar sh4ke avatar timlandgraf avatar uniadam avatar walachey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

biotracker_core's Issues

Segfault when closing application

Here's the stack trace. Seems to be caused by the QOpenGLDebugLogger dtor. Most likely, QOpenGLDebugLogger is destroyed after the QOpenGLContext:

==21697==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000008 (pc 0x7fbae6b92634 bp 0x7fffa0da5390 sp 0x7fffa0da5230 T0)
#0 0x7fbae6b92633 in QOpenGLContext::functions() const (/usr/lib/libQt5Gui.so.5+0x143633)
#1 0x7fbae6e9e519 in QOpenGLDebugLogger::stopLogging() (/usr/lib/libQt5Gui.so.5+0x44f519)
#2 0x7fbae6e9eaec (/usr/lib/libQt5Gui.so.5+0x44faec)
#3 0x7fbae662bfe9 in QMetaObject::activate(QObject_, int, int, void__) (/usr/lib/libQt5Core.so.5+0x2c9fe9)
#4 0x7fbae6b959a7 in QOpenGLContext::destroy() (/usr/lib/libQt5Gui.so.5+0x1469a7)
#5 0x7fbae6b95e86 in QOpenGLContext::~QOpenGLContext() (/usr/lib/libQt5Gui.so.5+0x146e86)
#6 0x7fbae6b95e98 in QOpenGLContext::~QOpenGLContext() (/usr/lib/libQt5Gui.so.5+0x146e98)
#7 0x7fbae739981b (/usr/lib/libQt5Widgets.so.5+0x1de81b)
#8 0x7fbae739a0b2 (/usr/lib/libQt5Widgets.so.5+0x1df0b2)
#9 0x7fbae66342c7 in QObject::~QObject() (/usr/lib/libQt5Core.so.5+0x2d22c7)
#10 0x7fbae737581e in QWidget::~QWidget() (/usr/lib/libQt5Widgets.so.5+0x1ba81e)
#11 0x626089 in BioTracker::Gui::VideoView::~VideoView() /home/ben/tmp/biorobotics-dev-environment/build/Debug/biotracker_gui/biotracker/../../../../source/biotracker_gui/biotracker/VideoView.h:23
#12 0x6260f1 in BioTracker::Gui::VideoView::~VideoView() /home/ben/tmp/biorobotics-dev-environment/build/Debug/biotracker_gui/biotracker/../../../../source/biotracker_gui/biotracker/VideoView.h:23
#13 0x58884b in std::default_deleteBioTracker::Gui::VideoView::operator()(BioTracker::Gui::VideoView_) const /usr/include/c++/5.2.0/bits/unique_ptr.h:76
#14 0x588166 in std::unique_ptr<BioTracker::Gui::VideoView, std::default_deleteBioTracker::Gui::VideoView >::~unique_ptr() /usr/include/c++/5.2.0/bits/unique_ptr.h:236
#15 0x58778d in BioTracker::Gui::MainWindow::~MainWindow() /home/ben/tmp/biorobotics-dev-environment/build/Debug/biotracker_gui/biotracker/../../../../source/biotracker_gui/biotracker/MainWindow.h:18
#16 0x587c51 in BioTracker::Gui::Gui::~Gui() /home/ben/tmp/biorobotics-dev-environment/build/Debug/biotracker_gui/biotracker/../../../../source/biotracker_gui/biotracker/Gui.h:14
#17 0x57f3a9 in main /home/ben/tmp/biorobotics-dev-environment/source/biotracker_gui/biotracker/src/main.cpp:31
#18 0x7fbae105660f in __libc_start_main (/usr/lib/libc.so.6+0x2060f)
#19 0x57f008 in _start (/home/ben/tmp/biorobotics-dev-environment/build/Debug/biotracker_gui/biotracker/BioTracker+0x57f008)

Astyle: do not limit line length

Astyle naively breaks the lines after ~80 characters which results in some really poorly formatted code files. We should find a better heuristic to break lines OR disable the breaking at all

Unify Tools- and Params Widget

In the old biotracker we let the trackers add both tools and params widgets. However, this can be easily be joined together to one widget

Set offset for QPainter

When the video does not fit the videoview it gets filled up with black boxes. The QPainter offset, however, starts in the top left corner, independent of where the video is located in the view.

bug_biotracker

Conflict on gtest cpm module

Error message:

CMake Error at /usr/share/cmake-2.8/Modules/ExternalProject.cmake:1760 (add_custom_target):
  add_custom_target cannot create target "gtest" because another target with
  the same name already exists.  The existing target is a static library
  created in source directory
  "/mnt/ImageCompressBuild/cpm-bin/github_bioroboticslab_cpm_caffe_master/bin/3rdParty/caffe/src/gtest".
  See documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /mnt/ImageCompressBuild/cpm-packages/modules/github_bioroboticslab_biotracker_core_master/src/test/CMakeLists.txt:7 (ExternalProject_Add)

Possible cause: (GroundTruthconverter also loads the pipeline)

    # ++ MODULE: Pipeline
  CPM_AddModule("Pipeline"
        GIT_REPOSITORY "https://github.com/BioroboticsLab/pipeline.git"
                GIT_TAG "cpm")

    # ++ MODULE: gtconv
  CPM_AddModule("groundtruthConvert"
        GIT_REPOSITORY "https://github.com/hmoenck/groundtruthConvert.git"
                GIT_TAG "master")

Uncommenting the following fixes the issue: (File cpm-packages/modules/github_bioroboticslab_biotracker_core_master/src/test/CMakeLists.txt)

# Download and install GoogleTest
ExternalProject_Add(
    gtest
    URL https://googletest.googlecode.com/files/gtest-1.7.0.zip
    PREFIX ${CMAKE_CURRENT_BINARY_DIR}/gtest
    # Disable install step
    INSTALL_COMMAND ""
)
[...]

# Set gtest properties
#ExternalProject_Get_Property(gtest source_dir binary_dir)
set_target_properties(libgtest PROPERTIES
    "IMPORTED_LOCATION" "${binary_dir}/libgtest.a"
    "IMPORTED_LINK_INTERFACE_LIBRARIES" "${CMAKE_THREAD_LIBS_INIT}"
#    "INTERFACE_INCLUDE_DIRECTORIES" "${source_dir}/include"
)

ProtoBuf for zmq

We should consider using ProtoBuf to send messages from server to client with zmq

zmq: Widgets

We need to provide a basic API for the zmq client to render some Widgets into the BioTracker.
Example widgets could be:
NumberInput
Slider
Button

using zmq for interop with scripting languages

To simplify the hassle with embedded scripting environments we might take a look on zmq and make our tool interop with scripts on this way.

I wrote a naive performance test for a stream of images of size 1024x768 and so far I get 4 - 6 ms for a full roundtrip (sender -> receiver -> sender) including encoding the numpy array and decoding it on the other end. We should see if we can improve this (use different socket type etc) or if it is a lost case from the beginning

Split into Core and GUI repositories

The biotracker repository should be split into two parts for the following reasons:

  • Multiple applications in the Lab depend on some parts of the BioTracker, but not on the GUI component.
  • Seperating the two parts would lead to a cleaner codebase and make testing (of the core components) easier
  • The TrackingAlgorithms should only (explicitly) depend on the core components
  • Integration with cpm would be easier

Details for splitting a git repository can be found here:

Multiple copies of the Grid3D class

The Grid3D Class needs the biotracker and the pipeline.
As the biotracker and the pipeline are two independent modules, it cannot belong to either of them.
This has lead to the strange situation, that every package that needs the Grid3D class, has its own
copy.

A list of all Grid3D class copies:

There are twp possible fixes:

  1. create a new repository for the Grid3D class and use it in all above listed projects.
  2. as the Grid3D class is only legacy code, try to remove it and only use the PipelineGrid class.
    This would change the GT file format and therefore all existing GT files must be converted. It is
    not clear to me, if the PipelineGrid could replace the Grid3D to 100 percent.

Add numpy to CMakeList

add the moment numpy gets included without the help of cmake. We need to change that asap

QPainter and TextureLoading

There is an order problem with loading the texture (aka a cv::Mat) and drawing to QPainter: When we draw to the QPainter first it is not possible to load a texture anymore, so we have to load the matrix prior to use QPainter. This creates a problem when we want to both change the matrix (e.g. change color space) AND want to use the QPainter. I see 3 possible solutions:

(i) We only allow the tracker to use EITHER the QPainter or set a new matrix
(ii) We create a new object that buffers the QPainter calls without executing them and then the tracking thread executes the actual QPainter calls AFTER the texture is loaded
(iii) We revert the changes made #17 , provide two functions for PAINT and PAINT_OVERLAY and make sure that PAINT_OVERLAY always gets called after PAINT.

My favorite so far is (iii)...

Dynamic loading of python modules

Enable the core module to load python modules as tracker. I would suggest to extend the Registry functionality to detect weather a py module or a C++ module is loaded and to behave acordingly

compilation fails with clang 3.7.0

[23:26]-leon@tpad:bioroboticslab/biotracker_core/build-clang $ cmake -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DCMAKE_BUILD_TYPE=Release ..                                  
-- Found Git: /usr/bin/git (found version "2.6.2") 
-- Cloning repo (https://github.com/iauns/cpm)
-- Cloning git repo (https://github.com/BioroboticsLab/cpm_cereal @ 874092ae503eec016192ddd6ff17ae23839085be)
-- Failed to fetch repository 'https://github.com/BioroboticsLab/cpm_cereal'. Skipping fetch.
-- Cloning git repo (https://github.com/USCiLab/cereal.git @ v1.1.2)
-- Cloning git repo (https://github.com/BioroboticsLab/cmakeconfig @ master)
CMake Warning (dev) at build-clang/cpm-packages/CPM.cmake:667 (set):
  Cannot set "CPM_EXPORTED_MODULES": current scope has no parent.
Call Stack (most recent call first):
  CMakeLists.txt:54 (CPM_InitModule)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at build-clang/cpm-packages/CPM.cmake:673 (set):
  Cannot set "CPM_ADDITIONAL_DEFINITIONS": current scope has no parent.
Call Stack (most recent call first):
  CMakeLists.txt:54 (CPM_InitModule)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found OpenGL: /usr/lib64/libGL.so  
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Boost version: 1.59.0
-- Found the following Boost libraries:
--   filesystem
--   serialization
--   system
-- Found PythonLibs: /usr/lib64/libpython3.5m.so (found version "3.5.0") 
CMake Warning (dev) at build-clang/cpm-packages/CPM.cmake:770 (set):
  Cannot set "CPM_ADDITIONAL_DEFINITIONS": current scope has no parent.
Call Stack (most recent call first):
  CMakeLists.txt:82 (CPM_ExportAdditionalDefinition)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found Doxygen: /usr/bin/doxygen (found version "1.8.10") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/leon/uni/bioroboticslab/biotracker_core/build-clang
[23:27]-leon@tpad:bioroboticslab/biotracker_core/build-clang % mj                                                              [0]
Scanning dependencies of target BioTrackerLib_automoc
[  5%] Automatic moc for target BioTrackerLib
Generating moc_BioTrackerApp.cpp
Generating moc_Registry.cpp
Generating moc_TrackingAlgorithm.cpp
Generating moc_TrackingThread.cpp
[  5%] Built target BioTrackerLib_automoc
Scanning dependencies of target BioTrackerLib
[ 11%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/settings/StringTranslator.cpp.o
[ 17%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/settings/SystemCompatibilityCheck.cpp.o
[ 23%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/settings/Settings.cpp.o
[ 29%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/Registry.cpp.o
[ 35%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/serialization/ObjectModel.cpp.o
[ 41%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/serialization/TrackedObject.cpp.o
[ 47%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/util/CvHelper.cpp.o
[ 52%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/util/imagePreProcessor/ImagePreProcessor.cpp.o
[ 58%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/util/stringTools.cpp.o
[ 64%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/TrackingAlgorithm.cpp.o
[ 70%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/BioTrackerApp.cpp.o
[ 76%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/ImageStream.cpp.o
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/src/ImageStream.cpp:274:45: warning: unused parameter 'frame_number'
      [-Wunused-parameter]
    virtual bool setFrameNumber_impl(size_t frame_number) override {
                                            ^
[ 82%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/TextureObject.cpp.o
1 warning generated.
[ 88%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/src/TrackingThread.cpp.o
[ 94%] Building CXX object biotracker/CMakeFiles/BioTrackerLib.dir/BioTrackerLib_automoc.cpp.o
In file included from /home/leon/uni/bioroboticslab/biotracker_core/biotracker/src/BioTrackerApp.cpp:1:
In file included from /home/leon/uni/bioroboticslab/biotracker_core/biotracker/BioTrackerApp.h:12:
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/TrackingThread.h:72:20: error: empty paragraph passed to '@param' command
      [-Werror,-Wdocumentation]
     * @param device
       ~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/TrackingThread.h:73:21: error: empty paragraph passed to '@param' command
      [-Werror,-Wdocumentation]
     * @param painter
       ~~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/TrackingThread.h:79:15: error: empty paragraph passed to '@return' command
      [-Werror,-Wdocumentation]
     * @return
       ~~~~~~~^
In file included from /home/leon/uni/bioroboticslab/biotracker_core/biotracker/src/BioTrackerApp.cpp:1:
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/BioTrackerApp.h:79:20: error: empty paragraph passed to '@param' command
      [-Werror,-Wdocumentation]
     * @param device
       ~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/BioTrackerApp.h:80:21: error: empty paragraph passed to '@param' command
      [-Werror,-Wdocumentation]
     * @param painter
       ~~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/BioTrackerApp.h:116:21: error: empty paragraph passed to '@param' command
      [-Werror,-Wdocumentation]
     * @param enabled
       ~~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/BioTrackerApp.h:174:18: error: empty paragraph passed to '@param' command
      [-Werror,-Wdocumentation]
     * @param path
       ~~~~~~~~~~^
7 errors generated.
biotracker/CMakeFiles/BioTrackerLib.dir/build.make:302: recipe for target 'biotracker/CMakeFiles/BioTrackerLib.dir/src/BioTrackerApp.cpp.o' failed
make[2]: *** [biotracker/CMakeFiles/BioTrackerLib.dir/src/BioTrackerApp.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /home/leon/uni/bioroboticslab/biotracker_core/biotracker/src/TrackingThread.cpp:1:
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/TrackingThread.h:72:20: error: empty paragraph passed to '@param' command
      [-Werror,-Wdocumentation]
     * @param device
       ~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/TrackingThread.h:73:21: error: empty paragraph passed to '@param' command
      [-Werror,-Wdocumentation]
     * @param painter
       ~~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/TrackingThread.h:79:15: error: empty paragraph passed to '@return' command
      [-Werror,-Wdocumentation]
     * @return
       ~~~~~~~^
In file included from /home/leon/uni/bioroboticslab/biotracker_core/build-clang/biotracker/BioTrackerLib_automoc.cpp:2:
In file included from /home/leon/uni/bioroboticslab/biotracker_core/build-clang/biotracker/moc_BioTrackerApp.cpp:9:
In file included from /home/leon/uni/bioroboticslab/biotracker_core/build-clang/biotracker/../../biotracker/BioTrackerApp.h:12:
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/TrackingThread.h:72:20: error: empty paragraph passed to '@param' command
      [-Werror,-Wdocumentation]
     * @param device
       ~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/TrackingThread.h:73:21: error: empty paragraph passed to '@param' command
      [-Werror,-Wdocumentation]
     * @param painter
       ~~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/TrackingThread.h:79:15: error: empty paragraph passed to '@return' command
      [-Werror,-Wdocumentation]
     * @return
       ~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/src/TrackingThread.cpp:43:55: warning: unused parameter 'context'
      [-Wunused-parameter]
void TrackingThread::initializeOpenGL(QOpenGLContext *context,
                                                      ^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/src/TrackingThread.cpp:204:13: error: reading variable 'm_tracker'
      requires holding mutex 'm_trackerMutex' [-Werror,-Wthread-safety-analysis]
        if (m_tracker) {
            ^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/src/TrackingThread.cpp:205:13: error: reading variable 'm_tracker'
      requires holding mutex 'm_trackerMutex' [-Werror,-Wthread-safety-analysis]
            m_tracker->setCurrentFrameNumber(frameNumber);
            ^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/src/TrackingThread.cpp:213:13: error: reading variable 'm_tracker'
      requires holding mutex 'm_trackerMutex' [-Werror,-Wthread-safety-analysis]
        if (m_tracker) {
            ^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/src/TrackingThread.cpp:214:13: error: reading variable 'm_tracker'
      requires holding mutex 'm_trackerMutex' [-Werror,-Wthread-safety-analysis]
            m_tracker->setCurrentFrameNumber(m_imageStream->currentFrameNumber());
            ^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/src/TrackingThread.cpp:337:13: error: reading variable 'm_tracker'
      requires holding mutex 'm_trackerMutex' [-Werror,-Wthread-safety-analysis]
        if (m_tracker) {
            ^
/home/leon/uni/bioroboticslab/biotracker_core/biotracker/src/TrackingThread.cpp:338:13: error: reading variable 'm_tracker'
      requires holding mutex 'm_trackerMutex' [-Werror,-Wthread-safety-analysis]
            m_tracker.get()->paint(proxy, &painter);
            ^
In file included from /home/leon/uni/bioroboticslab/biotracker_core/build-clang/biotracker/BioTrackerLib_automoc.cpp:2:
In file included from /home/leon/uni/bioroboticslab/biotracker_core/build-clang/biotracker/moc_BioTrackerApp.cpp:9:
/home/leon/uni/bioroboticslab/biotracker_core/build-clang/biotracker/../../biotracker/BioTrackerApp.h:79:20: error: empty paragraph
      passed to '@param' command [-Werror,-Wdocumentation]
     * @param device
       ~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/build-clang/biotracker/../../biotracker/BioTrackerApp.h:80:21: error: empty paragraph
      passed to '@param' command [-Werror,-Wdocumentation]
     * @param painter
       ~~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/build-clang/biotracker/../../biotracker/BioTrackerApp.h:116:21: error: empty
      paragraph passed to '@param' command [-Werror,-Wdocumentation]
     * @param enabled
       ~~~~~~~~~~~~~^
/home/leon/uni/bioroboticslab/biotracker_core/build-clang/biotracker/../../biotracker/BioTrackerApp.h:174:18: error: empty
      paragraph passed to '@param' command [-Werror,-Wdocumentation]
     * @param path
       ~~~~~~~~~~^
1 warning and 9 errors generated.
biotracker/CMakeFiles/BioTrackerLib.dir/build.make:374: recipe for target 'biotracker/CMakeFiles/BioTrackerLib.dir/src/TrackingThread.cpp.o' failed
make[2]: *** [biotracker/CMakeFiles/BioTrackerLib.dir/src/TrackingThread.cpp.o] Error 1
7 errors generated.
biotracker/CMakeFiles/BioTrackerLib.dir/build.make:398: recipe for target 'biotracker/CMakeFiles/BioTrackerLib.dir/BioTrackerLib_automoc.cpp.o' failed
make[2]: *** [biotracker/CMakeFiles/BioTrackerLib.dir/BioTrackerLib_automoc.cpp.o] Error 1
CMakeFiles/Makefile2:186: recipe for target 'biotracker/CMakeFiles/BioTrackerLib.dir/all' failed
make[1]: *** [biotracker/CMakeFiles/BioTrackerLib.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
[23:28]-leon@tpad:bioroboticslab/biotracker_core/build-clang % clang --version                                                 [2]
clang version 3.7.0 (tags/RELEASE_370/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
[23:29]-leon@tpad:bioroboticslab/biotracker_core/build-clang %       

zmq: unify track, paint and paintOverlay

The zmq client functions for paint, track and paintOverlay can be unified in one function to simplify the API. The tracking algorithm should "store" the paint results then and paint them when the appropriate events are called.

Comply to boost 1.55

Boost 1.55 is the latest boost version found in the newest ubuntu repositories, so we should comply to those standards. Currently we are not!

Port exisiting functionality from old codebase

There are a couple of things that have not been ported from the old codebase yet. When we started the refactoring, the old main GUI class BioTracker was replaced by a couple of smaller GUI components. There's still a couple of things from the old BioTracker class that should be ported to the new codebase.

see: https://github.com/BioroboticsLab/biotracker_core/blob/982f00430dfa70f838ebf6356f76c2198b79eea7/source/gui/BioTracker.cpp

Examples:

  • Automatically restoring Tracker state when switching from one Tracker to another: BioTracker::trackingAlgChanged(Algorithms::Type trackingAlg)
  • Serialization and file hash calculation: BioTracker::storeTrackingData(const std::string &filename)
  • Saving of window geometry and state when closing the application: BioTracker::closeEvent(QCloseEvent* event)
  • Forwarding of keyboard/mouse events to TrackingAlgorithm: BioTracker::event(QEvent *event)

zmq: Serialization

We must provide an API for the zmq client to serialize/deserialize data from previous calculations. Suggestion would be JSON as it is widely available and easy to use.

remove Boost headers download

Biotracker only builds with the boost 1.57 headers. This is due to a regression in the boost serialization introduced in version 1.58 [ticket][stackoverflow]. To build on systems with a boost version higher then 1.57 we download the 1.57 boost headers, compile against them and then link against the possible different boost system library.
It would be better to simple fix our code so it works also with the newer boost versions and remove the cpm_boost module.

Unify namespaces

Some classes (like Settings) do not use proper namespaces while others do. We should make sure all classes use proper namespacing.

Python QPainter

It would be awesome if we could find a nice way to transport the QPainter object to python without creating a wrapper class

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.