Showing
2 changed files
with
23 additions
and
13 deletions
... | @@ -1251,6 +1251,8 @@ void EKF2::UpdateGpsSample(ekf2_timestamps_s &ekf2_timestamps) | ... | @@ -1251,6 +1251,8 @@ void EKF2::UpdateGpsSample(ekf2_timestamps_s &ekf2_timestamps) |
1251 | _ekf.setGpsData(gps_msg); | 1251 | _ekf.setGpsData(gps_msg); |
1252 | if(hold != int(gps_msg.time_usec/1000000)) | 1252 | if(hold != int(gps_msg.time_usec/1000000)) |
1253 | { | 1253 | { |
1254 | + if(!check_warning()) | ||
1255 | + { | ||
1254 | dm_read(DM_KEY_MISSION_STATE, 0, &mission, sizeof(mission_s)); | 1256 | dm_read(DM_KEY_MISSION_STATE, 0, &mission, sizeof(mission_s)); |
1255 | hold=int(gps_msg.time_usec/1000000); | 1257 | hold=int(gps_msg.time_usec/1000000); |
1256 | if(hold%2==0) | 1258 | if(hold%2==0) |
... | @@ -1258,7 +1260,9 @@ void EKF2::UpdateGpsSample(ekf2_timestamps_s &ekf2_timestamps) | ... | @@ -1258,7 +1260,9 @@ void EKF2::UpdateGpsSample(ekf2_timestamps_s &ekf2_timestamps) |
1258 | calculate_inclination_target(); | 1260 | calculate_inclination_target(); |
1259 | print_target_gps(); | 1261 | print_target_gps(); |
1260 | //print_current_gps(gps_msg); | 1262 | //print_current_gps(gps_msg); |
1261 | - check_inclination(calculate_inclination_current(gps_msg)); | 1263 | + double check=calculate_inclination_current(gps_msg); |
1264 | + check_inclination(check); | ||
1265 | + } | ||
1262 | } | 1266 | } |
1263 | } | 1267 | } |
1264 | _gps_time_usec = gps_msg.time_usec; | 1268 | _gps_time_usec = gps_msg.time_usec; |
... | @@ -1269,15 +1273,26 @@ void EKF2::UpdateGpsSample(ekf2_timestamps_s &ekf2_timestamps) | ... | @@ -1269,15 +1273,26 @@ void EKF2::UpdateGpsSample(ekf2_timestamps_s &ekf2_timestamps) |
1269 | void EKF2::check_inclination(double check) | 1273 | void EKF2::check_inclination(double check) |
1270 | { | 1274 | { |
1271 | double origin=inclination[int(mission.current_seq)-1]; | 1275 | double origin=inclination[int(mission.current_seq)-1]; |
1272 | - std:: cout << "origin : "<<origin<<"\tcheck : "<<check<<std::endl; | 1276 | + std:: cout << "(origin : "<<origin<<" | check : "<<check<<")"; |
1273 | if(origin-1<=check && check <= origin+1) | 1277 | if(origin-1<=check && check <= origin+1) |
1274 | { | 1278 | { |
1275 | - std::cout<<"*----Good moving----*"<<std::endl; | 1279 | + std::cout<<"\t--- Good moving"<<std::endl; |
1280 | + warning_count=0; | ||
1276 | } | 1281 | } |
1277 | else | 1282 | else |
1278 | { | 1283 | { |
1279 | - std::cout<<"*----Bad moving----*"<<std::endl; | 1284 | + std::cout<<"\t--- Bad moving"<<std::endl; |
1285 | + warning_count++; | ||
1286 | + } | ||
1287 | +} | ||
1288 | +bool EKF2::check_warning() | ||
1289 | +{ | ||
1290 | + if(warning_count>=15) | ||
1291 | + { | ||
1292 | + std::cout<<"* [abnormal moving detected] *"<<std::endl; | ||
1293 | + return true; | ||
1280 | } | 1294 | } |
1295 | + return false; | ||
1281 | } | 1296 | } |
1282 | void EKF2::print_current_gps(gps_message gps_msg) | 1297 | void EKF2::print_current_gps(gps_message gps_msg) |
1283 | { | 1298 | { |
... | @@ -1292,8 +1307,6 @@ void EKF2::calculate_inclination_target() | ... | @@ -1292,8 +1307,6 @@ void EKF2::calculate_inclination_target() |
1292 | struct mission_item_s next_mission_item {}; | 1307 | struct mission_item_s next_mission_item {}; |
1293 | dm_read((dm_item_t)mission.dataman_id, i, &mission_item, sizeof(mission_item_s)); | 1308 | dm_read((dm_item_t)mission.dataman_id, i, &mission_item, sizeof(mission_item_s)); |
1294 | dm_read((dm_item_t)mission.dataman_id, i+1, &next_mission_item, sizeof(mission_item_s)); | 1309 | dm_read((dm_item_t)mission.dataman_id, i+1, &next_mission_item, sizeof(mission_item_s)); |
1295 | - //std:: cout << "next : "<<next_mission_item.lat<<std::endl; | ||
1296 | - //std:: cout << "curr : "<<mission_item.lat<<std::endl; | ||
1297 | x=next_mission_item.lat-mission_item.lat; | 1310 | x=next_mission_item.lat-mission_item.lat; |
1298 | y=next_mission_item.lon-mission_item.lon; | 1311 | y=next_mission_item.lon-mission_item.lon; |
1299 | std::cout.setf(std::ios::fixed); | 1312 | std::cout.setf(std::ios::fixed); |
... | @@ -1305,9 +1318,6 @@ void EKF2::calculate_inclination_target() | ... | @@ -1305,9 +1318,6 @@ void EKF2::calculate_inclination_target() |
1305 | { | 1318 | { |
1306 | inclination[i]=0.0; | 1319 | inclination[i]=0.0; |
1307 | } | 1320 | } |
1308 | - /*if(int(i)==int(mission.current_seq)-1){ | ||
1309 | - std::cout <<"[inclina]#"<<i<<"\t"<<inclination[i]<<std::endl; | ||
1310 | - }*/ | ||
1311 | } | 1321 | } |
1312 | } | 1322 | } |
1313 | double EKF2::calculate_inclination_current(gps_message gps_msg) | 1323 | double EKF2::calculate_inclination_current(gps_message gps_msg) |
... | @@ -1321,10 +1331,9 @@ double EKF2::calculate_inclination_current(gps_message gps_msg) | ... | @@ -1321,10 +1331,9 @@ double EKF2::calculate_inclination_current(gps_message gps_msg) |
1321 | } | 1331 | } |
1322 | std::cout.setf(std::ios::fixed); | 1332 | std::cout.setf(std::ios::fixed); |
1323 | std::cout.precision(7); | 1333 | std::cout.precision(7); |
1324 | - //std::cout << "[Mission] #"<<mission.current_seq<<"\t"<<check_inclination<<std::endl; | ||
1325 | return check_inclination; | 1334 | return check_inclination; |
1326 | } | 1335 | } |
1327 | -void EKF2::print_target_gps() | 1336 | +void EKF2::set_target_gps() |
1328 | { | 1337 | { |
1329 | std::cout.unsetf(std::ios::fixed); | 1338 | std::cout.unsetf(std::ios::fixed); |
1330 | for (size_t i = 0; i < mission.count; i++) { | 1339 | for (size_t i = 0; i < mission.count; i++) { |
... | @@ -1334,7 +1343,6 @@ void EKF2::print_target_gps() | ... | @@ -1334,7 +1343,6 @@ void EKF2::print_target_gps() |
1334 | target_lat=int32_t(mission_item.lat * long(pow(10,7))); | 1343 | target_lat=int32_t(mission_item.lat * long(pow(10,7))); |
1335 | target_lon=int32_t(mission_item.lon * long(pow(10,7))); | 1344 | target_lon=int32_t(mission_item.lon * long(pow(10,7))); |
1336 | target_alt=int32_t(mission_item.altitude * long(pow(10,4))); | 1345 | target_alt=int32_t(mission_item.altitude * long(pow(10,4))); |
1337 | - //std::cout<<"start\t#"<<i<< "(lat/lon/alt)\t" << target_lat<< "\t"<<target_lon<<"\t"<<target_alt<<std::endl; | ||
1338 | } | 1346 | } |
1339 | } | 1347 | } |
1340 | } | 1348 | } | ... | ... |
... | @@ -135,12 +135,14 @@ private: | ... | @@ -135,12 +135,14 @@ private: |
135 | void UpdateMagSample(ekf2_timestamps_s &ekf2_timestamps); | 135 | void UpdateMagSample(ekf2_timestamps_s &ekf2_timestamps); |
136 | void UpdateRangeSample(ekf2_timestamps_s &ekf2_timestamps); | 136 | void UpdateRangeSample(ekf2_timestamps_s &ekf2_timestamps); |
137 | void UpdateMagCalibration(const hrt_abstime ×tamp); | 137 | void UpdateMagCalibration(const hrt_abstime ×tamp); |
138 | - void print_target_gps(); | 138 | + void set_target_gps(); |
139 | void print_current_gps(gps_message gps_msg); | 139 | void print_current_gps(gps_message gps_msg); |
140 | void calculate_inclination_target(); | 140 | void calculate_inclination_target(); |
141 | double calculate_inclination_current(gps_message gps_msg); | 141 | double calculate_inclination_current(gps_message gps_msg); |
142 | void check_inclination(double check); | 142 | void check_inclination(double check); |
143 | + bool check_warning(); | ||
143 | double* inclination=nullptr; | 144 | double* inclination=nullptr; |
145 | + int warning_count=0; | ||
144 | int32_t target_lat,target_lon,target_alt; | 146 | int32_t target_lat,target_lon,target_alt; |
145 | mission_s mission; | 147 | mission_s mission; |
146 | /* | 148 | /* | ... | ... |
-
Please register or login to post a comment