Releases: JuliaRobotics/IncrementalInference.jl
Mutlithreaded Convolutions
This pre-release has a relatively small code change with few PRs, but represents a major change in the computations performed during approximate convolution. Each particle is now projected through a shared memory multithreaded loop -- and applies to both FunctorPairwise
and FunctorPairwiseMinimize
. This release also introduces a new constraint on factors, such that multiple threads do not conflict on any memory shared during residual computations. Please use Threads.nthreads()
and Threads.threadid()
for allocating separate memory space in the functor objects. The new keyword addFactor!(..., threadmodel=MultiThreaded / SingleThreaded)
can be used for better error stack trace in SingleThreaded
mode. Please set the number of shared memory threads in the .bashrc
file with export JULIA_NUM_THREADS=4
, or which ever amount you prefer. Lastly, also note that the shared memory threads are an addition on top of the existing multiprocess computations already used with the Bayes tree formulation.
Refactor to CommonConvWrapper (without Shared Multithreading)
The core approxConv
operation has been refactored for simpler code and easier upgrade path for shared memory mutlithreading during the approximate convolution operation for both FunctorPairwise
and FunctorPairwiseMinimize
. This is a pre-release and does not yet include the Julia 0.7 updates. This is defined as a pre-release, since the next release will contain the shared memory multithreading upgrade. Shared memory mutlithreading may introduce unforseen problems, although all current tests indicate that the upgrade is already working. This IIF v0.3.7 pre-release allows downstream packages to use use the new CommonConvWrapper
type (while dropping previous GenericWrapParam
and FastGenericWrapParam
types) without the mutlithreading update as well. Please see milestone for issues and pull requests included in this pre-release.
Penultimate Julia 0.6 Release, Standardize Multihypothesis
This release provides a more standard interface to internal multihypothesis support (explicit marginalization of a discrete decision) -- and introduction of addFactor!(...; multihypo=[1.0;0.5;0.5], ...)
API. The current implementation allows definition of binary association uncertainties, while future versions are expected to support n-ary association possibilities. The userdata::FactorMetadata
argument passed to all factor functions now also include the userdata.solvefor::Symbol
field. This release also has a cleaner interface to the evalFactor
portions of the code. Besides bugfixes, the next expected release is 0.4.0
using upcoming Julia 0.7
.
Feature Expansion, API changes & clean-up
This is a feature expansion release:
- Add
userdata::FactorMetadata
requirement for factor evaluation, - Add standard multi-hypothesis support,
- Add variable node metadata/userdata support,
- Removing old
addNode!
deprecation warnings in test and example code, - Merged the square root and ApproximateConvolution examples,
- Added more fundamental Bayes tree test (needs more expansion),
- Removed some obsolete code (increased test coverage report to nearly 70%),
- Removed old or commented code associated with previous deprecated type registration,
- Several bug fixes.
This release has the potential to induce breaking changes, although a thorough effort has been made to deprecate rather than break dependencies. Expect deprecations to be removed soon after. Please file issues or make suggestions.
Dispatch-only Without Type Registration
JuliaRobotics and subgraphcopy
Minor release update in anticipation of a much larger change relating to type conversion and serialization. Also the first release within the JuliaRobotics organization. This release does introduce robotname
inside the factor graph type to allow for more general multi-session / multi-robot usage.
General Maintenance Release
This release includes:
- Several bug fixes,
- The last version with where hard Normal distribution assumptions are allowed in the API, specifically surrounding
addNode!
, and - Introduces softtyping for variable nodes.
Fix NLsolve API change
- Wide spread change to accommodate new NLsolve API,
- Starting to work on removing old
addNode!
functionality, in preparation for improved autoinitialization process.
Generic root finding version
This version establishes IncrementalInference.jl package as a basic multi-modal solver, which can operate with user defined from outside. Furthermore conditional beliefs are currently enforced through generic non-linear root finding using NLsolve.jl.
New graph based inference library in pure Julia
Early release of Bayes (Junction) tree graph based inference library in pure Julia, work ongoing. Current use cases motivated by robot navigation problems.