From e3b2f8162142e5296a2b029afa0a7bb372e11b2d Mon Sep 17 00:00:00 2001 From: Jakub Kakona Date: Sun, 3 Nov 2019 20:51:35 +0100 Subject: [PATCH 1/2] Pridani kodu pouziteho pri testovani telemetrie. --- SW/Telemetry_test/beacon.py | 112 +++++++++++++++++++++++++++++++++++ SW/Telemetry_test/rec.py | 115 ++++++++++++++++++++++++++++++++++++ SW/Telemetry_test/rec2.py | 115 ++++++++++++++++++++++++++++++++++++ 3 files changed, 342 insertions(+) create mode 100755 SW/Telemetry_test/beacon.py create mode 100755 SW/Telemetry_test/rec.py create mode 100755 SW/Telemetry_test/rec2.py diff --git a/SW/Telemetry_test/beacon.py b/SW/Telemetry_test/beacon.py new file mode 100755 index 0000000..590a835 --- /dev/null +++ b/SW/Telemetry_test/beacon.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 + +import serial +import time +import random +import sys +import math + +def wait_for_phase(interval, no): + m = float(time.time())/interval + next_phase = (int(math.ceil(m))) % no + time.sleep((1.0 - m%1.0)*interval) + return next_phase + +r1 = serial.Serial("/dev/ttyUSB0", baudrate=57600, timeout=0) +#r2 = serial.Serial("/dev/ttyUSB1", baudrate=57600, timeout=0) + +def query(r, cmd): + r.write(cmd + b"\r") + time.sleep(0.1) + reply = r.read(100) + print(r.port, cmd, reply) + return reply + +def enter_at_mode(r): + query(r, b"ATO") + time.sleep(0.2) + for _ in range(3): + print("sending +++ to %s" % r.port) + r.write(b"+++") + time.sleep(0.1) + r.read(16) + time.sleep(1.0) + maybe_ok = r.read(16).strip() + if maybe_ok == b"OK": + print("AT mode entered") + return True + return False + +translate = { + 'ECC': 'ATS5', + 'AIR_SPEED': 'ATS2', + 'NUM_CHANNELS': 'ATS10' +} + +def settings(target): + enter_at_mode(r1) + query(r1, b"") + for key, val in target: + key = translate.get(key, key) + cmd = bytes("%s=%s" % (key, val), "ascii") + query(r1, cmd) + query(r1, b"AT&W") + query(r1, b"ATZ") + time.sleep(0.5) + query(r1, b"ATO") + +def test(): + time.sleep(0.2) + + a2b_hits, b2a_hits = 0, 0 + no_of_tries = 5 + + for _ in range(no_of_tries): + r1.read(40);r2.read(40) + sys.stderr.write("."); sys.stderr.flush() + a2b = bytes([random.getrandbits(8) for _ in range(8)]) + r1.write(a2b) + time.sleep(0.5) + a2b_hits += a2b == r2.read(8) + sys.stderr.write(" (%d/%d)\n" % (a2b_hits, no_of_tries)) + return (a2b_hits) + +AIRRATES = [2, 4, 8, 16, 19, 24, 32, 64, 96, 128, 192, 250] + +def fmt_settings(vals): + return " ".join(["%s=%s" % m for m in vals]) + +def main(): + if len(sys.argv) == 2: + settings(int(sys.argv[1])) + return + if len(sys.argv) == 3: + settings(int(sys.argv[1]), int(sys.argv[2])) + return + + results = dict() + + schedule = [ + [("AIR_SPEED", air_speed), ("ECC", ecc)] + for air_speed in AIRRATES + for ecc in [0, 1] + ] + + while True: + m = wait_for_phase(10.0, len(schedule)) + t = time.time() + item = schedule[m] + print("settings", fmt_settings(item)) + settings(item) + print("sleep") + time.sleep(max(t+6-time.time(),0)) + print("done") + r1.write(b"t=%d\n" % time.time()) + time.sleep(1) + r1.write(b"t=%d\n" % time.time()) + time.sleep(1) + r1.write(b"t=%d\n" % time.time()) + time.sleep(1) + +if __name__ == "__main__": + main() diff --git a/SW/Telemetry_test/rec.py b/SW/Telemetry_test/rec.py new file mode 100755 index 0000000..5d7d042 --- /dev/null +++ b/SW/Telemetry_test/rec.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 + +import serial +import time +import random +import sys +import math + +def wait_for_phase(interval, no): + m = float(time.time())/interval + next_phase = (int(math.ceil(m))) % no + time.sleep((1.0 - m%1.0)*interval) + return next_phase + +r1 = serial.Serial("/dev/ttyUSB0", baudrate=57600, timeout=0) +#r2 = serial.Serial("/dev/ttyUSB1", baudrate=57600, timeout=0) + +def query(r, cmd): + r.write(cmd + b"\r") + time.sleep(0.1) + reply = r.read(100) + print(r.port, cmd, reply, file=sys.stderr) + return reply + +def enter_at_mode(r): + query(r, b"ATO") + time.sleep(0.2) + for _ in range(3): + print("sending +++ to %s" % r.port, file=sys.stderr) + r.write(b"+++") + time.sleep(0.1) + r.read(16) + time.sleep(1.0) + maybe_ok = r.read(16).strip() + if maybe_ok == b"OK": + print("AT mode entered", file=sys.stderr) + return True + return False + +translate = { + 'ECC': 'ATS5', + 'AIR_SPEED': 'ATS2', + 'NUM_CHANNELS': 'ATS10' +} + +def settings(target): + enter_at_mode(r1) + query(r1, b"") + for key, val in target: + key = translate.get(key, key) + cmd = bytes("%s=%s" % (key, val), "ascii") + query(r1, cmd) + query(r1, b"AT&W") + query(r1, b"ATZ") + time.sleep(0.5) + query(r1, b"ATO") + +def test(): + time.sleep(0.2) + + a2b_hits, b2a_hits = 0, 0 + no_of_tries = 5 + + for _ in range(no_of_tries): + r1.read(40);r2.read(40) + sys.stderr.write("."); sys.stderr.flush() + a2b = bytes([random.getrandbits(8) for _ in range(8)]) + r1.write(a2b) + time.sleep(0.5) + a2b_hits += a2b == r2.read(8) + sys.stderr.write(" (%d/%d)\n" % (a2b_hits, no_of_tries)) + return (a2b_hits) + +AIRRATES = [2, 4, 8, 16, 19, 24, 32, 64, 96, 128, 192, 250] + +def fmt_settings(vals): + return " ".join(["%s=%s" % m for m in vals]) + +def main(): + if len(sys.argv) == 2: + settings(int(sys.argv[1])) + return + if len(sys.argv) == 3: + settings(int(sys.argv[1]), int(sys.argv[2])) + return + + results = dict() + + schedule = [ + [("AIR_SPEED", air_speed), ("ECC", ecc)] + for air_speed in AIRRATES + for ecc in [0, 1] + ] + + while True: + m = wait_for_phase(10.0, len(schedule)) + t = time.time() + item = schedule[m] + ("settings", fmt_settings(item)) + settings(item) + print("sleep", file=sys.stderr) + time.sleep(max(t+6-time.time(),0)) + print("done", file=sys.stderr) + time.sleep(1) + sys.stdout.buffer.write(r1.read(16)) + time.sleep(1) + sys.stdout.buffer.write(r1.read(16)) + time.sleep(1) + sys.stdout.buffer.write(r1.read(16)) + time.sleep(0.5) + sys.stdout.buffer.write(r1.read(16)) + sys.stdout.buffer.flush() + +if __name__ == "__main__": + main() diff --git a/SW/Telemetry_test/rec2.py b/SW/Telemetry_test/rec2.py new file mode 100755 index 0000000..dcdc15f --- /dev/null +++ b/SW/Telemetry_test/rec2.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 + +import serial +import time +import random +import sys +import math + +def wait_for_phase(interval, no): + m = float(time.time())/interval + next_phase = (int(math.ceil(m))) % no + time.sleep((1.0 - m%1.0)*interval) + return next_phase + +r1 = serial.Serial("/dev/ttyUSB0", baudrate=57600, timeout=0) +#r2 = serial.Serial("/dev/ttyUSB1", baudrate=57600, timeout=0) + +def query(r, cmd): + r.write(cmd + b"\r") + time.sleep(0.1) + reply = r.read(100) + print(r.port, cmd, reply, file=sys.stderr) + return reply + +def enter_at_mode(r): + query(r, b"ATO") + time.sleep(0.2) + for _ in range(3): + print("sending +++ to %s" % r.port, file=sys.stderr) + r.write(b"+++") + time.sleep(0.1) + r.read(16) + time.sleep(1.0) + maybe_ok = r.read(16).strip() + if maybe_ok == b"OK": + print("AT mode entered", file=sys.stderr) + return True + return False + +translate = { + 'ECC': 'ATS5', + 'AIR_SPEED': 'ATS2', + 'NUM_CHANNELS': 'ATS10' +} + +def settings(target): + enter_at_mode(r1) + query(r1, b"") + for key, val in target: + key = translate.get(key, key) + cmd = bytes("%s=%s" % (key, val), "ascii") + query(r1, cmd) + query(r1, b"AT&W") + query(r1, b"ATZ") + time.sleep(0.5) + query(r1, b"ATO") + +def test(): + time.sleep(0.2) + + a2b_hits, b2a_hits = 0, 0 + no_of_tries = 5 + + for _ in range(no_of_tries): + r1.read(40);r2.read(40) + sys.stderr.write("."); sys.stderr.flush() + a2b = bytes([random.getrandbits(8) for _ in range(8)]) + r1.write(a2b) + time.sleep(0.5) + a2b_hits += a2b == r2.read(8) + sys.stderr.write(" (%d/%d)\n" % (a2b_hits, no_of_tries)) + return (a2b_hits) + +AIRRATES = [2, 4, 8, 16] + +def fmt_settings(vals): + return " ".join(["%s=%s" % m for m in vals]) + +def main(): + if len(sys.argv) == 2: + settings(int(sys.argv[1])) + return + if len(sys.argv) == 3: + settings(int(sys.argv[1]), int(sys.argv[2])) + return + + results = dict() + + schedule = [ + [("AIR_SPEED", air_speed), ("ECC", ecc)] + for air_speed in AIRRATES + for ecc in [0, 1] + ] + + while True: + m = wait_for_phase(10.0, len(schedule)) + t = time.time() + item = schedule[m] + ("settings", fmt_settings(item)) + settings(item) + print("sleep", file=sys.stderr) + time.sleep(max(t+6-time.time(),0)) + print("done", file=sys.stderr) + time.sleep(1) + sys.stdout.buffer.write(r1.read(16)) + time.sleep(1) + sys.stdout.buffer.write(r1.read(16)) + time.sleep(1) + sys.stdout.buffer.write(r1.read(16)) + time.sleep(0.5) + sys.stdout.buffer.write(r1.read(16)) + sys.stdout.buffer.flush() + +if __name__ == "__main__": + main() From b848bbfaf9281d452711715c624dbaa4f0cdfaf3 Mon Sep 17 00:00:00 2001 From: Jakub Kakona Date: Sun, 3 Nov 2019 21:21:49 +0100 Subject: [PATCH 2/2] =?UTF-8?q?Pridan=20GPX=20z=C3=A1znam=20m=C4=9B=C5=99e?= =?UTF-8?q?n=C3=AD.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/191103_telemetry_test/Vsechov-profil.gpx | 1521 +++++++++++++++++ 1 file changed, 1521 insertions(+) create mode 100644 data/191103_telemetry_test/Vsechov-profil.gpx diff --git a/data/191103_telemetry_test/Vsechov-profil.gpx b/data/191103_telemetry_test/Vsechov-profil.gpx new file mode 100644 index 0000000..4171f9a --- /dev/null +++ b/data/191103_telemetry_test/Vsechov-profil.gpx @@ -0,0 +1,1521 @@ + + + + File with points/tracks from Locus Map/3.40.2 + + + 497.00 + + Bod 1 + +
+ + + + +
Nad. výška497 m
Rychlost11,4 km/h
Azimut131 °
Přesnost4 m
Vytvořeno2019-11-03 17:57:14
+]]>
+ Waypoint + 3.90 +
+ + 497.00 + + Bod 2 + +
+ + + + +
Nad. výška497 m
Rychlost13,6 km/h
Azimut132 °
Přesnost5 m
Vytvořeno2019-11-03 17:57:25
+]]>
+ Waypoint + 5.00 +
+ + 497.00 + + Bod 3 + +
+ + + + +
Nad. výška497 m
Rychlost11,3 km/h
Azimut133 °
Přesnost4 m
Vytvořeno2019-11-03 17:57:52
+]]>
+ Waypoint + 4.22 +
+ + 497.00 + + Bod 4 + +
+ + + + +
Nad. výška497 m
Rychlost13,1 km/h
Azimut132 °
Přesnost5 m
Vytvořeno2019-11-03 17:58:07
+]]>
+ Waypoint + 4.93 +
+ + 497.00 + + Bod 5 + +
+ + + + +
Nad. výška497 m
Rychlost14,2 km/h
Azimut132 °
Přesnost4 m
Vytvořeno2019-11-03 17:58:19
+]]>
+ Waypoint + 4.29 +
+ + 497.00 + + Bod 6 + +
+ + + + +
Nad. výška497 m
Rychlost12,0 km/h
Azimut129 °
Přesnost5 m
Vytvořeno2019-11-03 17:58:33
+]]>
+ Waypoint + 5.36 +
+ + 497.00 + + Bod 7 + +
+ + + + +
Nad. výška497 m
Rychlost10,2 km/h
Azimut128 °
Přesnost5 m
Vytvořeno2019-11-03 17:58:37
+]]>
+ Waypoint + 5.00 +
+ + 497.00 + + Bod 8 + +
+ + + + +
Nad. výška497 m
Rychlost13,3 km/h
Azimut134 °
Přesnost11 m
Vytvořeno2019-11-03 17:58:48
+]]>
+ Waypoint + 11.05 +
+ + 497.00 + + Bod 9 + +
+ + + + +
Nad. výška497 m
Rychlost11,1 km/h
Azimut132 °
Přesnost5 m
Vytvořeno2019-11-03 17:59:04
+]]>
+ Waypoint + 4.50 +
+ + 497.00 + + Bod 10 + +
+ + + + +
Nad. výška497 m
Rychlost13,8 km/h
Azimut132 °
Přesnost5 m
Vytvořeno2019-11-03 17:59:19
+]]>
+ Waypoint + 5.36 +
+ + 497.00 + + Bod 11 + +
+ + + + +
Nad. výška497 m
Rychlost13,7 km/h
Azimut131 °
Přesnost7 m
Vytvořeno2019-11-03 17:59:31
+]]>
+ Waypoint + 6.97 +
+ + 497.00 + + Bod 12 + +
+ + + + +
Nad. výška497 m
Rychlost10,6 km/h
Azimut132 °
Přesnost8 m
Vytvořeno2019-11-03 17:59:46
+]]>
+ Waypoint + 7.67 +
+ + 496.00 + + Bod 13 + +
+ + + + +
Nad. výška496 m
Rychlost10,7 km/h
Azimut130 °
Přesnost6 m
Vytvořeno2019-11-03 17:59:58
+]]>
+ Waypoint + 6.43 +
+ + 496.00 + + Bod 14 + +
+ + + + +
Nad. výška496 m
Rychlost13,2 km/h
Azimut132 °
Přesnost6 m
Vytvořeno2019-11-03 18:00:11
+]]>
+ Waypoint + 5.82 +
+ + 496.00 + + Bod 15 + +
+ + + + +
Nad. výška496 m
Rychlost13,1 km/h
Azimut132 °
Přesnost5 m
Vytvořeno2019-11-03 18:00:25
+]]>
+ Waypoint + 5.14 +
+ + 495.00 + + Bod 16 + +
+ + + + +
Nad. výška495 m
Rychlost19,1 km/h
Azimut133 °
Přesnost8 m
Vytvořeno2019-11-03 18:00:35
+]]>
+ Waypoint + 8.46 +
+ + 495.00 + + Bod 17 + +
+ + + + +
Nad. výška495 m
Rychlost19,4 km/h
Azimut133 °
Přesnost8 m
Vytvořeno2019-11-03 18:00:45
+]]>
+ Waypoint + 7.68 +
+ + 495.00 + + Bod 18 + +
+ + + + +
Nad. výška495 m
Rychlost17,3 km/h
Azimut132 °
Přesnost7 m
Vytvořeno2019-11-03 18:00:54
+]]>
+ Waypoint + 7.07 +
+ + 494.00 + + Bod 19 + +
+ + + + +
Nad. výška494 m
Rychlost16,2 km/h
Azimut133 °
Přesnost7 m
Vytvořeno2019-11-03 18:01:05
+]]>
+ Waypoint + 7.15 +
+ + 494.00 + + Bod 20 + +
+ + + + +
Nad. výška494 m
Rychlost20,2 km/h
Azimut130 °
Přesnost6 m
Vytvořeno2019-11-03 18:01:10
+]]>
+ Waypoint + 6.00 +
+ + 494.00 + + Bod 21 + +
+ + + + +
Nad. výška494 m
Rychlost18,4 km/h
Azimut131 °
Přesnost5 m
Vytvořeno2019-11-03 18:01:29
+]]>
+ Waypoint + 4.64 +
+ + 493.00 + + Bod 22 + +
+ + + + +
Nad. výška493 m
Rychlost21,0 km/h
Azimut132 °
Přesnost4 m
Vytvořeno2019-11-03 18:01:49
+]]>
+ Waypoint + 3.90 +
+ + 493.00 + + Bod 23 + +
+ + + + +
Nad. výška493 m
Rychlost10,0 km/h
Azimut136 °
Přesnost4 m
Vytvořeno2019-11-03 18:02:36
+]]>
+ Waypoint + 4.03 +
+ + 493.00 + + Bod 24 + +
+ + + + +
Nad. výška493 m
Rychlost15,2 km/h
Azimut137 °
Přesnost5 m
Vytvořeno2019-11-03 18:03:30
+]]>
+ Waypoint + 4.96 +
+ + 491.00 + + Bod 25 + +
+ + + + +
Nad. výška491 m
Rychlost13,6 km/h
Azimut133 °
Přesnost6 m
Vytvořeno2019-11-03 18:03:47
+]]>
+ Waypoint + 5.79 +
+ +2019-11-03 17:56:21 + +
+ + + + + + +
ČinnostBěh
Vzdálenost2,0 km
Vytvořeno2019-11-03 17:56:21
Max. rychlost23,0 km/h
Tempo04:21 min/km
Energie290 KJ
Body110

