From 91c8f60bb63b9619c3963ba44ed83c7e7ea34363 Mon Sep 17 00:00:00 2001 From: Hailong <hailong.zhu@tu-dresden.de> Date: Wed, 22 Sep 2021 17:02:04 +0200 Subject: [PATCH] - updated eventFilter to support positionConditionCell. --- .../eventfilter/TestEventFilter.java | 6 ++-- .../eventfilter/eventFilter.java | 32 +++++++++++-------- .../Functionality/eventfilter/readConfig.java | 3 +- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/main/java/ipos/project/Functionality/eventfilter/TestEventFilter.java b/src/main/java/ipos/project/Functionality/eventfilter/TestEventFilter.java index dbe5fcf..050002b 100644 --- a/src/main/java/ipos/project/Functionality/eventfilter/TestEventFilter.java +++ b/src/main/java/ipos/project/Functionality/eventfilter/TestEventFilter.java @@ -49,9 +49,9 @@ public class TestEventFilter { events.put(tagNames.tagY,"2.456"); events.put(tagNames.tagZ, "1"); events.put(tagNames.tagAccuracy,"0.15"); */ - testPoint3D.setX((float) 1.34); - testPoint3D.setY((float) 2.456); - testPoint3D.setZ((float) 1); + testPoint3D.setX((float) 3.34); + testPoint3D.setY((float) 2.656); + testPoint3D.setZ((float) 2); testPosition.setPoint(testPoint3D); testPlacing.setPosition(testPosition); testLObject.setId("AGV001"); diff --git a/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java b/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java index 05b3589..f75f81c 100644 --- a/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java +++ b/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java @@ -5,6 +5,7 @@ import ipos.project.Functionality.eventfilter.Cell.Vector3; import ipos.project.DataModellntegration.iPos_Datamodel.*; import java.sql.Timestamp; +import java.lang.Math; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -70,10 +71,13 @@ public class eventFilter { return (float) Math.hypot(Math.hypot(dx, dy), dz); } - private static boolean is_in_cell(Vector3 cod, Vector3 ref, Vector3 size, Quaternion rot){ - cod.sub(ref); - rot.toMatrix(); - return true; + private static boolean is_in_cell(Point3D cod, Float[] ref, Float[] size, Float[] rot){ + if ((Math.abs(cod.getX()-ref[0])<= size[0]/2) && (Math.abs(cod.getY()-ref[1])<= size[1]/2) && (Math.abs(cod.getZ()-ref[2])<= size[2]/2)) { + return true; + } + else { + return false; + } } public boolean process(PositionEvent event) throws ParseException { @@ -216,19 +220,21 @@ public class eventFilter { System.out.println("Filter status (position_delta) " + ": " + flag); //filter positionCondition_cell condition - /*if (filterStructure[8] && !flag) { + if (filterStructure[8] && !flag) { flag = true; //switch the filter status to block, if the event meet the filter condition, switch to pass - Vector3 cod = new Vector3(Double.parseDouble(event.getPositionInfo().getPosition().getCoordinate().getX()),Double.parseDouble(event.getPositionInfo().getPosition().getCoordinate().getY()),Double.parseDouble(event.getPositionInfo().getPosition().getCoordinate().getZ())); - for (int i = 0; i < positionCondition_cell.size(); i++) { - Vector3 ref = new Vector3(positionCondition_cell.get(i)[0][0], positionCondition_cell.get(i)[0][1], positionCondition_cell.get(i)[0][2]); - Vector3 size = new Vector3(positionCondition_cell.get(i)[1][0], positionCondition_cell.get(i)[1][1], positionCondition_cell.get(i)[1][2]); - Quaternion rot = new Quaternion(positionCondition_cell.get(i)[2][0], positionCondition_cell.get(i)[2][1], positionCondition_cell.get(i)[2][2], positionCondition_cell.get(i)[2][3]); - if (is_in_cell(cod, ref, size, rot)) { - flag = false; + if (event.getPlacing().getPosition() instanceof RelativePosition) { + RelativePosition rPosition = (RelativePosition) event.getPlacing().getPosition(); + for (int i = 0; i < positionConditionCell.size(); i++) { + if (rPosition.getPoint() instanceof Point3D) { + Point3D cod = (Point3D) rPosition.getPoint(); + if (is_in_cell(cod, positionConditionCell.get(i)[0], positionConditionCell.get(i)[1], positionConditionCell.get(i)[2])) { + flag = false; + } + } } } } - System.out.println("Filter status (positionCondition_cell) " + ": " + flag);*/ + System.out.println("Filter status (positionCondition_cell) " + ": " + flag); if (!flag) { diff --git a/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java b/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java index b32f9de..d0ab1d7 100644 --- a/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java +++ b/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java @@ -261,8 +261,9 @@ public class readConfig { System.out.println("\tsensor_id_condition : " + config.getSensorIdCondition()); System.out.println("\tid_condition : " + config.getIdCondition()); System.out.println("\taccuracy_condition : " + config.getAccuracyCondition()); - System.out.println("\tposition_condition : " + config.getPositionCondition().get(0)[0] + ", " + config.getPositionCondition().get(0)[1] + ", " + config.getPositionCondition().get(0)[2] + ", " + config.getPositionCondition().get(0)[3]); + //System.out.println("\tposition_condition : " + config.getPositionCondition().get(0)[0] + ", " + config.getPositionCondition().get(0)[1] + ", " + config.getPositionCondition().get(0)[2] + ", " + config.getPositionCondition().get(0)[3]); System.out.println("\ttime_min_interval : " + config.getTimeMinInterval()); System.out.println("\tposition_delta : " + config.getPositionDelta()); + System.out.println("\tfilter_structure : " + config.getFilterStructure()); } } -- GitLab