MCPcopy Create free account
hub / github.com/Robotics-STAR-Lab/RACER / Jplus1

Function Jplus1

uav_simulator/Utils/pose_utils/src/pose_utils.cpp:212–253  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

210// For Pose EKF ----------------------
211
212mat Jplus1(const colvec& X1, const colvec& X2) {
213 colvec X3 = pose_update(X1, X2);
214 mat R1 = ypr_to_R(X1.rows(3, 5));
215 mat R2 = ypr_to_R(X2.rows(3, 5));
216 mat R3 = ypr_to_R(X3.rows(3, 5));
217 colvec o1 = R1.col(1);
218 colvec a1 = R1.col(2);
219 colvec o2 = R2.col(1);
220 colvec a2 = R2.col(2);
221
222 mat I = eye<mat>(3, 3);
223 mat Z = zeros<mat>(3, 3);
224
225 double Marr[9] = { -(X3(2 - 1) - X1(2 - 1)), (X3(3 - 1) - X1(3 - 1)) * cos(X1(4 - 1)),
226 a1(1 - 1) * X2(2 - 1) - o1(1 - 1) * X2(3 - 1), X3(1 - 1) - X1(1 - 1),
227 (X3(3 - 1) - X1(3 - 1)) * sin(X1(4 - 1)),
228 a1(2 - 1) * X2(2 - 1) - o1(2 - 1) * X2(3 - 1), 0,
229 -X2(1 - 1) * cos(X1(5 - 1)) - X2(2 - 1) * sin(X1(5 - 1)) * sin(X1(6 - 1)) -
230 X2(3 - 1) * sin(X1(5 - 1)) * cos(X1(6 - 1)),
231 a1(3 - 1) * X2(2 - 1) - o1(3 - 1) * X2(3 - 1) };
232 mat M(3, 3);
233 for (int i = 0; i < 9; i++)
234 M(i) = Marr[i];
235 M = trans(M);
236
237 double K1arr[9] = { 1,
238 sin(X3(5 - 1)) * sin(X3(4 - 1) - X1(4 - 1)) / cos(X3(5 - 1)),
239 (o2(1 - 1) * sin(X3(6 - 1)) + a2(1 - 1) * cos(X3(6 - 1))) / cos(X3(5 - 1)),
240 0,
241 cos(X3(4 - 1) - X1(4 - 1)),
242 -cos(X1(5 - 1)) * sin(X3(4 - 1) - X1(4 - 1)),
243 0,
244 sin(X3(4 - 1) - X1(4 - 1)) / cos(X3(5 - 1)),
245 cos(X1(5 - 1)) * cos(X3(4 - 1) - X1(4 - 1)) / cos(X3(5 - 1)) };
246 mat K1(3, 3);
247 for (int i = 0; i < 9; i++)
248 K1(i) = K1arr[i];
249 K1 = trans(K1);
250
251 mat J1 = join_cols(join_rows(I, M), join_rows(Z, K1));
252 return J1;
253}
254
255mat Jplus2(const colvec& X1, const colvec& X2) {
256 colvec X3 = pose_update(X1, X2);

Callers

nothing calls this directly

Calls 2

pose_updateFunction · 0.85
ypr_to_RFunction · 0.70

Tested by

no test coverage detected