7 const Eigen::Vector3d &previous_pose,
const Eigen::VectorXd &motion_data,
8 const double delta_t) {
9 Eigen::Vector3d pose_difference;
10 if (::abs(motion_data(2)) < 0.0001) {
11 pose_difference(0) = motion_data(0) * ::cos(previous_pose(2)) * delta_t;
12 pose_difference(1) = motion_data(0) * ::sin(previous_pose(2)) * delta_t;
15 motion_data(0) / motion_data(2) *
16 (::sin(motion_data(2) * delta_t + previous_pose(2)) - ::sin(previous_pose(2)));
18 motion_data(0) / motion_data(2) *
19 (-::cos(motion_data(2) * delta_t + previous_pose(2)) + ::cos(previous_pose(2)));
22 return pose_difference;
26 const Eigen::Vector3d &previous_pose,
const Eigen::VectorXd &motion_data,
27 const double delta_t) {
28 Eigen::Matrix3d jacobian = Eigen::Matrix3d::Identity();
29 if (::abs(motion_data(2)) < 0.001) {
30 jacobian(0, 2) = -motion_data(0) * ::sin(previous_pose(2)) * delta_t;
31 jacobian(1, 2) = motion_data(0) * ::cos(previous_pose(2)) * delta_t;
33 jacobian(0, 2) = motion_data(0) / motion_data(2) *
34 (::cos(motion_data(2) * delta_t + previous_pose(2)) - ::cos(previous_pose(2)));
35 jacobian(1, 2) = motion_data(0) / motion_data(2) *
36 (::sin(motion_data(2) * delta_t + previous_pose(2)) - ::sin(previous_pose(2)));
42 const Eigen::Vector3d &previous_pose,
const Eigen::VectorXd &motion_data,
43 const double delta_t) {
44 Eigen::MatrixXd jacobian = Eigen::MatrixXd::Zero(3, 4);
45 if (::abs(motion_data(2)) < 0.001) {
46 jacobian(0, 0) = ::cos(previous_pose(2)) * delta_t;
47 jacobian(1, 0) = ::sin(previous_pose(2)) * delta_t;
49 jacobian(0, 0) = 1 / motion_data(2) *
50 (::sin(motion_data(2) * delta_t + previous_pose(2)) - ::sin(previous_pose(2)));
53 (::sin(motion_data(2) * delta_t + previous_pose(2)) -
54 motion_data(2) * delta_t * ::cos(motion_data(2) * delta_t + previous_pose(2)) -
55 ::sin(previous_pose(2))) /
56 (motion_data(2) * motion_data(2)));
59 (-::cos(motion_data(2) * delta_t + previous_pose(2)) + ::cos(previous_pose(2)));
62 (::cos(motion_data(2) * delta_t + previous_pose(2)) +
63 motion_data(2) * delta_t * ::sin(motion_data(2) * delta_t + previous_pose(2)) -
64 ::cos(previous_pose(2))) /
65 (motion_data(2) * motion_data(2)));
67 jacobian(2, 2) = delta_t;