mirror of
https://github.com/jomjol/AI-on-the-edge-device.git
synced 2025-12-08 20:46:52 +03:00
* fix kernel panic (vector out of range) in getReadoutRawString * fix key of caches * fix key of caches * fix key caches * fix cache keys * fix cache keys * move set variables to top * debug * fix key * testing * try fix changelog * test * Update Changelog.md for release * Revert "Update Changelog.md for release" This reverts commit4f51ec7962. * remove testing * fix release creation * testing * Update Changelog.md for release * test * Revert "Merge branch 'master' of https://github.com/haverland/AI-on-the-edge-device" This reverts commitf68695a4c0, reversing changes made toa096cf7182. * Revert "test" This reverts commita096cf7182. * revert testing * #1524 - ensure the result of ZeigerEvalHybridNeu is <10 * Fix late digit transition #1503 Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
@@ -177,7 +177,7 @@ int ClassFlowCNNGeneral::ZeigerEvalHybridNeu(float zahl, float zahl_vorgaenger,
|
|||||||
result = (ergebnis_vorkomma + 1) % 10;
|
result = (ergebnis_vorkomma + 1) % 10;
|
||||||
else
|
else
|
||||||
// Akt. digit und Vorgänger haben Nulldurchgang
|
// 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) +
|
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));
|
" 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;
|
return result;
|
||||||
@@ -191,7 +191,7 @@ int ClassFlowCNNGeneral::ZeigerEvalHybridNeu(float zahl, float zahl_vorgaenger,
|
|||||||
// Vorlauf (else - Zweig) passiert nicht bereits ab 9.
|
// Vorlauf (else - Zweig) passiert nicht bereits ab 9.
|
||||||
if (DigitalUebergangsbereichVorlauf>=zahl_vorgaenger || ergebnis_nachkomma >= 4)
|
if (DigitalUebergangsbereichVorlauf>=zahl_vorgaenger || ergebnis_nachkomma >= 4)
|
||||||
// aktuelles digit hat genauso wie das Vorgängerdigit noch keinen Nulldurchgang.
|
// aktuelles digit hat genauso wie das Vorgängerdigit noch keinen Nulldurchgang.
|
||||||
result = ergebnis_vorkomma;
|
result = ergebnis_vorkomma % 10;
|
||||||
else
|
else
|
||||||
// aktuelles digit läuft dem kleineren digit (9.x) vor. Also schon >=x.0 während das vorherige Digit noch
|
// 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.
|
// keinen Nulldurchgang hat. Daher wird um 1 reduziert.
|
||||||
@@ -211,7 +211,8 @@ int ClassFlowCNNGeneral::ZeigerEvalAnalogToDigitNeu(float zahl, float ziffer_vor
|
|||||||
bool roundedUp = false;
|
bool roundedUp = false;
|
||||||
|
|
||||||
// Innerhalb der digitalen Unschaefe
|
// 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;
|
result = (int) (round(zahl) + 10) % 10;
|
||||||
roundedUp = true;
|
roundedUp = true;
|
||||||
// vor/nachkomma neu berechnen, da wir anhand der Unschaefe die Zahl anpassen.
|
// vor/nachkomma neu berechnen, da wir anhand der Unschaefe die Zahl anpassen.
|
||||||
@@ -230,11 +231,7 @@ int ClassFlowCNNGeneral::ZeigerEvalAnalogToDigitNeu(float zahl, float ziffer_vor
|
|||||||
// Kein Nulldurchgang hat stattgefunden.
|
// Kein Nulldurchgang hat stattgefunden.
|
||||||
// Nur eval_vorgaenger verwendet, da ziffer_vorgaenger hier falsch sein könnte.
|
// 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.
|
// 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)
|
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))
|
|
||||||
|
|
||||||
{
|
{
|
||||||
result = ((ergebnis_vorkomma+10) - 1) % 10;
|
result = ((ergebnis_vorkomma+10) - 1) % 10;
|
||||||
LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "ZeigerEvalAnalogToDigitNeu - Nulldurchgang noch nicht stattgefunden = " + std::to_string(result) +
|
LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "ZeigerEvalAnalogToDigitNeu - Nulldurchgang noch nicht stattgefunden = " + std::to_string(result) +
|
||||||
|
|||||||
@@ -522,4 +522,24 @@ void test_doFlowPP3() {
|
|||||||
delete undertestPost;
|
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());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ void test_getReadoutRawString() {
|
|||||||
gen_analog->ROI.push_back(anaROI);
|
gen_analog->ROI.push_back(anaROI);
|
||||||
|
|
||||||
result = _undertestPost->flowAnalog->getReadoutRawString(0);
|
result = _undertestPost->flowAnalog->getReadoutRawString(0);
|
||||||
TEST_ASSERT_EQUAL_STRING("\t5.5", result.c_str());
|
TEST_ASSERT_EQUAL_STRING(",5.5", result.c_str());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
#include "sdmmc_cmd.h"
|
#include "sdmmc_cmd.h"
|
||||||
#include "driver/sdmmc_host.h"
|
#include "driver/sdmmc_host.h"
|
||||||
#include "driver/sdmmc_defs.h"
|
#include "driver/sdmmc_defs.h"
|
||||||
static const char *TAG = "MAIN TEST";
|
//static const char *TAG = "MAIN TEST";
|
||||||
#define __SD_USE_ONE_LINE_MODE__
|
#define __SD_USE_ONE_LINE_MODE__
|
||||||
#include "server_GPIO.h"
|
#include "server_GPIO.h"
|
||||||
|
|
||||||
@@ -117,6 +117,7 @@ extern "C" void app_main()
|
|||||||
RUN_TEST(test_doFlowPP1);
|
RUN_TEST(test_doFlowPP1);
|
||||||
RUN_TEST(test_doFlowPP2);
|
RUN_TEST(test_doFlowPP2);
|
||||||
RUN_TEST(test_doFlowPP3);
|
RUN_TEST(test_doFlowPP3);
|
||||||
|
RUN_TEST(test_doFlowPP4);
|
||||||
|
|
||||||
// getReadoutRawString test
|
// getReadoutRawString test
|
||||||
RUN_TEST(test_getReadoutRawString);
|
RUN_TEST(test_getReadoutRawString);
|
||||||
|
|||||||
Reference in New Issue
Block a user