Skip to content
Snippets Groups Projects
Commit 91c8f60b authored by Hailong Zhu's avatar Hailong Zhu
Browse files

- updated eventFilter to support positionConditionCell.

parent a0db9dd0
No related branches found
No related tags found
No related merge requests found
......@@ -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");
......
......@@ -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,11 +71,14 @@ 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();
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 {
IPos_DatamodelFactory dataModelFactory = IPos_DatamodelFactory.eINSTANCE;
......@@ -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)) {
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) {
......
......@@ -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());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment