24 typedef Eigen::Matrix<context::Scalar, Eigen::Dynamic, 1> ConfigVector_t;
25 typedef Eigen::Matrix<context::Scalar, Eigen::Dynamic, 1> TangentVector_t;
26 typedef Eigen::Matrix<context::Scalar, Eigen::Dynamic, Eigen::Dynamic> JacobianMatrix_t;
29 integrate(
const LieGroupType & lg,
const ConfigVector_t & q,
const TangentVector_t & v)
31 return lg.integrate(q, v);
34 static ConfigVector_t interpolate(
35 const LieGroupType & lg,
36 const ConfigVector_t & q0,
37 const ConfigVector_t & q1,
38 const context::Scalar & u)
40 return lg.interpolate(q0, q1, u);
43 static TangentVector_t
44 difference(
const LieGroupType & lg,
const ConfigVector_t & q0,
const ConfigVector_t & q1)
46 return lg.difference(q0, q1);
49 static JacobianMatrix_t dDifference1(
50 const LieGroupType & lg,
51 const ConfigVector_t & q0,
52 const ConfigVector_t & q1,
55 JacobianMatrix_t J(lg.nv(), lg.nv());
56 lg.dDifference(q0, q1, J, arg);
60 static JacobianMatrix_t dDifference2(
61 const LieGroupType & lg,
62 const ConfigVector_t & q0,
63 const ConfigVector_t & q1,
65 const JacobianMatrix_t & Jin,
68 JacobianMatrix_t J(Jin.rows(), Jin.cols());
78 throw std::invalid_argument(
"arg must be either ARG0 or ARG1");
83 static JacobianMatrix_t dDifference3(
84 const LieGroupType & lg,
85 const ConfigVector_t & q0,
86 const ConfigVector_t & q1,
89 const JacobianMatrix_t & Jin)
91 JacobianMatrix_t J(Jin.rows(), Jin.cols());
101 throw std::invalid_argument(
"arg must be either ARG0 or ARG1");
106 static JacobianMatrix_t dIntegrate(
107 const LieGroupType & lg,
108 const ConfigVector_t & q,
109 const TangentVector_t & v,
112 JacobianMatrix_t J(lg.nv(), lg.nv());
113 lg.dIntegrate(q, v, J, arg);
117 static JacobianMatrix_t
118 dIntegrate_dq1(
const LieGroupType & lg,
const ConfigVector_t & q,
const TangentVector_t & v)
120 JacobianMatrix_t J(lg.nv(), lg.nv());
121 lg.dIntegrate_dq(q, v, J);
125 static JacobianMatrix_t dIntegrate_dq2(
126 const LieGroupType & lg,
127 const ConfigVector_t & q,
128 const TangentVector_t & v,
129 const JacobianMatrix_t & Jin,
132 JacobianMatrix_t J(Jin.rows(), lg.nv());
133 lg.dIntegrate_dq(q, v, Jin, self, J, SETTO);
137 static JacobianMatrix_t dIntegrate_dq3(
138 const LieGroupType & lg,
139 const ConfigVector_t & q,
140 const TangentVector_t & v,
142 const JacobianMatrix_t & Jin)
144 JacobianMatrix_t J(lg.nv(), Jin.cols());
145 lg.dIntegrate_dq(q, v, self, Jin, J, SETTO);
149 static JacobianMatrix_t
150 dIntegrate_dv1(
const LieGroupType & lg,
const ConfigVector_t & q,
const TangentVector_t & v)
152 JacobianMatrix_t J(lg.nv(), lg.nv());
153 lg.dIntegrate_dv(q, v, J);
157 static JacobianMatrix_t dIntegrate_dv2(
158 const LieGroupType & lg,
159 const ConfigVector_t & q,
160 const TangentVector_t & v,
161 const JacobianMatrix_t & Jin,
164 JacobianMatrix_t J(Jin.rows(), lg.nv());
165 lg.dIntegrate_dv(q, v, Jin, self, J, SETTO);
169 static JacobianMatrix_t dIntegrate_dv3(
170 const LieGroupType & lg,
171 const ConfigVector_t & q,
172 const TangentVector_t & v,
174 const JacobianMatrix_t & Jin)
176 JacobianMatrix_t J(lg.nv(), Jin.cols());
177 lg.dIntegrate_dv(q, v, self, Jin, J, SETTO);
181 static JacobianMatrix_t dIntegrateTransport_proxy(
182 const LieGroupType & lg,
183 const ConfigVector_t & q,
184 const TangentVector_t & v,
185 const JacobianMatrix_t & J,
188 JacobianMatrix_t Jout(lg.nv(), J.cols());
189 lg.dIntegrateTransport(q, v, J, Jout, arg);
void dDifference(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVector1 > &q0, const Eigen::MatrixBase< ConfigVector2 > &q1, const Eigen::MatrixBase< JacobianMatrix > &J, const ArgumentPosition arg)
Computes the Jacobian of a small variation of the configuration vector into the tangent space at iden...