From 2167eb2960342801846cf8962e3185931572e71d Mon Sep 17 00:00:00 2001 From: AndriiJushchenko Date: Wed, 25 Mar 2026 10:23:25 +0200 Subject: [PATCH 1/3] DP implementation + delay --- edge/app/usecases/data_processing.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/edge/app/usecases/data_processing.py b/edge/app/usecases/data_processing.py index e4bb712..625b50d 100644 --- a/edge/app/usecases/data_processing.py +++ b/edge/app/usecases/data_processing.py @@ -1,6 +1,8 @@ +import time from app.entities.agent_data import AgentData from app.entities.processed_agent_data import ProcessedAgentData +_last_processed_times = {} def process_agent_data( agent_data: AgentData, @@ -12,8 +14,22 @@ def process_agent_data( Returns: processed_data_batch (ProcessedAgentData): Processed data containing the classified state of the road surface and agent data. """ - # Implement it + user_id = agent_data.user_id + + curr_time = time.time() + last_processed_time = _last_processed_times.get(user_id, 0) + if curr_time - last_processed_time < 1.0: + return None + _last_processed_times[user_id] = curr_time + + road_state = "normal" + + if agent_data.accelerometer.z < -1.0: + road_state = "pothole" + elif agent_data.accelerometer.z > 1.0: + road_state = "bump" + return ProcessedAgentData( - road_state="normal", + road_state=road_state, agent_data=agent_data ) From d6e094e6c090407ee709954320afd00bb3289467 Mon Sep 17 00:00:00 2001 From: AndriiJushchenko Date: Wed, 25 Mar 2026 10:37:01 +0200 Subject: [PATCH 2/3] fix: delay logic in DP --- edge/app/usecases/data_processing.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/edge/app/usecases/data_processing.py b/edge/app/usecases/data_processing.py index 625b50d..ecfdd78 100644 --- a/edge/app/usecases/data_processing.py +++ b/edge/app/usecases/data_processing.py @@ -15,20 +15,19 @@ def process_agent_data( processed_data_batch (ProcessedAgentData): Processed data containing the classified state of the road surface and agent data. """ user_id = agent_data.user_id + road_state = "normal" curr_time = time.time() last_processed_time = _last_processed_times.get(user_id, 0) - if curr_time - last_processed_time < 1.0: - return None + + if curr_time - last_processed_time > 1.0: + if agent_data.accelerometer.z < -1.0: + road_state = "pothole" + elif agent_data.accelerometer.z > 1.0: + road_state = "bump" + _last_processed_times[user_id] = curr_time - road_state = "normal" - - if agent_data.accelerometer.z < -1.0: - road_state = "pothole" - elif agent_data.accelerometer.z > 1.0: - road_state = "bump" - return ProcessedAgentData( road_state=road_state, agent_data=agent_data From 0695e3d09214eb75f16b0736d64b14345d797b86 Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Wed, 25 Mar 2026 12:00:55 +0200 Subject: [PATCH 3/3] [P] Use state machine approach to determine road condition --- edge/app/usecases/data_processing.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/edge/app/usecases/data_processing.py b/edge/app/usecases/data_processing.py index ecfdd78..220be43 100644 --- a/edge/app/usecases/data_processing.py +++ b/edge/app/usecases/data_processing.py @@ -1,8 +1,7 @@ -import time from app.entities.agent_data import AgentData from app.entities.processed_agent_data import ProcessedAgentData -_last_processed_times = {} +_last_detection_state = {} def process_agent_data( agent_data: AgentData, @@ -17,16 +16,19 @@ def process_agent_data( user_id = agent_data.user_id road_state = "normal" - curr_time = time.time() - last_processed_time = _last_processed_times.get(user_id, 0) - - if curr_time - last_processed_time > 1.0: - if agent_data.accelerometer.z < -1.0: - road_state = "pothole" - elif agent_data.accelerometer.z > 1.0: - road_state = "bump" + last_detection_state = _last_detection_state.get(user_id, False) - _last_processed_times[user_id] = curr_time + if (agent_data.accelerometer.z < 0.6): + road_state = "pothole" + elif (agent_data.accelerometer.z > 1.2): + road_state = "bump" + + detection_happened = road_state != "normal" + + if not (not last_detection_state and detection_happened): + road_state = "normal" + + _last_detection_state[user_id] = detection_happened return ProcessedAgentData( road_state=road_state,