Created
May 23, 2018 08:37
-
-
Save Arth-ur/fadf874566a393152f1c33315af51cdf to your computer and use it in GitHub Desktop.
SensorLog utiity for Robogen
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.robogengame.robogen; | |
import java.io.BufferedReader; | |
import java.io.FileInputStream; | |
import java.io.FileNotFoundException; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.InputStreamReader; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.List; | |
/** | |
* Represents a sensor log file. | |
* | |
* Command line usage: | |
* | |
* $ java SensorLog [-t time_step] [sensor_index...] filename | |
* | |
* -t time_step provides the time step as a floating point number (default: | |
* 0.005) sensor_index a list of sensor index filename filename or - to read | |
* from the standard input | |
* | |
* Example usage in command line to compute the jerk of the first, second and | |
* third sensors (assuming those sensors are accelerometers): | |
* | |
* $ java SensorLog sensorLog.txt | |
* | |
* The sensors to be read can be changed by providing their indices before the | |
* name of the sensor log file. Example for reading the fourth and fifth | |
* sensors: | |
* | |
* $ java SensorLog 3 4 sensorLog.txt | |
* | |
* Set the simulation time step to 0.01: | |
* | |
* $ java SensorLog -t 0.01 3 4 sensorLog.txt | |
* | |
* @author Arthur Gay <arthur.gay@epfl.ch> | |
*/ | |
class SensorLog { | |
/** | |
* Stores the values of all the sensors. | |
*/ | |
final double values[][]; | |
/** | |
* The time step of the simulation. | |
*/ | |
final double timeStep; | |
/** | |
* Parse the given input stream with a default timeStep equals to 0.005s. | |
* | |
* @param is Input Stream for reading the sensor log file | |
* @throws SensorLog.MalformedFileException when the file is not | |
* correctly formatted | |
* @throws IOException | |
*/ | |
SensorLog(InputStream is) throws MalformedFileException, IOException { | |
this(is, 0.005); | |
} | |
/** | |
* Parse the given input stream. | |
* | |
* @param is Input Stream for reading the sensor log file | |
* @param timeStep of the simulation | |
* @throws SensorLog.MalformedFileException when the file is not | |
* correctly formatted | |
* @throws IOException | |
*/ | |
SensorLog(InputStream is, double timeStep) throws MalformedFileException, IOException { | |
/* | |
* Parsing is done in two steps: 1) Read the file line by line. Each line is | |
* splitted by space and the resulting list of tokens is stored into a list of | |
* lists of tokens. 2) Read the list of lists of tokens and parse each token | |
* into a double and store it into an two dimensional array. | |
*/ | |
BufferedReader reader; | |
String line; | |
String splitLine[]; | |
List<String> spaceSeparatedValuesLine; | |
List<List<String>> spaceSeparatedValues = new ArrayList<>(); | |
int lineSensorCount; | |
// Set to -1 to signal that the variable has not been initialised yet | |
int sensorCount = -1; | |
int lineCount = 0; | |
int skip = 5; // Skips firs n logs of the sensor log | |
this.timeStep = timeStep; | |
reader = new BufferedReader(new InputStreamReader(is)); | |
line = reader.readLine(); | |
while (line != null) { | |
lineCount += 1; | |
if (lineCount < skip) { | |
continue; | |
} | |
splitLine = line.trim().split("\\s+"); | |
spaceSeparatedValuesLine = Arrays.asList(splitLine); | |
lineSensorCount = splitLine.length; | |
// each line must have the same number of sensors | |
if (sensorCount == -1) { | |
sensorCount = lineSensorCount; | |
} else if (sensorCount != lineSensorCount) { | |
throw new MalformedFileException(String.format("Error line %d: expected %d sensors, got %d.", lineCount, | |
sensorCount, lineSensorCount)); | |
} | |
spaceSeparatedValues.add(spaceSeparatedValuesLine); | |
line = reader.readLine(); | |
} | |
values = new double[sensorCount][lineCount - skip]; | |
for (int i = 0; i < sensorCount; i++) { | |
for (int j = 0; j < lineCount - skip; j++) { | |
values[i][j] = Double.parseDouble(spaceSeparatedValues.get(j).get(i)); | |
} | |
} | |
} | |
/** | |
* Compute the mean of the absolute difference divided by the time step. | |
* | |
* Let n the number of samples and f(k) the kth value of the sensor, with 0 < | |
* k < n. Let h the time step. The difference d(k) is computed using the | |
* following formula: | |
* | |
* d(k) = |f(k+1) - f(k)| / h | |
* | |
* The mean is then computed using the following formula: | |
* | |
* m = sum d(i) / (n - 1), i = 0 to n-1 | |
* | |
* @param sensorIndex | |
* @return | |
*/ | |
double computeMeanAbsoluteDifference(int sensorIndex) { | |
double sum = 0.0; | |
double sensorValues[] = values[sensorIndex]; | |
for (int i = 0; i < sensorValues.length - 1; i++) { | |
sum += Math.abs(sensorValues[i + 1] - sensorValues[i]) / this.timeStep; | |
} | |
return sum / (sensorValues.length - 1); | |
} | |
/** | |
* Compute the euclidian norm of a vector of mean absolute differences. | |
* | |
* Compute the mean of the absolute forward difference divided by the timeStep | |
* of multiple sensors and compute their euclidian norm using the following | |
* formula: | |
* | |
* n = sqrt(x^2 + y^2 + ...) | |
* | |
* @param sensorIndices | |
* @return | |
*/ | |
double computeMeanAbsoluteDifferenceVector(int... sensorIndices) { | |
double sum = 0.0; | |
for (int i = 0; i < sensorIndices.length; i++) { | |
double mean = computeMeanAbsoluteDifference(sensorIndices[i]); | |
sum += mean * mean; | |
} | |
return Math.sqrt(sum); | |
} | |
/** | |
* Check that the given sensors stay in a given range. | |
* | |
* @param min minimum value | |
* @param max maximum value | |
* @return whether all sensors values are inside the range | |
*/ | |
boolean isInRange(double min, double max, int... sensorIndices) { | |
for (int i = 0; i < sensorIndices.length; i++) { | |
double sensorValues[] = values[sensorIndices[i]]; | |
for (int j = 0; j < sensorValues.length; j++) { | |
if (sensorValues[j] < min || sensorValues[j] > max) { | |
return false; | |
} | |
} | |
} | |
return true; | |
} | |
public static void main(String args[]) { | |
String filename; | |
SensorLog sensorLog; | |
// Use standard input by default | |
InputStream inputStream = System.in; | |
// Use the 3 first sensors by default | |
int sensorIndices[] = { 0, 1, 2 }; | |
double timeStep = 0.005; | |
// A "shift" for parsing command line arguments | |
int argShift = 0; | |
if (args.length < 1) { | |
System.err.println("Error: no filename specified. Aborting."); | |
System.exit(10); | |
} | |
filename = args[args.length - 1]; | |
// The time step option must be the first option. I keep it simple here. | |
if (args[0].equals("-t")) { | |
if (args.length >= 2) { | |
timeStep = Double.parseDouble(args[1]); | |
argShift += 2; | |
} else { | |
System.err.println("Error: no timestep specified. Aborting."); | |
System.exit(15); | |
} | |
} | |
// Read sensor indices | |
if (args.length - argShift > 1) { | |
sensorIndices = new int[args.length - 1 - argShift]; | |
for (int i = 0; i < args.length - 1 - argShift; i++) { | |
sensorIndices[i] = Integer.parseInt(args[i + argShift]); | |
} | |
} | |
getJerk(filename, timeStep); | |
} | |
public static double getJerk(String filename, double timeStep) { | |
SensorLog sensorLog; | |
// Use standard input by default | |
InputStream inputStream = System.in; | |
// Use the 3 first sensors by default | |
int accelerometersIndices[] = { 0, 1, 2 }; | |
// Also check that the angles are within a given range | |
int pitchRollIndices[] = { 3, 4 }; | |
// Angle range | |
double maxAngle = 0.5; | |
double minAngle = -0.5; | |
// A "shift" for parsing command line arguments | |
int argShift = 0; | |
// If filename is -, use default input | |
if (!filename.equals("-")) { | |
try { | |
inputStream = new FileInputStream(filename); | |
} catch (FileNotFoundException ex) { | |
System.err.format("Error: file '%s' not found. Aborting.\n", filename); | |
} | |
} | |
try { | |
sensorLog = new SensorLog(inputStream, timeStep); | |
double jerk = sensorLog.computeMeanAbsoluteDifferenceVector(accelerometersIndices); | |
boolean inRange = sensorLog.isInRange(minAngle, maxAngle, pitchRollIndices); | |
// Print output | |
System.out.println(jerk); | |
System.out.println(inRange); | |
return jerk; | |
} catch (IOException ex) { | |
ex.printStackTrace(); // keep it for easy debugging | |
} catch (MalformedFileException ex) { | |
System.err.format("Error: File is malformed: %s\n", ex.getMessage()); | |
} | |
return -1; | |
} | |
class MalformedFileException extends Exception { | |
public MalformedFileException(String message) { | |
super(message); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6.7425e-23 -4.70848e-26 9.81 0 0 0 | |
3.21445e-09 2.82671e-08 -3.05176e-05 0.0908835 -0.0120612 -1.53797e-06 | |
-0.0360749 -0.00529955 0.0949663 0.257774 0.048588 -0.000957117 | |
0.000601259 -0.000299949 9.80896 -6.10495e-05 9.79405e-06 -7.74582e-07 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 | |
0.000628048 0.00163628 9.81 5.42101e-18 -1.20859e-18 3.38813e-19 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment