From d20e3d4a3ac6114b296f0284f336b59c178b4e72 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 22 Oct 2017 10:39:17 +0200 Subject: filter/accela: kill rotation nonlinearity --- filter-accela/accela-settings.hpp | 4 +- filter-accela/ftnoir_accela_filtercontrols.ui | 313 +++++++++----------------- filter-accela/ftnoir_filter_accela.cpp | 12 - filter-accela/ftnoir_filter_accela_dialog.cpp | 8 - 4 files changed, 106 insertions(+), 231 deletions(-) (limited to 'filter-accela') diff --git a/filter-accela/accela-settings.hpp b/filter-accela/accela-settings.hpp index 3c4487be..2dfc965c 100644 --- a/filter-accela/accela-settings.hpp +++ b/filter-accela/accela-settings.hpp @@ -50,14 +50,12 @@ struct settings_accela : opts value rot_sensitivity, pos_sensitivity; value rot_deadzone, pos_deadzone; value ewma; - value rot_nonlinearity; settings_accela() : opts("accela-sliders"), rot_sensitivity(b, "rotation-sensitivity", slider_value(1.5, .05, 2.5)), pos_sensitivity(b, "translation-sensitivity", slider_value(1., .05, 1.5)), rot_deadzone(b, "rotation-deadzone", slider_value(.03, 0, .1)), pos_deadzone(b, "translation-deadzone", slider_value(.1, 0, 1)), - ewma(b, "ewma", slider_value(0, 0, 200)), - rot_nonlinearity(b, "rotation-nonlinearity", slider_value(1, 1, 1.25)) + ewma(b, "ewma", slider_value(0, 0, 200)) {} }; diff --git a/filter-accela/ftnoir_accela_filtercontrols.ui b/filter-accela/ftnoir_accela_filtercontrols.ui index 913b775e..f390c329 100644 --- a/filter-accela/ftnoir_accela_filtercontrols.ui +++ b/filter-accela/ftnoir_accela_filtercontrols.ui @@ -10,7 +10,7 @@ 0 0 550 - 431 + 345 @@ -36,67 +36,62 @@ 5 - - - - General + + + + + 0 + 0 + + + + + 7 + + + + QFrame::NoFrame + + + <html><head/><body><p align="right"><br/><span style=" font-size:10pt;">Accela by </span><a href="https://github.com/sthalik"><span style=" font-size:10pt; text-decoration: underline; color:#0057ae;">Stanisław Halik</span></a><span style=" font-size:10pt;"><br/>Thanks to </span><a href="https://github.com/dbaarda"><span style=" font-size:10pt; text-decoration: underline; color:#0057ae;">Donovan Baarda</span></a></p><p align="right"><span style=" font-size:10pt;">2012-2015</span></p><p align="right"><br/><span style=" font-size:8pt;">Visit </span><a href="https://github.com/opentrack/opentrack/wiki/Accela-in-opentrack-2.3"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">our wiki</span></a><span style=" font-size:8pt;"> for description of the settings.</span></p></body></html> + + + Qt::RichText + + + false + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + 0 + + + 0 + + + true + + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + + + + + 0 + 0 + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - 0 - - - 0 - - - - - Smoothing - - - - - - - - 50 - 0 - - - - 0 ms - - - - - - - - 0 - 0 - - - - 0 - - - 20 - - - 1 - - - Qt::Horizontal - - - QSlider::TicksAbove - - - 5 - - - - @@ -339,166 +334,69 @@ - - + + - Rotation nonlinearity + General - + + + 0 + + + 0 + - + - Setting it higher will filter out rotation noise but may cause sudden jumps on very high settings. + Smoothing + + + + + + + + 50 + 0 + - - true + + 0 ms - - - QFrame::NoFrame - - - QFrame::Raised - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Value - - - - - - - - 50 - 0 - - - - - 12 - - - - <html><head/><body><p>x<span style=" vertical-align:super;">2</span></p></body></html> - - - - - - - - 0 - 0 - - - - 0 - - - 10 - - - 1 - - - 1 - - - Qt::Horizontal - - - QSlider::TicksAbove - - - 3 - - - - + + + + 0 + 0 + + + + 0 + + + 20 + + + 1 + + + Qt::Horizontal + + + QSlider::TicksAbove + + + 5 + - - - - - 0 - 0 - - - - - 7 - - - - QFrame::NoFrame - - - <html><head/><body><p align="right"><br/><span style=" font-size:10pt;">Accela by </span><a href="https://github.com/sthalik"><span style=" font-size:10pt; text-decoration: underline; color:#0057ae;">Stanisław Halik</span></a><span style=" font-size:10pt;"><br/>Thanks to </span><a href="https://github.com/dbaarda"><span style=" font-size:10pt; text-decoration: underline; color:#0057ae;">Donovan Baarda</span></a></p><p align="right"><span style=" font-size:10pt;">2012-2015</span></p><p align="right"><br/><span style=" font-size:8pt;">Visit </span><a href="https://github.com/opentrack/opentrack/wiki/Accela-in-opentrack-2.3"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">our wiki</span></a><span style=" font-size:8pt;"> for description of the settings.</span></p></body></html> - - - Qt::RichText - - - false - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 0 - - - 0 - - - true - - - Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 0 - 0 - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - @@ -507,7 +405,6 @@ rot_dz_slider translation_slider trans_dz_slider - rot_nl_slider diff --git a/filter-accela/ftnoir_filter_accela.cpp b/filter-accela/ftnoir_filter_accela.cpp index 51b5d6e9..8a403211 100644 --- a/filter-accela/ftnoir_filter_accela.cpp +++ b/filter-accela/ftnoir_filter_accela.cpp @@ -101,7 +101,6 @@ void accela::filter(const double* input, double *output) const double alpha = dt/(dt+RC); const double rot_dz = s.rot_deadzone.to(); const double pos_dz = s.pos_deadzone.to(); - const double nl = s.rot_nonlinearity.to(); // rot @@ -117,17 +116,6 @@ void accela::filter(const double* input, double *output) deltas[i] = d / rot_thres; } - if (nl > 1.) - { - for (unsigned k = 3; k < 6; k++) - { - static constexpr double nl_end = 7; - - if (fabs(deltas[k]) <= nl_end) - deltas[k] = copysign(pow(fabs(deltas[k]/nl_end), nl) * nl_end, deltas[k]); - } - } - do_deltas(&deltas[Yaw], &output[Yaw], alpha, smoothed_input[0], [this](double x) { return spline_rot.get_value_no_save(x); }); #if defined DEBUG_ACCELA diff --git a/filter-accela/ftnoir_filter_accela_dialog.cpp b/filter-accela/ftnoir_filter_accela_dialog.cpp index c504188a..ab6634c4 100644 --- a/filter-accela/ftnoir_filter_accela_dialog.cpp +++ b/filter-accela/ftnoir_filter_accela_dialog.cpp @@ -25,20 +25,12 @@ dialog_accela::dialog_accela() tie_setting(s.ewma, ui.ewma_slider); tie_setting(s.rot_deadzone, ui.rot_dz_slider); tie_setting(s.pos_deadzone, ui.trans_dz_slider); - tie_setting(s.rot_nonlinearity, ui.rot_nl_slider); tie_setting(s.rot_sensitivity, ui.rot_gain, [](const slider_value& s) { return tr("%1°").arg(s, 0, 'g', 4); }); tie_setting(s.pos_sensitivity, ui.trans_gain, [](const slider_value& s) { return tr("%1mm").arg(s, 0, 'g', 4); }); tie_setting(s.ewma, ui.ewma_label, [](const slider_value& s) { return tr("%1ms").arg(s); }); tie_setting(s.rot_deadzone, ui.rot_dz, [](const slider_value& s) { return tr("%1°").arg(s, 0, 'g', 4); }); tie_setting(s.pos_deadzone, ui.trans_dz, [](const slider_value& s) { return tr("%1mm").arg(s); }); - tie_setting(s.rot_nonlinearity, ui.rot_nl, [](const slider_value& s) { - return tr("" - "

x" - "%1" - "

" - "").arg(s); - }); //#define SPLINE_ROT_DEBUG //#define SPLINE_TRANS_DEBUG -- cgit v1.2.3