File util.h#

namespace sym

Functions

template<typename T>
static constexpr T Square(T v)#
template<typename T, typename Tl>
static constexpr T Clamp(T x, Tl min, Tl max)#
template<typename Scalar>
MatrixX<Scalar> Symmetrize(const MatrixX<Scalar> &mat)#
template<typename T>
T Interpolate(const T &a, const T &b, const typename StorageOps<T>::Scalar t, const typename StorageOps<T>::Scalar epsilon = kDefaultEpsilon<typename StorageOps<T>::Scalar>)#

Interpolation between Lie group elements a and b. Result is a linear interpolation by coefficient t (in [0, 1]) in the tangent space around a

This function version will not always be usable for passing into things that expect a functor callable with three arguments; for those applications, use sym::Interpolator<T>{}

template<typename F, typename X>
auto NumericalDerivative(const F f, const X &x, const typename sym::StorageOps<X>::Scalar epsilon = kDefaultEpsilon<typename StorageOps<X>::Scalar>, const typename sym::StorageOps<X>::Scalar delta = 1e-2f)#

Compute the numerical derivative of a function using a central difference approximation

TODO(aaron): Add a higher-order approximation to the derivative either as an option or as the default

Parameters:
  • f – The function to differentiate

  • x – Input at which to calculate the derivative

  • epsilon – Epsilon for Lie Group operations

  • delta – Derivative step size

template<typename T>
std::enable_if_t<kIsEigenType<T>, bool> IsApprox(const T &a, const T &b, const typename StorageOps<T>::Scalar epsilon)#
template<typename T>
std::enable_if_t<!kIsEigenType<T>, bool> IsApprox(const T &a, const T &b, const typename StorageOps<T>::Scalar epsilon)#
template<typename T>
class Interpolator#
#include <util.h>

Interpolation between Lie group elements a and b. Result is a linear interpolation by coefficient t (in [0, 1]) in the tangent space around a

Public Types

using Scalar = typename sym::StorageOps<T>::Scalar#

Public Functions

inline explicit Interpolator(const Scalar epsilon = kDefaultEpsilon<Scalar>)#
inline T operator()(const T &a, const T &b, const Scalar t)#

Private Members

const Scalar epsilon_#