+ + +
VšeRychlost > 0
Prům. rychlost13,8 km/h15,1 km/h
Čas trasy0 h:08 min:46 sec0 h:07 min:56 sec

+ +
Min. výška489 m
Max. výška497 m

+ + + +
PřevýšeníVzdálenost
Stoupání2 m0 m
Klesání-9 m36 m
Rovina0 m1976 m
+]]>
+ + + FF0000 + 0.78 + 3.0 + + running + + + + 495.83 + + 3.90 + + + 253.71504 + + + + + 495.84 + + 9.22 + + + 124.52236 + + + + + 495.82 + + 8.76 + + + 131.99927 + + + + + 496.03 + + 3.90 + + + 132.00404 + + + + + 496.14 + + 3.90 + + + 131.99988 + + + + + 496.44 + + 3.90 + + + 132.99817 + + + + + 496.84 + + 3.90 + + + 132.99988 + + + + + 496.77 + + 3.90 + + + 131.99991 + + + + + 496.76 + + 3.90 + + + 127.080956 + + + + + 496.65 + + 3.90 + + + 131.98439 + + + + + 496.67 + + 3.90 + + + 131.00037 + + + + + 496.77 + + 4.13 + + + 130.13599 + + + + + 496.94 + + 4.82 + + + 131.095 + + + + + 496.95 + + 5.00 + + + 131.98143 + + + + + 496.81 + + 5.18 + + + 131.97588 + + + + + 496.88 + + 4.29 + + + 133.00008 + + + + + 496.81 + + 4.29 + + + 130.99841 + + + + + 496.98 + + 4.05 + + + 132.0076 + + + + + 497.00 + + 4.09 + + + 131.99014 + + + + + 496.97 + + 4.22 + + + 132.9379 + + + + + 496.87 + + 4.29 + + + 132.99086 + + + + + 497.07 + + 4.29 + + + 130.9884 + + + + + 497.01 + + 4.93 + + + 131.98883 + + + + + 496.85 + + 4.64 + + + 132.00113 + + + + + 496.79 + + 4.29 + + + 133.00706 + + + + + 496.79 + + 4.29 + + + 132.09763 + + + + + 497.09 + + 4.29 + + + 132.99977 + + + + + 497.32 + + 5.14 + + + 131.0257 + + + + + 497.30 + + 5.36 + + + 129.05856 + + + + + 497.09 + + 5.00 + + + 128.0298 + + + + + 497.35 + + 9.31 + + + 129.63113 + + + + + 497.39 + + 11.05 + + + 132.43095 + + + + + 497.41 + + 11.05 + + + 133.53375 + + + + + 497.43 + + 10.91 + + + 133.91307 + + + + + 497.35 + + 10.82 + + + 130.842 + + + + + 497.38 + + 6.48 + + + 132.00742 + + + + + 497.40 + + 4.50 + + + 132.0007 + + + + + 497.36 + + 4.03 + + + 132.00055 + + + + + 497.52 + + 4.50 + + + 130.99988 + + + + + 497.38 + + 5.36 + + + 131.99556 + + + + + 497.08 + + 13.58 + + + 129.78592 + + + + + 497.10 + + 10.05 + + + 129.99715 + + + + + 496.98 + + 6.97 + + + 130.99911 + + + + + 496.79 + + 10.82 + + + 131.42831 + + + + + 496.68 + + 11.96 + + + 131.00224 + + + + + 496.53 + + 7.67 + + + 132.0409 + + + + + 496.04 + + 14.69 + + + 143.00766 + + + + + 496.23 + + 10.79 + + + 129.9029 + + + + + 496.34 + + 6.43 + + + 129.99855 + + + + + 495.82 + + 10.96 + + + 129.89009 + + + + + 495.93 + + 10.54 + + + 130.98111 + + + + + 495.90 + + 5.82 + + + 131.99835 + + + + + 495.63 + + 7.55 + + + 132.65408 + + + + + 495.84 + + 9.54 + + + 133.95802 + + + + + 495.55 + + 5.51 + + + 131.9946 + + + + + 495.58 + + 5.14 + + + 131.77669 + + + + + 495.00 + + 12.71 + + + 134.25938 + + + + + 495.22 + + 8.46 + + + 132.95769 + + + + + 494.88 + + 7.68 + + + 130.90698 + + + + + 494.83 + + 7.68 + + + 132.91597 + + + + + 494.76 + + 6.65 + + + 133.04358 + + + + + 494.59 + + 6.97 + + + 130.13496 + + + + + 494.53 + + 7.07 + + + 131.921 + + + + + 494.43 + + 6.00 + + + 131.43465 + + + + + 494.42 + + 7.15 + + + 132.90836 + + + + + 494.39 + + 7.15 + + + 132.9684 + + + + + 494.07 + + 6.00 + + + 130.028 + + + + + 494.27 + + 5.36 + + + 130.99438 + + + + + 494.11 + + 4.50 + + + 132.99956 + + + + + 493.90 + + 4.47 + + + 131.02586 + + + + + 493.78 + + 4.64 + + + 131.00197 + + + + + 493.26 + + 4.50 + + + 132.99957 + + + + + 493.20 + + 4.29 + + + 131.0159 + + + + + 493.11 + + 4.05 + + + 132.9954 + + + + + 492.75 + + 3.90 + + + 131.9986 + + + + + 492.77 + + 3.98 + + + 131.09485 + + + + + 492.79 + + 4.22 + + + 130.001 + + + + + 493.04 + + 4.09 + + + 133.9878 + + + + + 492.79 + + 3.98 + + + 131.99992 + + + + + 492.81 + + 3.90 + + + 131.00111 + + + + + 492.72 + + 3.90 + + + 132.00507 + + + + + 492.86 + + 3.90 + + + 131.99683 + + + + + 492.85 + + 4.03 + + + 131.00467 + + + + + 492.92 + + 3.98 + + + 130.25134 + + + + + 492.77 + + 4.03 + + + 135.84164 + + + + + 492.79 + + 4.22 + + + 132.07762 + + + + + 492.88 + + 4.64 + + + 132.9945 + + + + + 493.21 + + 6.97 + + + 132.04962 + + + + + 493.26 + + 6.86 + + + 130.99512 + + + + + 493.30 + + 5.18 + + + 131.00085 + + + + + 493.32 + + 6.43 + + + 129.9982 + + + + + 493.34 + + 6.61 + + + 130.00018 + + + + + 493.35 + + 6.25 + + + 129.00597 + + + + + 493.06 + + 6.22 + + + 130.9981 + + + + + 492.79 + + 5.72 + + + 136.9957 + + + + + 492.47 + + 4.88 + + + 135.12312 + + + + + 492.54 + + 4.96 + + + 136.9997 + + + + + 491.94 + + 4.21 + + + 135.08986 + + + + + 491.49 + + 4.42 + + + 130.20433 + + + + + 490.90 + + 5.54 + + + 136.9386 + + + + + 490.85 + + 5.79 + + + 132.99522 + + + + + 490.16 + + 6.43 + + + 130.03528 + + + + + 490.31 + + 6.43 + + + 131.99942 + + + + + 489.74 + + 6.43 + + + 133.11209 + + + + + 489.00 + + 6.86 + + + 127.41363 + + + + + 488.76 + + 6.43 + + + 304.63232 + + + + + 488.71 + + 5.12 + + + 53.693527 + + + + + 488.85 + + 4.07 + + + 318.8565 + + + + + 488.97 + + 3.95 + + + 5.288093 + + + + + 489.03 + + 8.01 + + + 290.6029 + + + + +
+