\(
\newcommand{\bm}[1]{\boldsymbol{#1}}
\newcommand{\defeq}{\triangleq}
\newcommand{\liegrp}[2]{\mathrm{#1}(#2)}
\newcommand{\liealg}[2]{\mathfrak{#1}(#2)}
\newcommand{\SO}[1]{\liegrp{SO}{#1}}
\newcommand{\SE}[1]{\liegrp{SE}{#1}}
\newcommand{\so}[1]{\liealg{so}{#1}}
\newcommand{\se}[1]{\liealg{se}{#1}}
\newcommand{\Spin}[1]{\liegrp{Spin}{#1}}
\newcommand{\R}[1]{\mathbb{R}^{#1}}
\renewcommand{\P}[1]{\mathbb{P}^{#1}}
\newcommand{\T}[1]{\mathbb{T}^{#1}}
\renewcommand{\S}[1]{S^{#1}}
\newcommand{\Frame}[1]{\mathcal F_{#1}}
\renewcommand{\v}[1]{\bm{\mathbf{#1}}}
\newcommand{\vh}[1]{\bm{#1}}
\newcommand{\vhm}[1]{\bm{#1}}
\newcommand{\pt}[1]{#1}
\newcommand{\vecpt}[1]{\overrightarrow{\pt{#1}}}
\newcommand{\en}[1]{\mathqzc{#1}}
\newcommand{\vs}[1]{\mathcal{#1}}
\newcommand{\f}[3]{{}_{#2} \v{#1}_{#3}}
\newcommand{\F}[2]{\v{#1}_{#2}}
\newcommand{\fh}[3]{{}_{#2} \vh{#1}_{#3}}
\newcommand{\Fh}[2]{\vh{#1}_{#2}}
\newcommand{\trans}{^{\mkern-1.5mu\mathsf{T}}}
\newcommand{\inv}{^{-1}}
\newcommand{\origin}{\pt O}
\newcommand{\elvec}{p}
\newcommand{\fvec}[2]{\f{\elvec}{#1}{#2}}
\newcommand{\fvech}[2]{\fh{\elvec}{#1}{#2}}
\newcommand{\vvec}{\v{\elvec}}
\newcommand{\elvecg}{v}
\newcommand{\fvecg}[2]{\f{\elvecg}{#1}{#2}}
\newcommand{\vvecg}{\v{\elvecg}}
\newcommand{\elrot}{R}
\newcommand{\frot}[1]{\F{\elrot}{#1}}
\newcommand{\vrot}{\v{\elrot}}
\newcommand{\eltf}{T}
\newcommand{\ftf}[1]{\F{\eltf}{#1}}
\newcommand{\vtf}{\v{\eltf}}
\newcommand{\elgrp}{\Phi}
\newcommand{\fgrp}[1]{\F{\elgrp}{#1}}
\newcommand{\vgrp}{\v{\elgrp}}
\newcommand{\elalg}{\varphi}
\newcommand{\falg}[2]{\f{\elalg}{#1}{#2}}
\newcommand{\valg}{\v{\elalg}}
\newcommand{\elq}{q}
\newcommand{\fq}[1]{\F{\elq}{#1}}
\newcommand{\vq}{\v{\elq}}
\newcommand{\elrotmat}{C}
\newcommand{\frotmat}[1]{\F{\elrotmat}{#1}}
\newcommand{\vrotmat}{\v{\elrotmat}}
\newcommand{\Grp}{G}
\newcommand{\Op}{\circ}
\newcommand{\El}{\en g}
\newcommand{\ElB}{\en h}
\newcommand{\AlgEl}{\v X}
\newcommand{\AlgElB}{\v Y}
\newcommand{\Id}{\en e}
\newcommand{\Alg}{\mathfrak{g}}
\newcommand{\Tan}{\vs T}
\newcommand{\sevec}{\v\xi}
\newcommand{\setvec}{\v\rho}
\newcommand{\tvec}{\v t}
\newcommand{\rotvec}{\v\phi}
\newcommand{\hatop}{\wedge}
\newcommand{\crossop}{\times}
\newcommand{\Ad}{\mathrm{Ad}}
\newcommand{\ad}{\mathrm{ad}}
\newcommand{\alg}{\mathrm{alg}}
\newcommand{\eye}{\v I}
\newcommand{\zeros}{\v 0}
\)
Changelog
New features
dynamic
module with heap-allocated, dynamically-composable Proxy
expressions
estimation
module with uncertain objects and noise models
- N-ary expressions
Point
expressions representing true 3D affine points. Unlike translations, points
cannot be added or scaled.
- Documentation built with Sphinx
Backward-incompatible API changes
- C++17 is now required
- Boost 1.58 is now required
- CMake 3.8 is now required
- Changed selection of storage types from expression types.
(Described in docs under “Storage and auto”)
CompactRigidTransform
stored as separate quaternion and vector instead of 7-vector.
Changed template parameters.
Fixes and minor changes
- Fixed finding googletest source package on Ubuntu bionic
- Fixed (trivial) reverse-mode AD on a single leaf
- Moved numerical Jacobian evaluator into
core
module
- Reorganized and renamed storage base classes
- .translation() and .rotation() methods work on all transform expressions (not just leaves)
- Faster exponential map to quaternions
Subtract
expression represents subtraction, replacing combination of sum and negation.
- Improved error message on trying to construct a Framed object from a mismatching expression.
0.3.0 (2018-08-19)
New features
- Scalar multiplication (scalar*vector, vector*scalar, and vector/scalar)
- Differentiable arithmetic operations on scalar expressions (e.g. ```v1.norm() + v2.norm()`)
- The library can be installed and used via CMake
- The library can be built as a submodule of libwave
- Automated CI builds
Deprecated support
- C++11 support is deprecated. The next release will use C++17.
- Eigen 3.2.92 (3.3-beta2) is not officially supported. It works as of this release, but
only 3.3.2 is tested in CI.
Fixes and minor changes
- Expressions can be differentiated w.r.t. their stored contents
(e.g.
auto expr = v * 2; expr.jacobian(expr.rhs())
)
- CMake handling of dependencies improved
- Minor bug and compiler warning fixes
0.2.0 (2018-05-04)
Initial public release. Previously, wave_geometry was under development as a library
called lkinematics
.
Other Versions
v: develop