Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#1524 - ensure the recognized digit is less than 10 #1525

Merged
merged 29 commits into from Dec 9, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
2265563
fix kernel panic (vector out of range) in getReadoutRawString
haverland Oct 31, 2022
18d86ea
fix key of caches
haverland Nov 27, 2022
b798f85
Merge branch 'rolling' of https://github.com/haverland/AI-on-the-edge…
haverland Nov 27, 2022
c0ec71d
fix key of caches
haverland Nov 27, 2022
a88308b
fix key caches
haverland Nov 27, 2022
88e5fb9
fix cache keys
haverland Nov 27, 2022
7a5524e
fix cache keys
haverland Nov 27, 2022
de51656
move set variables to top
haverland Nov 27, 2022
f682fea
debug
haverland Nov 27, 2022
82d264d
fix cache-keys
haverland Nov 27, 2022
f6d47d4
fix key
haverland Nov 28, 2022
52d4f2b
testing
haverland Nov 28, 2022
4ce3202
try fix changelog
haverland Nov 28, 2022
0464a79
test
haverland Nov 28, 2022
4f51ec7
Update Changelog.md for release
invalid-email-address Nov 28, 2022
e85c0b0
Revert "Update Changelog.md for release"
haverland Nov 28, 2022
3fd797e
remove testing
haverland Nov 28, 2022
eb80e0b
Merge branch 'rolling' of https://github.com/haverland/AI-on-the-edge…
haverland Nov 28, 2022
35af5cc
fix release creation
haverland Nov 28, 2022
6b804d4
testing
haverland Nov 28, 2022
2901263
Update Changelog.md for release
invalid-email-address Nov 28, 2022
a096cf7
test
haverland Nov 28, 2022
f68695a
Merge branch 'master' of https://github.com/haverland/AI-on-the-edge-…
haverland Nov 28, 2022
de3381d
Revert "Merge branch 'master' of https://github.com/haverland/AI-on-t…
haverland Nov 28, 2022
f29f779
Revert "test"
haverland Nov 28, 2022
21bc70a
revert testing
haverland Nov 28, 2022
2b5cedf
Merge branch 'rolling' of https://github.com/haverland/AI-on-the-edge…
haverland Dec 8, 2022
1c82952
#1524 - ensure the result of ZeigerEvalHybridNeu is <10
haverland Dec 8, 2022
155eefc
Fix late digit transition #1503
haverland Dec 8, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 5 additions & 8 deletions code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp
Expand Up @@ -177,7 +177,7 @@ int ClassFlowCNNGeneral::ZeigerEvalHybridNeu(float zahl, float zahl_vorgaenger,
result = (ergebnis_vorkomma + 1) % 10;
else
// Akt. digit und Vorgänger haben Nulldurchgang
result = ergebnis_vorkomma;
result = ergebnis_vorkomma % 10;
LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "ZeigerEvalHybridNeu - KEIN Analoger Vorgänger, Nulldurchgang hat stattgefunden = " + std::to_string(result) +
" zahl: " + std::to_string(zahl) + " zahl_vorgaenger = " + std::to_string(zahl_vorgaenger)+ " eval_vorgaenger = " + std::to_string(eval_vorgaenger) + " DigitalUnschaerfe = " + std::to_string(DigitalUnschaerfe));
return result;
Expand All @@ -191,7 +191,7 @@ int ClassFlowCNNGeneral::ZeigerEvalHybridNeu(float zahl, float zahl_vorgaenger,
// Vorlauf (else - Zweig) passiert nicht bereits ab 9.
if (DigitalUebergangsbereichVorlauf>=zahl_vorgaenger || ergebnis_nachkomma >= 4)
// aktuelles digit hat genauso wie das Vorgängerdigit noch keinen Nulldurchgang.
result = ergebnis_vorkomma;
result = ergebnis_vorkomma % 10;
else
// aktuelles digit läuft dem kleineren digit (9.x) vor. Also schon >=x.0 während das vorherige Digit noch
// keinen Nulldurchgang hat. Daher wird um 1 reduziert.
Expand All @@ -211,7 +211,8 @@ int ClassFlowCNNGeneral::ZeigerEvalAnalogToDigitNeu(float zahl, float ziffer_vor
bool roundedUp = false;

// Innerhalb der digitalen Unschaefe
if (ergebnis_nachkomma >= (10-DigitalUnschaerfe * 10)) { // Band um die Ziffer --> Runden, da Ziffer im Rahmen Ungenauigkeit erreicht
if ((ergebnis_nachkomma >= (10-DigitalUnschaerfe * 10)) // Band um die Ziffer --> Runden, da Ziffer im Rahmen Ungenauigkeit erreicht
|| (eval_vorgaenger <= 4 && ergebnis_nachkomma>=6)) { // oder digit läuft nach (analog =0..4, digit >=6)
result = (int) (round(zahl) + 10) % 10;
roundedUp = true;
// vor/nachkomma neu berechnen, da wir anhand der Unschaefe die Zahl anpassen.
Expand All @@ -230,11 +231,7 @@ int ClassFlowCNNGeneral::ZeigerEvalAnalogToDigitNeu(float zahl, float ziffer_vor
// Kein Nulldurchgang hat stattgefunden.
// Nur eval_vorgaenger verwendet, da ziffer_vorgaenger hier falsch sein könnte.
// ziffer_vorgaenger<=0.1 & eval_vorgaenger=9 entspricht analog wurde zurückgesetzt wegen vorhergehender analog, die noch nicht auf 0 sind.
if ((eval_vorgaenger>=6 && (ziffer_vorgaenger>analogDigitalTransitionStart || ziffer_vorgaenger<=0.2) && roundedUp)
// digit läuft dem Analog vor. Darf aber erst passieren, wenn
// digit wirklich schnon los läuft, deshalb 9
|| (eval_vorgaenger>9 && ziffer_vorgaenger>analogDigitalTransitionStart && ergebnis_nachkomma<=1))

if ((eval_vorgaenger>=6 && (ziffer_vorgaenger>analogDigitalTransitionStart || ziffer_vorgaenger<=0.2) && roundedUp))
{
result = ((ergebnis_vorkomma+10) - 1) % 10;
LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "ZeigerEvalAnalogToDigitNeu - Nulldurchgang noch nicht stattgefunden = " + std::to_string(result) +
Expand Down
Expand Up @@ -522,4 +522,24 @@ void test_doFlowPP3() {
delete undertestPost;
}

void test_doFlowPP4() {

// Fehler V13.0.4
// https://github.com/jomjol/AI-on-the-edge-device/issues/1503#issuecomment-1343335855
std::vector<float> digits = { 0.0, 0.0, 6.9, 1.0, 6.6}; // 716.0199 als falsches Ergebnis.
// Test ist nur erfolgreich mit Veränderung des AnalogdigitTransistionStart
std::vector<float> analogs = {9.9, 1.8, 6.6, 5.8};
const char* expected = "717.0165";
const char* expected_extended= "717.01658";

// extendResolution=false
std::string result = process_doFlow(analogs, digits, Digital100, false, false);
TEST_ASSERT_EQUAL_STRING(expected, result.c_str());

// checkConsistency=false und extendResolution=true
result = process_doFlow(analogs, digits, Digital100, false, true);
TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str());

}


Expand Up @@ -20,7 +20,7 @@ void test_getReadoutRawString() {
gen_analog->ROI.push_back(anaROI);

result = _undertestPost->flowAnalog->getReadoutRawString(0);
TEST_ASSERT_EQUAL_STRING("\t5.5", result.c_str());
TEST_ASSERT_EQUAL_STRING(",5.5", result.c_str());



Expand Down
3 changes: 2 additions & 1 deletion code/test/test_suite_flowcontroll.cpp
Expand Up @@ -11,7 +11,7 @@
#include "sdmmc_cmd.h"
#include "driver/sdmmc_host.h"
#include "driver/sdmmc_defs.h"
static const char *TAG = "MAIN TEST";
//static const char *TAG = "MAIN TEST";
#define __SD_USE_ONE_LINE_MODE__
#include "server_GPIO.h"

Expand Down Expand Up @@ -117,6 +117,7 @@ extern "C" void app_main()
RUN_TEST(test_doFlowPP1);
RUN_TEST(test_doFlowPP2);
RUN_TEST(test_doFlowPP3);
RUN_TEST(test_doFlowPP4);

// getReadoutRawString test
RUN_TEST(test_getReadoutRawString);
Expand Down