aboutsummaryrefslogtreecommitdiff
path: root/src/poser_sba.c
diff options
context:
space:
mode:
authorJustin Berger <j.david.berger@gmail.com>2018-04-07 07:36:23 -0600
committerJustin Berger <j.david.berger@gmail.com>2018-04-07 07:36:23 -0600
commit5d43c7f5541b91f29aa3138a8a460f48198e11d0 (patch)
tree37559b3c307b005703bade537028404aa39a5163 /src/poser_sba.c
parent9dc7a7ed589db16cc040c7eeeae0343977f3f885 (diff)
downloadlibsurvive-5d43c7f5541b91f29aa3138a8a460f48198e11d0.tar.gz
libsurvive-5d43c7f5541b91f29aa3138a8a460f48198e11d0.tar.bz2
Fixed terrible bug in SBA which slowed it way down
Diffstat (limited to 'src/poser_sba.c')
-rw-r--r--src/poser_sba.c37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/poser_sba.c b/src/poser_sba.c
index fcf4f2e..23e03fc 100644
--- a/src/poser_sba.c
+++ b/src/poser_sba.c
@@ -399,7 +399,7 @@ int PoserSBA(SurviveObject *so, PoserData *pd) {
d->failures_to_reset_cntr = 0;
d->failures_to_reset = survive_configi(ctx, "sba-failures-to-reset", SC_GET, 1);
d->successes_to_reset_cntr = 0;
- d->successes_to_reset = survive_configi(ctx, "sba-successes-to-reset", SC_GET, 100);
+ d->successes_to_reset = survive_configi(ctx, "sba-successes-to-reset", SC_GET, -1);
d->useIMU = survive_configi(ctx, "sba-use-imu", SC_GET, 1);
d->required_meas = survive_configi(ctx, "sba-required-meas", SC_GET, 8);
d->max_error = survive_configf(ctx, "sba-max-error", SC_GET, .0001);
@@ -435,27 +435,28 @@ int PoserSBA(SurviveObject *so, PoserData *pd) {
d->last_lh = lightData->lh;
d->last_acode = lightData->acode;
- }
- if (error < 0) {
- if (d->failures_to_reset_cntr > 0)
- d->failures_to_reset_cntr--;
- } else {
- if (d->useIMU) {
- FLT var_meters = 0.5;
- FLT var_quat = error + .05;
- FLT var[7] = {error * var_meters, error * var_meters, error * var_meters, error * var_quat,
- error * var_quat, error * var_quat, error * var_quat};
-
- survive_imu_tracker_integrate_observation(so, lightData->timecode, &d->tracker, &estimate, var);
- estimate = d->tracker.pose;
+
+ if (error < 0) {
+ if (d->failures_to_reset_cntr > 0)
+ d->failures_to_reset_cntr--;
}
+ else {
+ if (d->useIMU) {
+ FLT var_meters = 0.5;
+ FLT var_quat = error + .05;
+ FLT var[7] = { error * var_meters, error * var_meters, error * var_meters, error * var_quat,
+ error * var_quat, error * var_quat, error * var_quat };
+
+ survive_imu_tracker_integrate_observation(so, lightData->timecode, &d->tracker, &estimate, var);
+ estimate = d->tracker.pose;
+ }
- PoserData_poser_pose_func(&lightData->hdr, so, &estimate);
- if (d->successes_to_reset_cntr > 0)
- d->successes_to_reset_cntr--;
+ PoserData_poser_pose_func(&lightData->hdr, so, &estimate);
+ if (d->successes_to_reset_cntr > 0)
+ d->successes_to_reset_cntr--;
+ }
}
-
return 0;
}
case POSERDATA_FULL_SCENE: {