@@ -46,16 +46,28 @@ bool MotionModel::predictState(const rclcpp::Time & time)
46
46
if (dt < 0.0 ) {
47
47
return false ;
48
48
}
49
- // if dt is too large, shorten dt and repeat prediction
50
- const uint32_t repeat = std::ceil (dt / dt_max_);
51
- const double dt_ = dt / repeat;
52
- for (uint32_t i = 0 ; i < repeat; ++i) {
53
- if (!predictStateStep (dt_, ekf_)) {
54
- return false ;
55
- }
56
- // add interval to last_update_time_
57
- last_update_time_ += rclcpp::Duration::from_seconds (dt_);
49
+ if (dt < 1e-6 /* 1usec*/ ) {
50
+ return true ;
58
51
}
52
+
53
+ // // if dt is too large, shorten dt and repeat prediction
54
+ // {
55
+ // const uint32_t repeat = std::floor(dt / dt_max_) + 1;
56
+ // const double dt_ = dt / repeat;
57
+ // for (uint32_t i = 0; i < repeat; ++i) {
58
+ // if (!predictStateStep(dt_, ekf_)) {
59
+ // return false;
60
+ // }
61
+ // // add interval to last_update_time_
62
+ // last_update_time_ += rclcpp::Duration::from_seconds(dt_);
63
+ // }
64
+ // std::cout << "MotionModel::predictState predict dt: " << dt << ", dt_: " << dt_ << ",
65
+ // repeat:
66
+ // "<< repeat<< std::endl;
67
+ // }
68
+
69
+ if (!predictStateStep (dt, ekf_)) return false ;
70
+
59
71
// update last_update_time_ to the estimation time
60
72
last_update_time_ = time ;
61
73
return true ;
@@ -76,17 +88,22 @@ bool MotionModel::getPredictedState(
76
88
dt = 0.0 ;
77
89
}
78
90
79
- // predict only when dt is small enough
80
- if (0.001 /* 1msec*/ < dt) {
81
- // if dt is too large, shorten dt and repeat prediction
82
- const uint32_t repeat = std::ceil (dt / dt_max_);
83
- const double dt_ = dt / repeat;
84
- for (uint32_t i = 0 ; i < repeat; ++i) {
85
- if (!predictStateStep (dt_, tmp_ekf_for_no_update)) {
86
- return false ;
87
- }
88
- }
89
- }
91
+ // // predict only when dt is small enough
92
+ // if (1e-6 /*1usec*/ < dt) {
93
+ // // if dt is too large, shorten dt and repeat prediction
94
+ // const uint32_t repeat = std::floor(dt / dt_max_) + 1;
95
+ // const double dt_ = dt / repeat;
96
+ // for (uint32_t i = 0; i < repeat; ++i) {
97
+ // if (!predictStateStep(dt_, tmp_ekf_for_no_update)) {
98
+ // return false;
99
+ // }
100
+ // }
101
+ // std::cout << "MotionModel::getPredictedStateMatrix predict dt: " << dt << ", dt_: " << dt_ <<
102
+ // ", repeat: "<< repeat<< std::endl;
103
+ // }
104
+
105
+ if (!predictStateStep (dt, tmp_ekf_for_no_update)) return false ;
106
+
90
107
tmp_ekf_for_no_update.getX (X);
91
108
tmp_ekf_for_no_update.getP (P);
92
109
return true ;
0 commit comments