lcas / bayestracking Goto Github PK
View Code? Open in Web Editor NEWC++ framework for Bayesian Filter Tracking (UKF, EKF, Particles)
License: Other
C++ framework for Bayesian Filter Tracking (UKF, EKF, Particles)
License: Other
I noticed an issue where the labels on observations were always used regardless of the whether a labelled association type was used.
The problem is due to an error in condition logic which is present four times in multitracker.h. The condition is written as:
if (alg == NNJPDA || NNJPDA_LABELED)
Which always succeeds since NNJPDA_LABELED will evaluate to true. The lines should read:
if (alg == NNJPDA || alg == NNJPDA_LABELED)
great to see that @cdondrup refactored this into a ROS package (https://github.com/LCAS/bayestracking/tree/catkin-devel). I'm sure, @nbellotto appreciates it. However, the package.xml
seems to be missing a number of dependencies. At least libblas-dev
and libopencv-dev
seem to be missing. Anything else? I suggest to add those and then I can integrate this package to be released into our LCAS Ubuntu repository (http://lcas.lincoln.ac.uk/repos/building/) for easy install.
There are three different forms of data association:
A quick look at https://github.com/LCAS/bayestracking/blob/master/include/bayes_tracking/multitracker.h#L220 and https://github.com/LCAS/bayestracking/blob/master/include/bayes_tracking/multitracker.h#L263 suggests that actually JPDA is used if the user specifies that NNJPDA should be used. Since the JPDA case is not covered the tracker will out put ###### Unknown association algorithm: 1 #####
if JPDA is selected.
If I am right a simple change of https://github.com/LCAS/bayestracking/blob/master/include/bayes_tracking/multitracker.h#L220 to if (alg == JPDA)
should do the trick.
I get a compilation error here: https://github.com/LCAS/bayestracking/blob/master/include/bayes_tracking/multitracker.h#L197
/Users/nah/code/indigo_ws/src/bayes_tracking/include/bayes_tracking/multitracker.h:197:11: error: member reference base type 'FilterType *' is not a structure or union
filter.init(initState, initCov);
~~~~~~^~~~~
1 warning and 1 error generated.
make[2]: *** [examples/CMakeFiles/simple_2d_tracking.dir/simple_2d_tracking.cpp.o] Error 1
make[1]: *** [examples/CMakeFiles/simple_2d_tracking.dir/all] Error 2
make: *** [all] Error 2
[bayes_tracking] <== '/Users/nah/code/indigo_ws/build/bayes_tracking/build_env.sh /usr/bin/make --jobserver-fds=3,4 -j' failed with return code '2'
Shouldn't it be filter->init(initState, initCov);
?
Hello,
The error was in private function void getAssociation(size_t row, ...)
It occurs at assoc.pop_back() because of the assoc is already empty.
If I add a condition, there will be another runtime error in private function void fill(size_t start, size_t end). This is because ai->t is out of range.
This problem only happens when I use nnjfda. NN will be fine.
And, there is a second problem. If I change the filter as PFilter, it will also have a runtime error. But I think this is because I should change the model. Am I correct?
Can you help me out? Thank you.
pf.exe!jpda::JPDA::getAssociation(unsigned int row, std::vector<unsigned int,std::allocator<unsigned int> > colVec, jpda::Association & assoc, unsigned int m) line 572
pf.exe!jpda::JPDA::getAssociations() line 304
pf.exe!MTRK::MultiTracker<UKFilter,4>::dataAssociation<Models::CartesianModel>(Models::CartesianModel & om, MTRK::association_t alg) line 266
pf.exe!MTRK::MultiTracker<UKFilter,4>::process<Models::CartesianModel>(Models::CartesianModel & om, MTRK::association_t alg) line 168
pf.exe!main(int argc, char * * argv) line 224
To follow ros naming conventions this should be named bayes_tracking. If there are no objections I will rename this repository and the package.
starting point is looking at https://github.com/LCAS/bayestracking/blob/master/include/bayes_tracking/multitracker.h#L254 and creating another data association alg named LABELLEDNN
.
Use the AssociationMatrix amat
(with M
being the number of observations and N
being the number of trackers) to assign costs. This is already done by the algorithm. All we need to do is set the cost to DBL_MAX
when the labels do not match up. Observations observation_t
already have a flag
field that we can use as it's not used anywhere else to "tag" the observations. But then each "filter" filter_t
also needs to keep track of the assign "tag", so that they can be matched. Maybe extend https://github.com/LCAS/bayestracking/blob/master/include/bayes_tracking/multitracker.h#L59 to facilitate this.
@pet1330 can you have a look at this?
On implementing the jpda algorithm, which paper or book did you follow? And other data association algorithm?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.