├── test ├── test.txt ├── Format.txt ├── old │ ├── nieuwedata2.txt │ └── nieuwedata1.txt └── testdata-film04.txt ├── README ├── slam ├── requirements.txt ├── settings.py ├── __init__.py ├── runner.py ├── tuple_utils.py ├── pose.py ├── test_grid_map.py ├── print_robot_turns.py ├── grid_world.py ├── hardware.py ├── state.py ├── motion_model.py ├── grid_map.py ├── sensor_model.py └── out.txt ├── python-bt-connection ├── requirements.txt └── serial_connection.py ├── .gitignore ├── millis.srt └── arduino └── move_around └── move_around.ino /test/test.txt: -------------------------------------------------------------------------------- 1 | test ??? -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | # Robotics Project 2015 2 | -------------------------------------------------------------------------------- /slam/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy==1.10.2 2 | pyserial==3.0b1 3 | readchar==0.7 4 | -------------------------------------------------------------------------------- /python-bt-connection/requirements.txt: -------------------------------------------------------------------------------- 1 | pyserial git+https://github.com/pyserial/pyserial 2 | -------------------------------------------------------------------------------- /slam/settings.py: -------------------------------------------------------------------------------- 1 | # Robot settings 2 | DEBUG = True 3 | SERIAL_PORT = '/dev/tty.HC-06-DevB' 4 | TEST_FILE_LOCATION = '../test/nieuwedata1.txt' 5 | TEST_FILE_IN = '../test/controlled_run.txt' 6 | -------------------------------------------------------------------------------- /slam/__init__.py: -------------------------------------------------------------------------------- 1 | from state import State 2 | from hardware import Hardware 3 | import runner 4 | 5 | 6 | def main(): 7 | hardware = Hardware() 8 | state = State() 9 | runner.run(hardware, state) 10 | 11 | 12 | if __name__ == "__main__": 13 | main() 14 | -------------------------------------------------------------------------------- /slam/runner.py: -------------------------------------------------------------------------------- 1 | import time 2 | 3 | 4 | def run(hardware, state): 5 | while not state.started(): 6 | time.sleep(.1) 7 | 8 | try: 9 | for update in hardware.updates(): 10 | state.update(update) 11 | 12 | except KeyboardInterrupt: 13 | pass 14 | -------------------------------------------------------------------------------- /slam/tuple_utils.py: -------------------------------------------------------------------------------- 1 | __author__ = 'feliciaan' 2 | 3 | 4 | def tmin(t1, t2): 5 | return min(t1[0], t2[0]), min(t1[1], t2[1]) 6 | 7 | 8 | def tmax(t1, t2): 9 | return max(t1[0], t2[0]), max(t1[1], t2[1]) 10 | 11 | 12 | def tsub(t1, t2): 13 | return t1[0] - t2[0], t1[1] - t2[1] 14 | 15 | 16 | def tadd(t1, t2): 17 | return t1[0] + t2[0], t1[1] + t2[1] 18 | 19 | 20 | def tlt(t1, t2): 21 | return t1[0] < t2[0] or t1[1] < t2[1] 22 | -------------------------------------------------------------------------------- /test/Format.txt: -------------------------------------------------------------------------------- 1 | New data format 2 | =============== 3 | 4 | '# blabla' Comment, e.g. "setup done", "waiting for your command" 5 | 'L[0-9]*F[0-9]*R[0-9]*t[0-9]*\n' 6 | Sensor measurements 7 | e.g. 8 | 'L30F15R9999t5' 30 cm on the right 9 | 15 cm on the front 10 | out of range on the right 11 | (either very far or very close) 12 | time: 5 ms after last engine change 13 | 'el(-?)[0-9]*er(-?)[0-9]*cor(-?)[0-9]*t[0-9]*' 14 | Motor update, e.g. 15 | 'el300er-300cor50t500' 16 | Engine Left was put on 300 forward 17 | Engine Right put on -300, thus 300 backward 18 | The left engine has a correction, for calibration 19 | cor was actually added to run it (but can be ignored) 20 | t 500: 500 ms elapsed after the previous engine change (or boot) 21 | -------------------------------------------------------------------------------- /slam/pose.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | 4 | class Pose: 5 | CHARS = "→↗↑↖←↙↓↘" 6 | 7 | def __init__(self, x, y, theta): 8 | self.x = x 9 | self.y = y 10 | self.theta = theta 11 | 12 | def __str__(self): 13 | degrees = math.degrees(self.theta) % 360 14 | if degrees > 180: 15 | degrees -= 360 16 | 17 | template = "Pose: x:{}cm, y:{}cm, \u03B8:{}, rad={}°" 18 | return template.format(self.x, self.y, self.theta, degrees) 19 | 20 | def dir_str(self): 21 | # as a float, 0..1, where 0 and 1 are 360°, 0.5 = 180° 22 | #print("theta") 23 | #print(self.theta) 24 | theta = (self.theta + 2*math.pi) / (2*math.pi) 25 | theta = ((theta + 1/16) * 8) % 8 26 | #print(theta) 27 | return self.CHARS[int(theta)] 28 | -------------------------------------------------------------------------------- /python-bt-connection/serial_connection.py: -------------------------------------------------------------------------------- 1 | from serial import Serial 2 | from threading import Thread 3 | SERIAL_PORT = "/dev/tty.HC-06-DevB" 4 | 5 | SENSOR = 'sensor' 6 | MOTOR = 'motor' 7 | 8 | class SerialWrapper(): 9 | 10 | def __init__(self): 11 | self.serial_connection = Serial(SERIAL_PORT, 9600, timeout=30) 12 | 13 | def write(self, var): 14 | if self.serial_connection: 15 | self.serial_connection.write(bytes(var, 'utf-8')) 16 | 17 | def readline(self): 18 | if self.serial_connection: 19 | line = self.serial_connection.readline() 20 | return line.decode('utf-8').strip() if line.strip() != b'' else None 21 | return None 22 | 23 | def close(self): 24 | if self.serial_connection: 25 | self.serial_connection.close() 26 | 27 | 28 | ser = SerialWrapper() 29 | class InputThread(Thread): 30 | 31 | def __init__(self): 32 | super(InputThread, self).__init__() 33 | self.stopped = False 34 | 35 | def run(self): 36 | while(not self.stopped): 37 | message = ser.readline() 38 | if message: 39 | print(message) 40 | 41 | 42 | inputThread = InputThread() 43 | inputThread.start() 44 | 45 | inputThread.join() 46 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | *.egg-info/ 23 | .installed.cfg 24 | *.egg 25 | 26 | # PyInstaller 27 | # Usually these files are written by a python script from a template 28 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 29 | *.manifest 30 | *.spec 31 | 32 | # Installer logs 33 | pip-log.txt 34 | pip-delete-this-directory.txt 35 | 36 | # Unit test / coverage reports 37 | htmlcov/ 38 | .tox/ 39 | .coverage 40 | .coverage.* 41 | .cache 42 | nosetests.xml 43 | coverage.xml 44 | *,cover 45 | 46 | # Translations 47 | *.mo 48 | *.pot 49 | 50 | # Django stuff: 51 | *.log 52 | 53 | # Sphinx documentation 54 | docs/_build/ 55 | 56 | # PyBuilder 57 | target/ 58 | 59 | # Object files 60 | *.o 61 | *.ko 62 | *.obj 63 | *.elf 64 | 65 | # Precompiled Headers 66 | *.gch 67 | *.pch 68 | 69 | # Libraries 70 | *.lib 71 | *.a 72 | *.la 73 | *.lo 74 | 75 | # Shared objects (inc. Windows DLLs) 76 | *.dll 77 | *.so 78 | *.so.* 79 | *.dylib 80 | 81 | # Executables 82 | *.exe 83 | *.out 84 | *.app 85 | *.i*86 86 | *.x86_64 87 | *.hex 88 | 89 | # Debug files 90 | *.dSYM/ 91 | 92 | .DS_Store 93 | 94 | *.pkl 95 | 96 | /.project 97 | /.pydevproject -------------------------------------------------------------------------------- /slam/test_grid_map.py: -------------------------------------------------------------------------------- 1 | """ 2 | Walks through the grid map, in a very naive way 3 | """ 4 | import time 5 | import pickle 6 | 7 | from hardware import Hardware 8 | from state import State 9 | 10 | 11 | hardware = Hardware("../test/live.txt") 12 | # /dev/tty.HC-06-DevB 13 | # 14 | # hardware = Hardware(serial_port='/dev/rfcomm0', output_file='../test/live.txt') 15 | # , testfile='../test/live.txt' 16 | state = State(n_particles=150) 17 | 18 | 19 | sumdeltas = 0 20 | current_time = 0 21 | start = time.time() 22 | i = 0 23 | for update in hardware.updates(): 24 | i += 1 25 | start_time = time.time() 26 | state.update(update) 27 | stop_time = time.time() 28 | 29 | current_time += update.timedelta 30 | timedeltadelta = update.timedelta - (stop_time - start_time) * 1000 31 | sumdeltas += timedeltadelta 32 | 33 | if timedeltadelta < 0: 34 | #print("Slower than updates: %f, current delay %f" % (timedeltadelta, sumdeltas)) 35 | None 36 | else: 37 | #print("Faster than updates: %f, current delay %f" % (timedeltadelta, sumdeltas)) 38 | None 39 | if i % 250: 40 | with open("gridworld.pkl", "wb") as f: 41 | best_particle = state.best_particle() 42 | pickle.dump([str(best_particle.map), current_time], f) 43 | # print(str(best_particle.map)) 44 | 45 | print(sumdeltas) 46 | stop = time.time() 47 | print("elapsed time : ", (stop - start) * 1000) 48 | with open("gridworld.pkl", "wb") as f: 49 | best_particle = state.best_particle() 50 | pickle.dump([str(best_particle.map), current_time], f) 51 | # print(str(best_particle.map)) 52 | -------------------------------------------------------------------------------- /slam/print_robot_turns.py: -------------------------------------------------------------------------------- 1 | import time 2 | from grid_map import OccupancyGridMap 3 | from hardware import * 4 | from pose import Pose 5 | from motion_model import calculate_pose 6 | from state import State 7 | from settings import DEBUG 8 | import math 9 | from grid_world import * 10 | import pickle 11 | import codecs 12 | 13 | 14 | 15 | INF = 500 16 | 17 | hw = Hardware("../test/testdata-film-feli01.txt") 18 | state = State(n_particles=1, cellsize=5, blocksize=100) 19 | old_pose = Pose(0, 0, 0) 20 | 21 | ogm = None 22 | print_next = False 23 | 24 | 25 | for update in hw.updates(): 26 | start_time = time.time() 27 | state.update(update) 28 | particle = state.particles[0] 29 | ogm = particle.map 30 | pose = particle.pose 31 | 32 | old_pose = pose 33 | 34 | tmp = update.__str__() 35 | 36 | if print_next: 37 | ms = update.__str__().split('Timedelta')[1][2:-1] 38 | degrees = pose.__str__() 39 | # print(i, ', ms:', ms, ', degrees:', degrees) 40 | print(degrees) 41 | # input number + ms + degrees 42 | 43 | pickle.dump(ogm.__str__(), open("gridworld.pkl", "wb")) 44 | with codecs.open("out.txt", "a", "utf-8") as myfile: 45 | # draw a world 46 | # gw.update_gridworld(ogm.__str__()) 47 | 48 | # input("Enter to continue") 49 | myfile.write(pose.__str__() + '\n') 50 | 51 | myfile.write(ogm.__str__() + '\n') 52 | print_next = False 53 | 54 | if 'MotionUpdate(Left: 300 Right: -300' in tmp \ 55 | or 'MotionUpdate(Left: -300 Right: 300' in tmp: 56 | print_next = True 57 | 58 | stop_time = time.time() 59 | 60 | # ogm.set_robot_path(robot_poses) 61 | 62 | print("elapsed time : ", (stop_time - start_time) * 1000) 63 | with codecs.open("out.txt", "a", "utf-8") as myfile: 64 | myfile.write(ogm.__str__()) 65 | -------------------------------------------------------------------------------- /slam/grid_world.py: -------------------------------------------------------------------------------- 1 | from datetime import timedelta 2 | from tkinter import * 3 | import pickle 4 | 5 | # refresh interval (ms) 6 | REFRESH = 1000 7 | 8 | # BLOCK size 9 | BLOCK = 5 10 | 11 | 12 | class GridWorld(): 13 | def __init__(self): 14 | self.master = Tk() 15 | 16 | self.w = Canvas(self.master, width=600, height=600) 17 | self.width = 1200 18 | self.height = 1200 19 | self.w.pack() 20 | 21 | 22 | 23 | def update_gridworld(self): 24 | 25 | try: 26 | list = pickle.load(open("gridworld.pkl", "rb")) 27 | 28 | ogm = list[0] 29 | current_time = list[1] 30 | length = ogm.find('\n') 31 | width = (length+1)*BLOCK 32 | height = (ogm.count('\n')+2)*BLOCK 33 | 34 | if width != self.width or height != self.height : 35 | print("CHANGE") 36 | old_width = self.width 37 | old_height = self.height 38 | print('width : ', old_width, " ---> ", width) 39 | print('height : ', old_height, " ---> ", height) 40 | 41 | self.w.destroy() 42 | 43 | self.w = Canvas(self.master, width=width, height=height) 44 | self.w.pack() 45 | self.width=width 46 | self.height=height 47 | else: 48 | self.w.delete(ALL) 49 | 50 | # w.create_line(0, 0, 200, 100) 51 | # w.create_line(0, 100, 200, 0, fill="red", dash=(4, 4)) 52 | 53 | # ▁▂▃▄▅▆▇█░ 54 | 55 | # used colors: http://www.color-hex.com/color/0000ff 56 | colors = {} 57 | colors[' '] = "#e5e5ff" 58 | colors['▁'] = "#ccccff" 59 | colors['▂'] = "#9999ff" 60 | colors['▃'] = "#6666ff" 61 | colors['▄'] = "#3232ff" 62 | colors['▅'] = "#0000cc" 63 | colors['▆'] = "#000099" 64 | colors['▇'] = "#000066" 65 | colors['█'] = "#000000" 66 | colors['░'] = "#aaaaaa" 67 | # colors[' '] = "#9999ff" 68 | # colors['▁'] = "#0000ff" 69 | # colors['▂'] = "#0000e5" 70 | # colors['▃'] = "#0000cc" 71 | # colors['▄'] = "#0000b2" 72 | # colors['▅'] = "#000099" 73 | # colors['▆'] = "#00007f" 74 | # colors['▇'] = "#000066" 75 | # colors['█'] = "#00004c" 76 | # colors['░'] = "#dee3e8" 77 | 78 | arcs = {} 79 | arcs['→'] = (135, 90) 80 | arcs['↗'] = (180, 90) 81 | arcs['↑'] = (225, 90) 82 | arcs['↖'] = (270, 90) 83 | arcs['←'] = (315, 90) 84 | arcs['↙'] = (0, 90) 85 | arcs['↓'] = (45, 90) 86 | arcs['↘'] = (90, 90) 87 | 88 | x = 0 89 | y = 0 90 | cntr = 0 91 | for c in ogm: 92 | cntr += 1 93 | if cntr == 1000000: 94 | break 95 | if c == '\n': 96 | # New grid row 97 | y += BLOCK 98 | x = 0 99 | elif c == 'X': 100 | self.w.create_rectangle(x, y, x + BLOCK, y + BLOCK, fill="red") 101 | x += BLOCK 102 | elif c in arcs: 103 | # None 104 | prms = arcs[c] 105 | self.w.create_arc(x, y, x + BLOCK, y + BLOCK, start=prms[0], extent=prms[1], fill="red") 106 | x += BLOCK 107 | else: 108 | # draw grid cell 109 | self.w.create_rectangle(x, y, x + BLOCK, y + BLOCK, fill=colors[c], width=0) 110 | x += BLOCK 111 | 112 | self.w.create_text(self.width/2, 20, text= ("Timestamp: %s" % (str(timedelta(seconds=current_time/1000))))) 113 | 114 | except EOFError: 115 | # conflict with writing and reading the gridworld.pkl file 116 | print("try again ...") 117 | 118 | self.master.after(REFRESH, self.update_gridworld) 119 | 120 | if __name__== "__main__": 121 | gw = GridWorld() 122 | gw.update_gridworld() 123 | gw.master.mainloop() 124 | -------------------------------------------------------------------------------- /slam/hardware.py: -------------------------------------------------------------------------------- 1 | import re 2 | import threading 3 | import sys 4 | 5 | SERIAL_AVAILABLE = True 6 | try: 7 | from serial import Serial 8 | from serial.serialutil import SerialException 9 | except ImportError: 10 | print("Importing serial failed! Only file imports will be supported") 11 | SERIAL_AVAILABLE = False 12 | 13 | READCHAR_AVAILABLE = True 14 | try: 15 | import readchar 16 | except ImportError: 17 | print("Readchar not available") 18 | READCHAR_AVAILABLE = False 19 | 20 | CONVERT_CHARS = {'\x1b\x5b\x41': 'z', '\x1b\x5b\x42': 's', '\x1b\x5b\x44': 'q', 21 | '\x1b\x5b\x43': 'd'} 22 | 23 | 24 | class Hardware: 25 | def __init__(self, testfile=None, serial_port=None, output_file=None): 26 | self.serial = None 27 | self.t = None 28 | self.read_input = True 29 | print('serial_port : ',serial_port) 30 | print('testfile : ',testfile) 31 | #assert (testfile is None) != (serial_port is None), "You should either pass a 'testfile' or a 'serial_port' to initialize" 32 | self.file = testfile 33 | print('self.file : ', self.file) 34 | print('SERIAL_AVAILABLE : ', SERIAL_AVAILABLE) 35 | self.output_file = output_file 36 | if SERIAL_AVAILABLE and serial_port is not None: 37 | try: 38 | # self.serial = Serial(serial_port, 9600, timeout=1) 39 | self.serial = Serial('/dev/rfcomm0') # , 9600, timeout=1 40 | # Different thread for manual control 41 | self.t = threading.Thread(target=self.send_messages) 42 | self.t.start() 43 | except SerialException: 44 | print("Serial connection could not be opened! Please, check the code to see why :p") 45 | 46 | def updates(self): 47 | data_iterator = self.serial_data() if SERIAL_AVAILABLE and self.serial else open(self.file) 48 | for line in data_iterator: 49 | line = line.strip() 50 | if line: 51 | line = parse(line) 52 | if line: 53 | yield line 54 | if self.t: 55 | self.read_input = False 56 | 57 | def write(self, action): 58 | if self.serial: 59 | self.serial.write(bytes(action, 'utf-8')) 60 | print("Sending to robot:", action) 61 | 62 | def serial_data(self): 63 | output = self.output_file if self.output_file else '/dev/null' 64 | print('Writing output to "%s"' % output) 65 | with open(output, mode='a', newline='\n') as f: 66 | while True: 67 | message = self.serial.readline().decode('utf-8').strip() 68 | print(message, file=f) 69 | message = message if message != '' else None 70 | if message: 71 | yield message 72 | 73 | def send_messages(self): 74 | if not READCHAR_AVAILABLE: 75 | print("Readchar is not available on this machine. pip install readchar") 76 | return 77 | print("Reading input:") 78 | while self.read_input: 79 | #key = readchar.readkey() 80 | print("read in ...") 81 | # key = sys.stdin.read(1) 82 | key = input("type command ! \n") 83 | print('key : ',key) 84 | if key in ['\x03', '\x04']: # if control-c stop 85 | print("Retuning control to the program") 86 | self.read_input = False 87 | break 88 | print('input : ', len(key)) 89 | if len(key) == 1: 90 | self.write(key) 91 | # else: 92 | # convert to other thing if necessary 93 | # new_c = CONVERT_CHARS.get(key) 94 | # if new_c: 95 | # self.write(new_c) 96 | 97 | 98 | class SensorUpdate: 99 | def __init__(self, line=None): 100 | if line is None: 101 | line = "L0F0R0t0" 102 | match = re.match('L(\d+)F(\d+)R(\d+)t(\d+)', line) 103 | assert match is not None, "Invalid input for sensor update: "+line 104 | 105 | def out_of_range(s): 106 | i = int(s) 107 | if i == 9999: 108 | return i 109 | return i 110 | 111 | self.left = out_of_range(match.group(1)) 112 | self.front = out_of_range(match.group(2)) 113 | self.right = out_of_range(match.group(3)) 114 | self.timedelta = out_of_range(match.group(4)) 115 | 116 | def __str__(self): 117 | def n(i): 118 | if i is None: 119 | return 9999 120 | return i 121 | return "SensorUpdate(Left: %dcm\tFront: %dcm\tRight: %dcm\tTimedelta: %dms)" \ 122 | % (n(self.left), n(self.front), n(self.right), n(self.timedelta)) 123 | 124 | 125 | class MotionUpdate: 126 | def __init__(self, line=None): 127 | if line is None: 128 | line = "el0er0cor0t0" 129 | match = re.match('el(-?\d+)er(-?\d+)cor(-?\d+)t(\d+)', line) 130 | if match is None: 131 | return None 132 | #assert match is not None, "Invalid input for motion update: "+line 133 | self.left = int(match.group(1)) 134 | self.right = int(match.group(2)) 135 | # TODO temporary fix for error in Arduino code 136 | self.left, self.right = self.right, self.left 137 | self.correction = int(match.group(3)) 138 | self.timedelta = int(match.group(4)) 139 | 140 | def __str__(self): 141 | return "MotionUpdate(Left: %d\tRight: %d\tTimedelta: %d)" \ 142 | % (self.left, self.right, self.timedelta) 143 | 144 | 145 | def parse(line): 146 | if line.startswith('#'): 147 | return None 148 | elif line.startswith('L'): 149 | return SensorUpdate(line) 150 | elif line.startswith('el'): 151 | return MotionUpdate(line) 152 | else: 153 | print("Line (%s) isn't in the correct format." % line) 154 | return None 155 | -------------------------------------------------------------------------------- /millis.srt: -------------------------------------------------------------------------------- 1 | 1 2 | 00:00:00,000 3 | Time: 00:00:00,000 4 | 5 | 6 | 2 7 | 00:00:00,000 8 | Time: 00:00:00,000 9 | 10 | 11 | 3 12 | 00:00:01,000 13 | Time: 00:00:01,000 14 | 15 | 16 | 4 17 | 00:00:01,000 18 | Time: 00:00:01,000 19 | 20 | 21 | 5 22 | 00:00:02,000 23 | Time: 00:00:02,000 24 | 25 | 26 | 6 27 | 00:00:02,000 28 | Time: 00:00:02,000 29 | 30 | 31 | 7 32 | 00:00:03,000 33 | Time: 00:00:03,000 34 | 35 | 36 | 8 37 | 00:00:03,000 38 | Time: 00:00:03,000 39 | 40 | 41 | 9 42 | 00:00:04,000 43 | Time: 00:00:04,000 44 | 45 | 46 | 10 47 | 00:00:04,000 48 | Time: 00:00:04,000 49 | 50 | 51 | 11 52 | 00:00:05,000 53 | Time: 00:00:05,000 54 | 55 | 56 | 12 57 | 00:00:05,000 58 | Time: 00:00:05,000 59 | 60 | 61 | 13 62 | 00:00:06,000 63 | Time: 00:00:06,000 64 | 65 | 66 | 14 67 | 00:00:06,000 68 | Time: 00:00:06,000 69 | 70 | 71 | 15 72 | 00:00:07,000 73 | Time: 00:00:07,000 74 | 75 | 76 | 16 77 | 00:00:07,000 78 | Time: 00:00:07,000 79 | 80 | 81 | 17 82 | 00:00:08,000 83 | Time: 00:00:08,000 84 | 85 | 86 | 18 87 | 00:00:08,000 88 | Time: 00:00:08,000 89 | 90 | 91 | 19 92 | 00:00:09,000 93 | Time: 00:00:09,000 94 | 95 | 96 | 20 97 | 00:00:09,000 98 | Time: 00:00:09,000 99 | 100 | 101 | 21 102 | 00:00:10,000 103 | Time: 00:00:10,000 104 | 105 | 106 | 22 107 | 00:00:10,000 108 | Time: 00:00:10,000 109 | 110 | 111 | 23 112 | 00:00:11,000 113 | Time: 00:00:11,000 114 | 115 | 116 | 24 117 | 00:00:11,000 118 | Time: 00:00:11,000 119 | 120 | 121 | 25 122 | 00:00:12,000 123 | Time: 00:00:12,000 124 | 125 | 126 | 26 127 | 00:00:12,000 128 | Time: 00:00:12,000 129 | 130 | 131 | 27 132 | 00:00:13,000 133 | Time: 00:00:13,000 134 | 135 | 136 | 28 137 | 00:00:13,000 138 | Time: 00:00:13,000 139 | 140 | 141 | 29 142 | 00:00:14,000 143 | Time: 00:00:14,000 144 | 145 | 146 | 30 147 | 00:00:14,000 148 | Time: 00:00:14,000 149 | 150 | 151 | 31 152 | 00:00:15,000 153 | Time: 00:00:15,000 154 | 155 | 156 | 32 157 | 00:00:15,000 158 | Time: 00:00:15,000 159 | 160 | 161 | 33 162 | 00:00:16,000 163 | Time: 00:00:16,000 164 | 165 | 166 | 34 167 | 00:00:16,000 168 | Time: 00:00:16,000 169 | 170 | 171 | 35 172 | 00:00:17,000 173 | Time: 00:00:17,000 174 | 175 | 176 | 36 177 | 00:00:17,000 178 | Time: 00:00:17,000 179 | 180 | 181 | 37 182 | 00:00:18,000 183 | Time: 00:00:18,000 184 | 185 | 186 | 38 187 | 00:00:18,000 188 | Time: 00:00:18,000 189 | 190 | 191 | 39 192 | 00:00:19,000 193 | Time: 00:00:19,000 194 | 195 | 196 | 40 197 | 00:00:19,000 198 | Time: 00:00:19,000 199 | 200 | 201 | 41 202 | 00:00:20,000 203 | Time: 00:00:20,000 204 | 205 | 206 | 42 207 | 00:00:20,000 208 | Time: 00:00:20,000 209 | 210 | 211 | 43 212 | 00:00:21,000 213 | Time: 00:00:21,000 214 | 215 | 216 | 44 217 | 00:00:21,000 218 | Time: 00:00:21,000 219 | 220 | 221 | 45 222 | 00:00:22,000 223 | Time: 00:00:22,000 224 | 225 | 226 | 46 227 | 00:00:22,000 228 | Time: 00:00:22,000 229 | 230 | 231 | 47 232 | 00:00:23,000 233 | Time: 00:00:23,000 234 | 235 | 236 | 48 237 | 00:00:23,000 238 | Time: 00:00:23,000 239 | 240 | 241 | 49 242 | 00:00:24,000 243 | Time: 00:00:24,000 244 | 245 | 246 | 50 247 | 00:00:24,000 248 | Time: 00:00:24,000 249 | 250 | 251 | 51 252 | 00:00:25,000 253 | Time: 00:00:25,000 254 | 255 | 256 | 52 257 | 00:00:25,000 258 | Time: 00:00:25,000 259 | 260 | 261 | 53 262 | 00:00:26,000 263 | Time: 00:00:26,000 264 | 265 | 266 | 54 267 | 00:00:26,000 268 | Time: 00:00:26,000 269 | 270 | 271 | 55 272 | 00:00:27,000 273 | Time: 00:00:27,000 274 | 275 | 276 | 56 277 | 00:00:27,000 278 | Time: 00:00:27,000 279 | 280 | 281 | 57 282 | 00:00:28,000 283 | Time: 00:00:28,000 284 | 285 | 286 | 58 287 | 00:00:28,000 288 | Time: 00:00:28,000 289 | 290 | 291 | 59 292 | 00:00:29,000 293 | Time: 00:00:29,000 294 | 295 | 296 | 60 297 | 00:00:29,000 298 | Time: 00:00:29,000 299 | 300 | 301 | 61 302 | 00:00:30,000 303 | Time: 00:00:30,000 304 | 305 | 306 | 62 307 | 00:00:30,000 308 | Time: 00:00:30,000 309 | 310 | 311 | 63 312 | 00:00:31,000 313 | Time: 00:00:31,000 314 | 315 | 316 | 64 317 | 00:00:31,000 318 | Time: 00:00:31,000 319 | 320 | 321 | 65 322 | 00:00:32,000 323 | Time: 00:00:32,000 324 | 325 | 326 | 66 327 | 00:00:32,000 328 | Time: 00:00:32,000 329 | 330 | 331 | 67 332 | 00:00:33,000 333 | Time: 00:00:33,000 334 | 335 | 336 | 68 337 | 00:00:33,000 338 | Time: 00:00:33,000 339 | 340 | 341 | 69 342 | 00:00:34,000 343 | Time: 00:00:34,000 344 | 345 | 346 | 70 347 | 00:00:34,000 348 | Time: 00:00:34,000 349 | 350 | 351 | 71 352 | 00:00:35,000 353 | Time: 00:00:35,000 354 | 355 | 356 | 72 357 | 00:00:35,000 358 | Time: 00:00:35,000 359 | 360 | 361 | 73 362 | 00:00:36,000 363 | Time: 00:00:36,000 364 | 365 | 366 | 74 367 | 00:00:36,000 368 | Time: 00:00:36,000 369 | 370 | 371 | 75 372 | 00:00:37,000 373 | Time: 00:00:37,000 374 | 375 | 376 | 76 377 | 00:00:37,000 378 | Time: 00:00:37,000 379 | 380 | 381 | 77 382 | 00:00:38,000 383 | Time: 00:00:38,000 384 | 385 | 386 | 78 387 | 00:00:38,000 388 | Time: 00:00:38,000 389 | 390 | 391 | 79 392 | 00:00:39,000 393 | Time: 00:00:39,000 394 | 395 | 396 | 80 397 | 00:00:39,000 398 | Time: 00:00:39,000 399 | 400 | 401 | 81 402 | 00:00:40,000 403 | Time: 00:00:40,000 404 | 405 | 406 | 82 407 | 00:00:40,000 408 | Time: 00:00:40,000 409 | 410 | 411 | 83 412 | 00:00:41,000 413 | Time: 00:00:41,000 414 | 415 | 416 | 84 417 | 00:00:41,000 418 | Time: 00:00:41,000 419 | 420 | 421 | 85 422 | 00:00:42,000 423 | Time: 00:00:42,000 424 | 425 | 426 | 86 427 | 00:00:42,000 428 | Time: 00:00:42,000 429 | 430 | 431 | 87 432 | 00:00:43,000 433 | Time: 00:00:43,000 434 | 435 | 436 | 88 437 | 00:00:43,000 438 | Time: 00:00:43,000 439 | 440 | 441 | 89 442 | 00:00:44,000 443 | Time: 00:00:44,000 444 | 445 | 446 | 90 447 | 00:00:44,000 448 | Time: 00:00:44,000 449 | 450 | 451 | 91 452 | 00:00:45,000 453 | Time: 00:00:45,000 454 | 455 | 456 | 92 457 | 00:00:45,000 458 | Time: 00:00:45,000 459 | 460 | 461 | 93 462 | 00:00:46,000 463 | Time: 00:00:46,000 464 | 465 | 466 | 94 467 | 00:00:46,000 468 | Time: 00:00:46,000 469 | 470 | 471 | 95 472 | 00:00:47,000 473 | Time: 00:00:47,000 474 | 475 | 476 | 96 477 | 00:00:47,000 478 | Time: 00:00:47,000 479 | 480 | 481 | 97 482 | 00:00:48,000 483 | Time: 00:00:48,000 484 | 485 | 486 | 98 487 | 00:00:48,000 488 | Time: 00:00:48,000 489 | 490 | 491 | 99 492 | 00:00:49,000 493 | Time: 00:00:49,000 494 | 495 | 496 | 100 497 | 00:00:49,000 498 | Time: 00:00:49,000 499 | 500 | 501 | 101 502 | 00:00:50,000 503 | Time: 00:00:50,000 504 | -------------------------------------------------------------------------------- /slam/state.py: -------------------------------------------------------------------------------- 1 | import copy 2 | import random 3 | import statistics 4 | 5 | import motion_model 6 | import sensor_model 7 | from grid_map import OccupancyGridMap 8 | from hardware import MotionUpdate, SensorUpdate 9 | from pose import Pose 10 | 11 | RESAMPLE_PERIOD = 10 12 | 13 | 14 | class State: 15 | def __init__(self, n_particles=1): 16 | self.latest_motion = MotionUpdate() 17 | self.n_particles = n_particles 18 | self.particles = [Particle(self.n_particles) 19 | for _ in range(self.n_particles)] 20 | self.n_sensor_updates_since_last_resample = 0 21 | 22 | self.sensor_buffer = [] 23 | self.last_batch = [] 24 | self.flush = False 25 | 26 | def update(self, update): 27 | # print(update) 28 | 29 | # batch the sensor updates 30 | # 5 measurements --> 1 measurement 31 | BATCH_SIZE = 4 32 | 33 | if isinstance(update, MotionUpdate): 34 | self.flush = True 35 | elif isinstance(update, SensorUpdate): 36 | None 37 | else: 38 | assert ('update should be either motion or sensor ') 39 | 40 | if (self.flush): 41 | # motion update --> so flush the last sensor measurements 42 | 43 | if len(self.sensor_buffer) > 0: 44 | sum_timedelta = 0 45 | for upd in self.sensor_buffer: 46 | sum_timedelta += upd.timedelta 47 | batch_update = self.last_batch 48 | 49 | if batch_update is None: 50 | # Take the mean values of 51 | batch_update = self.calculate_batch_update() 52 | 53 | batch_update.timedelta = sum_timedelta 54 | 55 | # RESET the sensor_buffer 56 | self.sensor_buffer = [] 57 | # RESET the last_batch 58 | self.last_batch = None 59 | 60 | self.update_sensor(batch_update) 61 | 62 | print(update) 63 | # input('enter to continue') 64 | self.update_motion(update) 65 | self.flush = False 66 | 67 | else: 68 | self.sensor_buffer.append(update) 69 | 70 | if len(self.sensor_buffer) > BATCH_SIZE - 1: 71 | batch_update = self.calculate_batch_update() 72 | 73 | print(batch_update) 74 | # input('enter to continue') 75 | 76 | self.update_sensor(batch_update) 77 | # save the sensor_buffer in the back_up_buffer 78 | self.last_batch = batch_update 79 | # RESET the sensor_buffer 80 | self.sensor_buffer = [] 81 | 82 | def calculate_batch_update(self): 83 | # calculate the mean for the measurements + sum the timedeltas 84 | mean_left = [] 85 | mean_front = [] 86 | mean_right = [] 87 | sum_timedelta = 0 88 | for upd in self.sensor_buffer: 89 | mean_left.append(upd.left) 90 | mean_front.append(upd.front) 91 | mean_right.append(upd.right) 92 | sum_timedelta += upd.timedelta 93 | 94 | # print(mean_left) 95 | # print(mean_front) 96 | # print(mean_right) 97 | 98 | batch_update = self.sensor_buffer[0] 99 | batch_update.left = statistics.median(mean_left) 100 | batch_update.front = statistics.median(mean_front) 101 | batch_update.right = statistics.median(mean_right) 102 | batch_update.timedelta = sum_timedelta 103 | 104 | return batch_update 105 | 106 | def update_motion(self, update): 107 | for particle in self.particles: 108 | particle.update_motion(self.latest_motion, update.timedelta) 109 | 110 | self.latest_motion = update 111 | 112 | def update_sensor(self, update): 113 | for particle in self.particles: 114 | particle.update_motion(self.latest_motion, update.timedelta) 115 | particle.update_sensor(update) 116 | 117 | # Lowered resampling frequency (p. 109, Thrun) 118 | self.n_sensor_updates_since_last_resample += 1 119 | if self.n_sensor_updates_since_last_resample >= RESAMPLE_PERIOD: 120 | self.resample() 121 | self.n_sensor_updates_since_last_resample = 0 122 | 123 | def resample(self): 124 | """Implements algorithm Low_variance_sampler (Thrun, p. 110)""" 125 | 126 | self._normalize_particle_weights() 127 | 128 | new_particles = [] 129 | 130 | r = random.random() / self.n_particles 131 | c = self.particles[0].weight 132 | i = 0 133 | for m in range(self.n_particles): 134 | u = r + m / self.n_particles 135 | 136 | while u > c: 137 | i += 1 138 | c += self.particles[i].weight 139 | 140 | new_particles.append(self.copy_particle(self.particles[i])) 141 | 142 | self.particles = new_particles 143 | 144 | # TODO add random particles to see if it improves results 145 | 146 | def _normalize_particle_weights(self): 147 | # [print(particle.weight) for particle in self.particles] 148 | # exit() 149 | total_weight = sum(particle.weight for particle in self.particles) 150 | for particle in self.particles: 151 | particle.weight /= total_weight 152 | 153 | def best_particle(self): 154 | return max(self.particles, key=lambda particle: particle.weight) 155 | 156 | def copy_particle(self, old_p): 157 | p = Particle(self.n_particles, True) 158 | p.pose = Pose(old_p.pose.x, old_p.pose.y, old_p.pose.theta) 159 | # Reset the weight of the particle after selection ?? 160 | p.weight = old_p.weight 161 | p.map.minrange = old_p.map.minrange 162 | p.map.maxrange = old_p.map.maxrange 163 | p.map.grid = old_p.map.grid.copy() 164 | p.map.path = old_p.map.path.copy() 165 | 166 | return p 167 | 168 | 169 | class Particle: 170 | def __init__(self, n_particles, copy=False): 171 | self.map = OccupancyGridMap(copy) 172 | if not copy: 173 | x_co = random.gauss(0, 0.2) 174 | y_co = random.gauss(0, 0.2) 175 | theta = random.gauss(0, 0.05) 176 | self.pose = Pose(x_co, y_co, theta) 177 | 178 | self.weight = 1.0 / n_particles 179 | 180 | def update_motion(self, motion, timedelta): 181 | self.pose = motion_model.calculate_pose(self.pose, motion, timedelta, self.map) 182 | self.map.add_pose(self.pose) 183 | 184 | def update_sensor(self, update): 185 | self.weight += sensor_model.calc_weight(update, self.pose, self.map) 186 | sensor_model.update_map(update, self.pose, self.map) 187 | -------------------------------------------------------------------------------- /slam/motion_model.py: -------------------------------------------------------------------------------- 1 | import random 2 | import math 3 | import numpy 4 | from pose import Pose 5 | 6 | STD_DEV = 2 7 | THETA_STD_DEV = .1 8 | WHEEL_DISTANCE_IN_CM = 8.4 9 | 10 | 11 | # FACTOR voltage = 4.3 volt 12 | # 90 pixels = 90 cemeters (gridworld::BLOCK = 5) 13 | FACTOR = 0.00014 14 | WHEEL_RADIUS = 0.015 # m 15 | 16 | # GAUSSIAN NOISE 17 | GAUSSIAN_NOISE = True 18 | # local rotation 19 | ANGLE_GAUSS_TURNING = 0.1 20 | # STRAIGHT line 21 | STRAIGHT_ANGLE = 0.02 22 | STRAIGHT_DIST = 0.1 23 | 24 | 25 | # radians during 1 angle turn depending on surface ... 26 | # 30 degrees for voltage = 4.3 volt 27 | RADIANS_DURING_1_turn = 0.314 # 0.54 # 40 degrees 28 | 29 | 30 | 31 | def calculate_pose(old_pose, motion, timedelta, map): 32 | """Calculates a possible new position, with added gaussian noise.""" 33 | 34 | distance_left = motion.left * timedelta * FACTOR 35 | distance_right = motion.right * timedelta * FACTOR 36 | 37 | if distance_left == distance_right: 38 | dx = distance_left * math.cos(old_pose.theta) 39 | dy = distance_left * math.sin(old_pose.theta) 40 | dtheta = 0 41 | elif distance_left == -distance_right: 42 | dx, dy = 0, 0 43 | #dtheta = #timedelta * (math.pi / 4) / MS_PER_45_DEGREES 44 | dtheta = RADIANS_DURING_1_turn 45 | if distance_left > 0: 46 | dtheta *= -1 47 | # dtheta=distance_left/(WHEEL_DISTANCE_IN_CM/2) #left turn results in positive dtheta, uses formula length arc 48 | 49 | 50 | if dx == 0.0 and dtheta == 0.0: 51 | return Pose(old_pose.x, old_pose.y, old_pose.theta) 52 | 53 | if GAUSSIAN_NOISE: 54 | 55 | if dx == 0.0 and dy == 0.0: 56 | return sample_rotation(old_pose, dtheta) 57 | 58 | elif dtheta == 0.0: 59 | return sample_forward_move(old_pose, dx, dy, map) 60 | else: 61 | print('dx, dy and dtheta are not zero ??') 62 | exit() 63 | else: 64 | return Pose(old_pose.x + dx, old_pose.y + dy, old_pose.theta + dtheta) 65 | 66 | def sample_rotation(old_pose, dtheta): 67 | 68 | new_x_with_noise = old_pose.x 69 | new_y_with_noise = old_pose.y 70 | new_theta_with_noise = random.gauss(old_pose.theta + dtheta, ANGLE_GAUSS_TURNING) 71 | return Pose(new_x_with_noise, new_y_with_noise, new_theta_with_noise) 72 | 73 | def sample_forward_move(old_pose, dx, dy, map): 74 | sampled_poses=[] 75 | sample_weight=[] 76 | # calculate distance to new point 77 | dist = math.sqrt(dx**2 + dy**2) 78 | # angle to the point on circle == old_pose.theta 79 | angle = math.atan2(dy,dx) 80 | # print (angle) 81 | # old_pose.theta 82 | # print(old_pose.theta) 83 | 84 | NUM_SAMPLES = 8 85 | # generate 4 possibilities and select the one with the lowest occupancy correspondence 86 | for i in range(0,NUM_SAMPLES): 87 | sample_dist = random.gauss(dist, STRAIGHT_DIST) 88 | sample_angle = random.gauss(angle, STRAIGHT_ANGLE) 89 | 90 | sample_dy = sample_dist * math.sin(sample_angle) 91 | sample_dx = sample_dist * math.cos(sample_angle) 92 | 93 | new_x_with_noise = old_pose.x + sample_dx 94 | new_y_with_noise = old_pose.y + sample_dy 95 | new_theta_with_noise = sample_angle 96 | sample = Pose(new_x_with_noise, new_y_with_noise, new_theta_with_noise) 97 | # print (sample) 98 | sampled_poses.append(sample) 99 | 100 | # take into account the map when selecting a new pose 101 | weight = calc_weight_sample(map, sample) 102 | sample_weight.append(weight) 103 | 104 | # search index highest weight 105 | # print(sample_weight) 106 | index = numpy.argmin(sample_weight) 107 | if index != 0: 108 | print ('index : ', index) 109 | return sampled_poses[index] 110 | 111 | 112 | 113 | def calc_weight_sample(map, sample): 114 | 115 | grid_index = map.cartesian2grid(sample.x, sample.y) 116 | weight = 0 117 | # look in a range around the sampled pose 118 | RANGE = 5 119 | for i in range(-RANGE, RANGE + 1, 1): 120 | for j in range(-RANGE, RANGE + 1, 1): 121 | pos = (grid_index[0] + i, grid_index[1] + j) 122 | weight += calc_weight_pose(map, pos) 123 | 124 | return weight 125 | 126 | 127 | def calc_weight_pose(map, pos): 128 | 129 | WEIGHT_UNEXPLORED = 1 130 | # print (pos) 131 | if (not map.in_grid(pos)): 132 | # sample not on map 133 | return WEIGHT_UNEXPLORED 134 | 135 | cell = map.get_cell(pos[0], pos[1]) 136 | if proc_value_cell(cell) == 0.5: 137 | # map point is unexplored 138 | return WEIGHT_UNEXPLORED 139 | 140 | # map point is explored 141 | prob_cell_occupied = proc_value_cell(cell) 142 | assert prob_cell_occupied >= 0, 'prob should be bigger than 0' 143 | return prob_cell_occupied 144 | 145 | 146 | """ 147 | value cell calculated as a value between 0 and 1 148 | """ 149 | 150 | def proc_value_cell(cell): 151 | proc_value = 1 - 1 / (1 + math.exp(min(500, cell))) # procentual value 152 | return proc_value 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | # TODO change error parameters to improve result (if using sample motion model) 161 | # error parameters 162 | ERROR1 = 1 # translational error 163 | ERROR2 = 1 # translational error 164 | ERROR3 = 0.0001 # angular error 165 | ERROR4 = 0.001 # angular error 166 | 167 | # new_pose = Pose(old_pose.x+dx, old_pose.y+dy, old_pose.theta+dtheta) 168 | # return sample_motion_model(Pose(0,0,0), Pose(0+dx,0+dy,0+dtheta), old_pose) 169 | 170 | 171 | # # TODO fix: doesn't work as it ought to yet 172 | # " implementing algorithm sample motion model odometry Thrun p136" 173 | # 174 | # 175 | # def sample_motion_model(old_pose_local, new_pose_local, old_pose_global): 176 | # delta_rot1 = math.atan2(new_pose_local.y - old_pose_local.y, 177 | # new_pose_local.x - old_pose_local.x) - old_pose_local.theta 178 | # delta_trans = math.sqrt((old_pose_local.x - new_pose_local.x) ** 2 + (old_pose_local.y - new_pose_local.y) ** 2) 179 | # delta_rot2 = new_pose_local.theta - old_pose_local.theta - delta_rot1 180 | # 181 | # delta_rot1_sample = delta_rot1 - sample(ERROR1 * delta_rot1 ** 2 + ERROR2 * delta_trans ** 2) 182 | # delta_trans_sample = delta_trans - sample( 183 | # ERROR3 * delta_trans ** 2 + ERROR4 * delta_rot1 ** 2 + ERROR4 * delta_rot2 ** 2) 184 | # delta_rot2_sample = delta_rot2 - sample(ERROR1 * delta_rot2 ** 2 + ERROR2 * delta_trans ** 2) 185 | # 186 | # x_new = old_pose_global.x + delta_trans_sample * math.cos(old_pose_global.theta + delta_rot1_sample) if ( 187 | # new_pose_local.x != 0) else (old_pose_global.x + new_pose_local.x) 188 | # y_new = old_pose_global.y + delta_trans_sample * math.sin(old_pose_global.theta + delta_rot1_sample) if ( 189 | # new_pose_local.y != 0) else (old_pose_global.y + new_pose_local.y) 190 | # theta_new = old_pose_global.theta + delta_rot1_sample + delta_rot2_sample if (new_pose_local.theta != 0) else ( 191 | # old_pose_global.theta + new_pose_local.theta) 192 | # 193 | # return Pose(x_new, y_new, theta_new) 194 | # 195 | # 196 | # def sample(b_squared): 197 | # return sample_normal_distribution(b_squared) 198 | # 199 | # 200 | # def sample_normal_distribution(b_squared): 201 | # sum = 0 202 | # b = math.sqrt(b_squared) 203 | # for i in range(0, 12): 204 | # sum += random.uniform(-1 * b, b) 205 | # return 1 / 2 * sum 206 | -------------------------------------------------------------------------------- /slam/grid_map.py: -------------------------------------------------------------------------------- 1 | import math 2 | import numpy as np 3 | 4 | from tuple_utils import tmin, tsub, tmax, tadd 5 | 6 | """ 7 | This map keeps track of the occupancies. 8 | 9 | To do this, it keeps track of one or more smaller 'SimpleOccupancyGridMap', 10 | which it instantiates as needed. Infinite going left and right is thus 11 | permited, without using to much memory. Indexing is done in a x/y fashion, 12 | where individual cells are 'cellsize'. (0,0) is the cell in the middle of the 13 | first grid. 14 | """ 15 | 16 | MAX_SIZE = 300 17 | 18 | BLOCKSIZE = 100 19 | CELLSIZE = 5 20 | CELLS_PER_BLOCK = BLOCKSIZE / CELLSIZE 21 | # Precalculated x,y coordinate grid for use in get_cone 22 | COORDINATE_GRID = np.array([[(row * CELLSIZE, col * CELLSIZE) 23 | for row in range(0, MAX_SIZE)] 24 | for col in range(0, MAX_SIZE)]) 25 | class OccupancyGridMap: 26 | """ 27 | Blocksize in centimeters. Blocksize indicate how much is instantiated in 28 | one go, when out of bounds. Cellsize in centimeters. 29 | Defaults: blocks of 1m, one cell is 5cm; 400 cells per block 30 | """ 31 | 32 | def __init__(self, copy=False): 33 | """ 34 | assert blocksize > 1, "invalid blocksize, >1 expected" 35 | assert cellsize > 0, "invalid cellsize, >0 expected" 36 | assert blocksize > cellsize, "blocksize should be > cellsize" 37 | assert blocksize % cellsize == 0, "blocksize should be a multiple of cellsize" 38 | """ 39 | if not copy: 40 | # The lowest x,y coordinates, divided by cellsize 41 | self.minrange = 0, 0 42 | # The highest x,y coordinate, divided by cellsize 43 | self.maxrange = int(CELLS_PER_BLOCK), int(CELLS_PER_BLOCK) 44 | self.grid = np.zeros(shape=self.maxrange) 45 | 46 | # save the robot path by saving all the poses 47 | # [ Pose @ time 0, Pose @ time 1, ... ] 48 | self.path = [] 49 | 50 | 51 | # also create negative blocks, so that we have 4 blocks 52 | self.get_cell(-1, -1) 53 | 54 | def add_pose(self, pose): 55 | self.path.append(pose) 56 | 57 | def get_cell(self, x, y): 58 | """ 59 | Gets the cell at x, y 60 | Might initialize new blocks if needed, so don't ask things unless needed 61 | """ 62 | row, col = self._get_cell(x, y) 63 | return self.grid[row, col] 64 | 65 | 66 | def add_to_cell(self, x, y, val): 67 | row, col = self._get_cell(x, y) 68 | self.grid[row, col] += val 69 | 70 | def _ensure_coordinates_exist(self, coordinates): 71 | """ 72 | Check if the x,y coordinates are in the bounds, otherwise increase grid 73 | :param coordinates: numpy array with indices 74 | :return: nothing, increases grid if necessary 75 | """ 76 | 77 | if coordinates.size == 0: 78 | return 79 | 80 | xmin = coordinates[:, 0].min() # TODO: optimize if necessary 81 | xmax = coordinates[:, 0].max() 82 | ymin = coordinates[:, 1].min() 83 | ymax = coordinates[:, 1].max() 84 | 85 | self._get_cell(xmin, ymin) 86 | self._get_cell(xmax, ymax) 87 | 88 | def _get_cell(self, x, y): 89 | """ 90 | Gets the (row, column) coordinates of the cell at x, y (in cm) 91 | Might modify the array if needed, so don't ask things unless needed. 92 | """ 93 | 94 | row, col = self.cartesian2grid(x, y) 95 | 96 | 97 | # Check for out of bounds 98 | if (row < 0 or col < 0 99 | or row >= self.grid.shape[0] or col >= self.grid.shape[1]): 100 | self._increase_grid((row, col)) 101 | # Recalculate with new grid 102 | return self._get_cell(x, y) 103 | 104 | return row, col 105 | 106 | def _increase_grid(self, out_of_bounds_pos): 107 | """ 108 | Extends the grid so the row,col coordinates in out_of_bounds_pos 109 | fall within the grid. 110 | """ 111 | # get index of block that needs to be added or blocks to keep rectangular shape 112 | sign_row = math.copysign(1, out_of_bounds_pos[0]) 113 | sign_col = math.copysign(1, out_of_bounds_pos[1]) 114 | new_pos = (int(sign_row * CELLS_PER_BLOCK * math.ceil(abs(sign_row + out_of_bounds_pos[0]) / CELLS_PER_BLOCK)), 115 | int(sign_col * CELLS_PER_BLOCK * math.ceil(abs(sign_col + out_of_bounds_pos[1]) / CELLS_PER_BLOCK))) 116 | new_pos = tadd(self.minrange, new_pos) 117 | 118 | current_size = self.grid.shape 119 | new_minrange = tmin(self.minrange, new_pos) 120 | new_maxrange = tmax(self.maxrange, new_pos) 121 | 122 | new_size = tsub(new_maxrange, new_minrange) 123 | offset = tsub(self.minrange, new_minrange) 124 | offset_end = tadd(offset, current_size) 125 | grid = np.zeros(shape=new_size) 126 | grid[offset[0]:offset_end[0], offset[1]:offset_end[1]] = self.grid 127 | 128 | self.grid = grid 129 | self.minrange = new_minrange 130 | self.maxrange = new_maxrange 131 | 132 | 133 | def get_cone(self, pose, cone_angle, view_distance): 134 | """ 135 | Gives cell coordinates in the specified cone. 136 | 137 | Args: 138 | pose: The coordinates of the apex and the angle of the cone 139 | cone_angle: The angle (in radians) between the left and right edge 140 | of the cone 141 | view_distance: The radius of the cone 142 | 143 | Example cone: 144 | | / 145 | | / 146 | | / 147 | | / 148 | +--------- 149 | pose.theta: 45° 150 | cone_angle = 90° (45° left of theta and 45° right of theta) 151 | 152 | Returns (cell-coordinates array, array of distances to (x,y)) 153 | """ 154 | 155 | x, y, theta = pose.x, pose.y, pose.theta 156 | view_angle = cone_angle / 2 157 | assert 0 <= view_angle <= math.pi, ( 158 | 'A view angle of more then 180° is not permitted; ' 159 | 'you gave %s rad.').format(view_angle) 160 | 161 | # TODO: limit bounding box 162 | xmin = int(x - view_distance - CELLSIZE) 163 | xmax = int(x + view_distance + CELLSIZE) 164 | ymin = int(y - view_distance - CELLSIZE) 165 | ymax = int(y + view_distance + CELLSIZE) 166 | rowmin, colmin = self.cartesian2grid(xmin, ymin) 167 | rowmax, colmax = self.cartesian2grid(xmax, ymax) 168 | 169 | grid_size = rowmax - rowmin, colmax - colmin 170 | coordinates = (COORDINATE_GRID[:grid_size[1], :grid_size[0], :] 171 | + (xmin, ymin)) 172 | rel_coords = coordinates - (x, y) 173 | 174 | distances = np.sqrt(np.sum(rel_coords ** 2, axis=2)) 175 | within_view_distance = distances <= view_distance 176 | 177 | angles = np.arctan2(rel_coords[:, :, 1], rel_coords[:, :, 0]) 178 | rel_angles = (angles % (2 * np.pi)) - (theta % (2 * np.pi)) 179 | within_cone_angle = (((-view_angle <= rel_angles) 180 | & (rel_angles <= view_angle)) 181 | | ((-view_angle <= 2 * np.pi - rel_angles) 182 | & (2 * np.pi - rel_angles <= view_angle))) 183 | 184 | within_cone = within_view_distance & within_cone_angle 185 | 186 | self._ensure_coordinates_exist(coordinates[within_cone]) 187 | 188 | cell_coordinates = self.np_cartesian2grid(coordinates) 189 | 190 | return cell_coordinates[within_cone], distances[within_cone] 191 | 192 | def cartesian2grid(self, x, y): 193 | row = int(round(y / CELLSIZE)) - self.minrange[0] 194 | col = int(round(x / CELLSIZE)) - self.minrange[1] 195 | return row, col 196 | 197 | def np_cartesian2grid(self, coordinates): 198 | scaled = coordinates[:, :, ::-1] / CELLSIZE 199 | return np.rint(scaled).astype(np.int) - self.minrange 200 | 201 | def grid2cartesian(self, row, col): 202 | x = (col + self.minrange[1]) * CELLSIZE 203 | y = (row + self.minrange[0]) * CELLSIZE 204 | return x, y 205 | 206 | def in_grid(self,grid_index): #uses row+columns 207 | return not (grid_index[0] < 0 or grid_index[1] < 0 or grid_index[0] >= self.grid.shape[0] or grid_index[1] >= self.grid.shape[1]) 208 | 209 | def __str__(self): 210 | proc_grid = procentual_grid(self.grid) 211 | str_grid = np.vectorize(str_cell)(proc_grid) 212 | 213 | # add all poses to map 214 | for pose in self.path: 215 | row, col = self._get_cell(pose.x, pose.y) 216 | str_grid[row, col] = pose.dir_str() 217 | 218 | # add start to map 219 | str_grid[self._get_cell(0, 0)] = 'X' 220 | 221 | return '\n'.join(''.join(row) for row in str_grid[::-1]) 222 | 223 | def __repr__(self): 224 | return "OccupancyGridMap(blocksize: %dcm, cellsize: %dcm, currentsize: %s)\n%s" % \ 225 | (BLOCKSIZE, CELLSIZE, self.grid.shape, self) 226 | 227 | 228 | 229 | def procentual_grid(grid): 230 | """Converts a log odds grid to a percentual grid.""" 231 | return 1 - 1 / (1 + np.exp(np.minimum(500, grid))) 232 | 233 | 234 | 235 | 236 | def str_cell(cell, chars=" ▁▂▃▄▅▆▇█░"): 237 | if cell == 0.5: # 0.5 == unsure about cell 238 | return chars[-1] 239 | i = int(cell * (len(chars) - 1)) 240 | return chars[i] 241 | -------------------------------------------------------------------------------- /slam/sensor_model.py: -------------------------------------------------------------------------------- 1 | import math 2 | import numpy 3 | from pose import Pose 4 | from tuple_utils import tsub 5 | from grid_map import procentual_grid 6 | 7 | MAX_RANGE = 150 # In cm 8 | CONE_ANGLE = 0.872664626 # In radians 9 | PROBABILITY_FREE = 0.001 10 | RECOGNITION_SENSITIVITY = 1 # In cm 11 | 12 | 13 | def calc_weight(measurements, pose, map_): 14 | probability = 0 15 | # return probability 16 | 17 | for sensor_angle, measured_dist in _measurement_per_angle(measurements): 18 | # TODO: Pose of sensor is simplified to pose of robot 19 | sensor_pose = Pose(pose.x, pose.y, pose.theta + sensor_angle) 20 | 21 | # TODO: what if no expected distance is known? Fixed -> weight 22 | 23 | """likelihoods fields range finder, p172""" 24 | if measured_dist is not None and measured_dist < MAX_RANGE: # discard max range readings 25 | 26 | # coordinates of endpoint measured distance 27 | x_co = sensor_pose.x + measured_dist * math.cos(sensor_pose.theta) 28 | y_co = sensor_pose.y + measured_dist * math.sin(sensor_pose.theta) 29 | 30 | nearest_object = find_nearest_neighbor(map_, (x_co, y_co)) 31 | # when sensor measurement falls into unknown category, prob is assumed constant p173 32 | if nearest_object == "unknown": 33 | # cell outside map 34 | # cell prob = 0.5 35 | # ==> measurement in unknown region 36 | probability += 0.2 37 | None 38 | 39 | # find nearest neighbour that is occupied 40 | elif nearest_object is not None: 41 | # calculate Euclidean distance between measured coord and closest occupied coord 42 | sub = tsub((x_co, y_co), nearest_object) 43 | distance = math.hypot(sub[0], sub[1]) 44 | # prob = _prob_of_distances(distance, 0.0) 45 | if distance < 5: 46 | # distance to closest object under threshold 47 | probability += 1 48 | else: 49 | # distance to closest object to far away 50 | probability += 0 51 | 52 | elif nearest_object is None: 53 | # no object with prob > 0.9 around the cone top 54 | probability += 0 55 | 56 | else: 57 | # sensor got out of range value (short reading or free region) 58 | probability += 1 59 | 60 | 61 | # calculate the region around the pose, if region is free this pose is more possible 62 | grid_index = map_.cartesian2grid(pose.x, pose.y) 63 | weight = 0 64 | # look in a range around the sampled pose 65 | RANGE = 4 66 | for i in range(-RANGE, RANGE + 1, 1): 67 | for j in range(-RANGE, RANGE + 1, 1): 68 | pos = (grid_index[0] + i, grid_index[1] + j) 69 | weight += calc_weight_pose(map_, pos) 70 | 71 | # weight of the sensor measurement 72 | # weight of the map correspondence 73 | MAP_POSE_FACTOR = 1 74 | MEASUREMENT_FACTOR = 30 75 | 76 | # do something with weight 77 | part1 = probability*MEASUREMENT_FACTOR 78 | part2 = weight*MAP_POSE_FACTOR 79 | print('part1 : {0} part2: {1}'.format(part1, part2)) 80 | return part1 + part2 81 | 82 | 83 | 84 | def calc_weight_pose(map, pos): 85 | 86 | # exploring new terain is punished 87 | WEIGHT_UNEXPLORED = 0.5 88 | # print (pos) 89 | if (not map.in_grid(pos)): 90 | # sample not on map 91 | return WEIGHT_UNEXPLORED 92 | 93 | cell = map.get_cell(pos[0], pos[1]) 94 | if proc_value_cell(cell) == 0.5: 95 | # map point is unexplored 96 | return WEIGHT_UNEXPLORED 97 | 98 | # map point is explored 99 | prob_cell_occupied = proc_value_cell(cell) 100 | assert prob_cell_occupied >= 0, 'prob should be bigger than 0' 101 | return (1-prob_cell_occupied) 102 | 103 | """ 104 | value cell calculated as a value between 0 and 1 105 | """ 106 | 107 | 108 | def proc_value_cell(cell): 109 | proc_value = 1 - 1 / (1 + math.exp(min(500, cell))) # procentual value 110 | return proc_value 111 | 112 | 113 | """ 114 | finds nearest occupied cell for cell with given position 115 | if the position is outside the grid, the cell is unknown 116 | if the cell is inside the grid but has value 0.5, the cell is unknown 117 | if the cell has value 1, the cell itself is occupied, return cell 118 | otherwise look for nearest occupied neighbour--> use grid coord (row,column) and circle around cell with increasing distance 119 | occupied cell found if value ==1 120 | 121 | """ 122 | 123 | 124 | def find_nearest_neighbor(map, position): 125 | NN_THRESHOLD = 0.9 126 | grid_index = map.cartesian2grid(position[0], position[1]) 127 | if (not map.in_grid(grid_index)): 128 | return "unknown" 129 | 130 | cell = map.get_cell(position[0], position[1]) 131 | if proc_value_cell(cell) == 0.5: 132 | return "unknown" 133 | 134 | # measured cell is occupied 135 | if proc_value_cell(cell) > NN_THRESHOLD: 136 | return position 137 | else: 138 | 139 | ''' 140 | This looks for closests neighboring cell of endpoint cone 141 | --> It looks in a circle around this point 142 | OPTIMIZATION: 143 | Should be better to look in an oval kind of shape 144 | ''' 145 | distance = 1 146 | # check in radius around current position, using (row,column) positions in grid 147 | # if counter is 0, no occupied positions inside the grid have been found, return None 148 | counter = -1 149 | while counter != 0: 150 | counter = 0 151 | for i in range(0, distance + 1, 1): 152 | for a in (-1, 1): 153 | for b in (-1, 1): 154 | pos = (grid_index[0] + a * distance, grid_index[1] + b * i) 155 | if (map.in_grid(pos)): 156 | if proc_value_cell(map.grid[pos[0], pos[1]]) > NN_THRESHOLD: 157 | counter += 1 158 | return map.grid2cartesian(pos[0], pos[1]) 159 | 160 | pos = (grid_index[0] + a * i, grid_index[1] + b * distance) 161 | if (map.in_grid(pos)): 162 | if proc_value_cell(map.grid[pos[0], pos[1]]) > NN_THRESHOLD: 163 | counter += 1 164 | return map.grid2cartesian(pos[0], pos[1]) 165 | # print('counter: ', counter) 166 | distance += 1 167 | return None 168 | 169 | 170 | def distance_to_closest_object_in_cone(map, pose, cone_width_angle, max_radius): 171 | # NOT used yet... 172 | """ 173 | Raytraces until a first object is found. Does not search further then max_radius. 174 | Keep max_radius quite small (e.g. 130cm or 200cm), as it will get slow otherwise. 175 | 176 | Returns the pareto-front of (distance, log_odds). None-values are ignored 177 | """ 178 | # print('max_radius', max_radius) 179 | 180 | coors, distances = map.get_cone(pose, cone_width_angle, max_radius) 181 | 182 | # map.grid = procentual_grid(map.grid) 183 | 184 | # def snd(tupl): 185 | # (x, y) = tupl 186 | # return y 187 | 188 | # cells = list(cells) 189 | # cells.sort(key=snd) 190 | 191 | cells = zip(coors, distances) 192 | cells = sorted(cells, key = lambda t: t[1]) 193 | # print (cells) 194 | # print('hallo') 195 | # [ print(x) for x in cells ] 196 | # exit() 197 | 198 | OCC_THRESHOLD = 0.55 199 | NUM_HITS_THRESHOLD = 20 200 | # looks in the cone for NUM_HITS_THRESHOLD locations with occupancy 201 | # probability higher than OCC_THRESHOLD 202 | 203 | occupied = False 204 | num_hits = 0 205 | 206 | for (cell, d) in cells: 207 | cell = map.get_cell(*cell) 208 | value = proc_value_cell(cell) 209 | # print('value : ', value) 210 | if value > OCC_THRESHOLD: 211 | # probs.append(value) 212 | num_hits += 1 213 | 214 | # print (len(cells)) 215 | 216 | # print('num_hits : ', num_hits) 217 | if num_hits > NUM_HITS_THRESHOLD: 218 | occupied = True 219 | 220 | return occupied 221 | 222 | 223 | def _prob_of_distances(measured, expected): 224 | return _normal_distribution(measured, expected, RECOGNITION_SENSITIVITY) 225 | 226 | 227 | def _normal_distribution(x, mean, stddev): 228 | den = (math.sqrt(2 * math.pi) * stddev) 229 | return 1 / den * math.exp((-1 * ((x - mean) ** 2)) / (2 * (stddev ** 2))) 230 | 231 | 232 | def update_map(measurements, pose, map_): 233 | # set the space around the robot FREE 234 | robot_pose = Pose(pose.x, pose.y, pose.theta) 235 | grid_index = map_.cartesian2grid(robot_pose.x, robot_pose.y) 236 | 237 | robot_coords = [] 238 | PATH_WIDTH = 4 239 | for i in range(-PATH_WIDTH, PATH_WIDTH + 1, 1): 240 | for j in range(-PATH_WIDTH, PATH_WIDTH + 1, 1): 241 | pos = (grid_index[0] + i, grid_index[1] + j) 242 | if (map_.in_grid(pos)): 243 | robot_coords.append(pos) 244 | 245 | for coords in robot_coords: 246 | map_.grid[coords[0], coords[1]] += _log_odds(PROBABILITY_FREE) 247 | 248 | for sensor_angle, measured_dist in _measurement_per_angle(measurements): 249 | 250 | measurement = True 251 | if measured_dist is None or measured_dist >= MAX_RANGE: 252 | measured_dist = MAX_RANGE 253 | measurement = False 254 | 255 | # measured_dist > MAX_RANGE --> short reading or indeed nothing 256 | 257 | 258 | # TODO: Pose of sensor is simplified to pose of robot 259 | sensor_pose = Pose(pose.x, pose.y, pose.theta + sensor_angle) 260 | 261 | cell_coordinates, distances = map_.get_cone(sensor_pose, CONE_ANGLE, 262 | measured_dist) 263 | # measured distance on old map --> cell_coordinates that should be updated 264 | 265 | 266 | if measurement: 267 | 268 | CUTOFF_FACTOR = 0.4 269 | 270 | cutoff = measured_dist * CUTOFF_FACTOR 271 | empty_coords = cell_coordinates[distances < cutoff] 272 | non_empty_coords = cell_coordinates[distances > cutoff] 273 | 274 | map_.grid[empty_coords[:, 0], empty_coords[:, 1]] += _log_odds(PROBABILITY_FREE) 275 | 276 | non_empty_distances = distances[distances > cutoff] 277 | if len(non_empty_distances) != 0 : 278 | max_dist = max(non_empty_distances) 279 | 280 | UNCERTAINTY_GRADIENT = 0.1 # below 0.5 281 | 282 | non_empty_log_odds = [] 283 | for i, entry in enumerate(non_empty_distances): 284 | factor = UNCERTAINTY_GRADIENT * (non_empty_distances[i] / max_dist) 285 | non_empty_log_odds.append(_log_odds(.5 + factor)) 286 | map_.grid[non_empty_coords[:, 0], non_empty_coords[:, 1]] += non_empty_log_odds 287 | 288 | # print(len(non_empty_coords)) 289 | # print(max(distances[distances>cutoff])) 290 | # print(non_empty_log_odds) 291 | # print(_log_odds(PROBABILITY_FREE)) 292 | # exit() 293 | 294 | # map_.grid[cell_coordinates[:, 0], cell_coordinates[:, 1]] += _log_odds(PROBABILITY_FREE) 295 | 296 | else: 297 | # max reading 298 | # look if there is an obstacle on the map 299 | # calculate 300 | MAX_RADIUS =70 301 | # MAX_RANGE = 150 302 | # print('Measured_dist : ', measured_dist) 303 | # print('sensor_angle : ', sensor_angle) 304 | cell_coordinates = cell_coordinates[distances < MAX_RADIUS] 305 | occupied = distance_to_closest_object_in_cone(map_, sensor_pose, CONE_ANGLE, MAX_RADIUS) 306 | # print(found) 307 | # 308 | # 309 | if occupied: 310 | SHORT_READING_PROB = 0.7 311 | map_.grid[cell_coordinates[:, 0], cell_coordinates[:, 1]] += _log_odds(SHORT_READING_PROB) 312 | else: 313 | map_.grid[cell_coordinates[:, 0], cell_coordinates[:, 1]] += _log_odds(PROBABILITY_FREE) 314 | None 315 | # if measurement and len(non_empty_coords) > 0: 316 | # non_empty_log_odds = _log_odds(.5 + (.01 / (len(non_empty_coords) + 1))) 317 | # map_.grid[non_empty_coords[:, 0], non_empty_coords[:, 1]] += non_empty_log_odds 318 | 319 | 320 | def _measurement_per_angle(measurements): 321 | return [ 322 | (math.pi / 2, measurements.left), 323 | (0, measurements.front), 324 | (-math.pi / 2, measurements.right), 325 | ] 326 | 327 | 328 | def _log_odds(p): 329 | return math.log(p / (1 - p)) 330 | -------------------------------------------------------------------------------- /arduino/move_around/move_around.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | /********************* pin -> color layout and other pins *******************/ 6 | /*** On the jumper ***/ 7 | 8 | #define RED error 9 | #define BLUE A3 10 | #define GREEN A4 11 | #define ORANGE A5 12 | #define YELLOW A1 13 | #define BLACK error 14 | //EMPTY 15 | #define GRAY A4// yeah, we reuse a pin. As long as it's a trigger pin, we'll be 16 | #define WHITE A2 17 | //EMPTY 18 | 19 | 20 | /*** Misc other devices ***/ 21 | #define LED 13 // led on the Zumo and arduino, goes on when no input is in range 22 | 23 | #define BLUETOOTH_TXD 4 24 | #define BLUETOOTH_RXD 5 25 | 26 | /********************* color -> sensor layout: ******************************/ 27 | #define SENSL_TRIG GREEN 28 | #define SENSL_ECHO BLUE 29 | 30 | #define SENSF_TRIG YELLOW 31 | #define SENSF_ECHO ORANGE 32 | 33 | #define SENSR_TRIG GRAY 34 | #define SENSR_ECHO WHITE 35 | 36 | 37 | /********************* motor speeds ******************************************/ 38 | #define SPEED 300 39 | //#define LEFT_SUM (-25) // left is a bit slower, we adjust here 40 | #define LEFT_SUM (-40) 41 | 42 | /********************* Sensor settings ***************************************/ 43 | 44 | #define OUT_OF_RANGE 9999 45 | // time out in milli-secs 46 | #define TIME_OUT 400 47 | #define TIME_OUT_MuS ((long) TIME_OUT*1000) 48 | 49 | 50 | /********************* Auto move settings *************************************/ 51 | 52 | // when the algorithm chooses a turning direction, it will keep this turning direction for 5secs, to prevent loops in cornersr 53 | #define DIR_CHANGE_TIME 2500 54 | 55 | /********************* Angle settings *****************************************/ 56 | #define ANGLE_30DEG 70 57 | #define ANGLE_45DEG 200 58 | 59 | /********************* Enable/disable output/input sending ********************/ 60 | // send each ... ms a sporadic sensor update 61 | #define SPORADIC_SENSOR_UPDATE_INTERVAL 1000 62 | 63 | #define SERIAL_SENSOR_UPDATES 0 64 | #define SERIAL_SPORADIC_SENSOR_UPDATE 1 65 | #define SERIAL_MOTOR_UPDATES 0 66 | #define SERIAL_AUTO_DEBUG 0 67 | #define SERIAL_SPORADIC_AUTO_UPDATE 1 68 | 69 | #define BLUETOOTH_SENSOR_UPDATES 1 70 | #define BLUETOOTH_SPORADIC_SENSOR_UPDATE 1 71 | #define BLUETOOTH_MOTOR_UPDATES 1 72 | #define BLUETOOTH_AUTO_DEBUG 0 73 | #define BLUETOOTH_SPORADIC_AUTO_UPDATE 0 74 | 75 | // disable if someone sends annoying commands while debugging over cable 76 | #define BLUETOOTH_ACCEPT_ORDERS 1 77 | 78 | #define START_MODE 'H' 79 | 80 | /********************* Variables ***************************/ 81 | 82 | #define LEFT 'l' 83 | #define RIGHT 'r' 84 | 85 | ZumoMotors motors; 86 | SoftwareSerial bluetooth(BLUETOOTH_TXD, BLUETOOTH_RXD); // RX, TX 87 | 88 | int last_order; // what the loop executes 89 | int counter; // make sure the robot takes 3 samples every time when moving a bit forward 90 | 91 | // we keep track of the speeds and report those, each time they change, we send this on to bluetooth 92 | int old_left_speed, old_right_speed; 93 | long last_update_time_serial; 94 | long last_update_time_bluetooth; 95 | 96 | void setup() { 97 | int led_speed = 75;//speed of warning led 98 | digitalWrite(LED, HIGH); 99 | Serial.begin (9600); 100 | 101 | // init of sensors 102 | pinMode(SENSL_TRIG, OUTPUT); 103 | pinMode(SENSL_ECHO, INPUT); 104 | pinMode(SENSF_TRIG, OUTPUT); 105 | pinMode(SENSF_ECHO, INPUT); 106 | pinMode(SENSR_TRIG, OUTPUT); 107 | pinMode(SENSR_ECHO, INPUT); 108 | 109 | digitalWrite(SENSL_TRIG, LOW); 110 | digitalWrite(SENSF_TRIG, LOW); 111 | digitalWrite(SENSR_TRIG, LOW); 112 | 113 | // init of motors 114 | motors.flipLeftMotor(1); 115 | motors.flipRightMotor(1); 116 | 117 | pinMode(LED, OUTPUT); 118 | bluetooth.begin(9600); 119 | 120 | bluetooth.println("# Setup done! "); 121 | Serial.println("# Setup done"); 122 | 123 | String helpMsg = "# Send: \n# 'a' for auto mode (sticks in this mode until something other is received), \n# 'z' for forward, \n# 's' for backward, \n# 'q' for turning left, \n# 'd' for turning right. \n# (WASD, but on azerty)"; 124 | bluetooth.println(helpMsg); 125 | Serial.println(helpMsg); 126 | 127 | // a second of delay, to give time to disconnect cables etc... 128 | if (START_MODE == 'a' || START_MODE == 't') { 129 | for (int i = 0; i < 1000; i += led_speed) { 130 | digitalWrite(LED, HIGH); 131 | delay(led_speed); 132 | digitalWrite(LED, LOW); 133 | delay(led_speed); 134 | } 135 | } 136 | digitalWrite(LED, LOW); 137 | Serial.print("# Waiting for your command, now in mode "); 138 | Serial.print(START_MODE); 139 | if (BLUETOOTH_ACCEPT_ORDERS) { 140 | bluetooth.print("# Waiting for your command, now in mode "); 141 | } else { 142 | bluetooth.print("# Bluetooth orders disabled. Now in mode "); 143 | } 144 | bluetooth.print(START_MODE); 145 | last_order = START_MODE; 146 | send_time(1, 1); 147 | 148 | if (START_MODE == 't') { 149 | forward(); 150 | delay(1000); 151 | halt(); 152 | } 153 | 154 | // initialize counter to 1 155 | counter = 0; 156 | 157 | } 158 | 159 | /********************* Distance sensors ***************************************/ 160 | 161 | long read_distance_sensor(const int trigPin, const int echoPin) { 162 | long duration; 163 | 164 | digitalWrite(trigPin, LOW); 165 | delayMicroseconds(2); 166 | digitalWrite(trigPin, HIGH); 167 | delayMicroseconds(10); 168 | digitalWrite(trigPin, LOW); 169 | duration = pulseIn(echoPin, HIGH, TIME_OUT_MuS); // TIME_OUT is in millis, function excpects micro's 170 | if (duration == 0) { 171 | // we time-outed, we return a lot of 9s 172 | return OUT_OF_RANGE; 173 | } else { 174 | return (duration / 2) / 29.1; 175 | } 176 | } 177 | 178 | /********************* Order reading and dispatch *****************************/ 179 | 180 | /* Receives orders from bluetooth 181 | Returns '_' if no order received 182 | */ 183 | 184 | char receive_orders() { 185 | char rd; 186 | if (Serial.available()) { 187 | return Serial.read(); 188 | } 189 | if (BLUETOOTH_ACCEPT_ORDERS && bluetooth.available()) { 190 | rd = bluetooth.read(); 191 | Serial.print("# Received: "); 192 | Serial.println(rd); 193 | return rd; 194 | } 195 | return '_'; 196 | 197 | } 198 | 199 | long last_sporadic = 0; 200 | void send_sensor_data(int left, int front, int right) { 201 | int send_bluetooth = 0; 202 | int send_serial = 0; 203 | long now = millis(); 204 | int send_sporadic = 0; 205 | if (now - last_sporadic > SPORADIC_SENSOR_UPDATE_INTERVAL) { 206 | last_sporadic = now; 207 | send_sporadic = 1; 208 | } 209 | 210 | send_bluetooth = BLUETOOTH_SENSOR_UPDATES || (send_sporadic && BLUETOOTH_SPORADIC_SENSOR_UPDATE); 211 | if (send_bluetooth) { 212 | bluetooth.print("L"); 213 | bluetooth.print(left); 214 | bluetooth.print("F"); 215 | bluetooth.print(front); 216 | bluetooth.print("R"); 217 | bluetooth.print(right); 218 | } 219 | 220 | send_serial = SERIAL_SENSOR_UPDATES || (send_sporadic && SERIAL_SPORADIC_SENSOR_UPDATE); 221 | if (send_serial) { 222 | // Serial.print(" L: "); 223 | // Serial.print(left); 224 | // Serial.print("cm\t"); 225 | // Serial.print(" F: "); 226 | // Serial.print(front); 227 | // Serial.print("cm\t"); 228 | // Serial.print(" R: "); 229 | // Serial.print(right); 230 | // Serial.print("cm\t"); 231 | } 232 | send_time(send_serial, send_bluetooth); 233 | } 234 | 235 | /** 236 | Sends the time stamp since last update 237 | */ 238 | void send_time(int update_serial, int update_bluetooth) { 239 | long now = millis(); 240 | if (update_serial) { 241 | Serial.print("t"); 242 | Serial.println(now - last_update_time_serial); 243 | last_update_time_serial = now; 244 | } 245 | if (update_bluetooth) { 246 | bluetooth.print("t"); 247 | bluetooth.println(now - last_update_time_bluetooth); 248 | last_update_time_bluetooth = now; 249 | } 250 | } 251 | 252 | /********************* Motor control *******************************************/ 253 | 254 | inline void forward() { 255 | moveAround(SPEED, SPEED); 256 | } 257 | 258 | void backward() { 259 | moveAround(-SPEED, -SPEED); 260 | } 261 | 262 | void turn_left() { 263 | moveAround(-SPEED, SPEED); 264 | } 265 | 266 | void turn_right() { 267 | moveAround(SPEED, -SPEED); 268 | } 269 | 270 | void turn(int dir) { 271 | if (dir == LEFT) { 272 | turn_left(); 273 | } else { 274 | turn_right(); 275 | } 276 | } 277 | 278 | void halt() { 279 | moveAround(0, 0); 280 | } 281 | 282 | void test_motors() { 283 | forward(); 284 | delay(5000); 285 | backward(); 286 | delay(5000); 287 | halt(); 288 | } 289 | 290 | /** 291 | All motor changes should go through this method! 292 | It keeps track of the timing, resets it, sends motor updates to bluetooth and serial, ... 293 | */ 294 | void moveAround(int left, int right) { 295 | // correction factor on the left wheel 296 | int correction = LEFT_SUM; 297 | if (left < 0) { 298 | correction = -correction; 299 | } else if (left == 0) { 300 | correction = 0; 301 | } 302 | 303 | if (old_left_speed != left || old_right_speed != right) { 304 | 305 | if (BLUETOOTH_MOTOR_UPDATES) { 306 | bluetooth.print("el"); 307 | bluetooth.print(left); 308 | bluetooth.print("er"); 309 | bluetooth.print(right); 310 | bluetooth.print("cor"); 311 | bluetooth.print(correction); 312 | } 313 | 314 | if (SERIAL_MOTOR_UPDATES) { 315 | Serial.print("el"); 316 | Serial.print(left); 317 | Serial.print("er"); 318 | Serial.print(right); 319 | Serial.print("cor"); 320 | Serial.print(correction); 321 | } 322 | send_time(SERIAL_MOTOR_UPDATES, BLUETOOTH_MOTOR_UPDATES); 323 | 324 | old_left_speed = left; 325 | old_right_speed = right; 326 | } 327 | 328 | // actually run the motors 329 | motors.setLeftSpeed(left + correction); 330 | motors.setRightSpeed(right); 331 | } 332 | 333 | char move_dir = LEFT; 334 | int last_move = 0; 335 | long last_sporadic_auto = 0; 336 | 337 | void auto_move(const int left, const int front, const int right) { 338 | int spd; 339 | String mode; 340 | long now = millis(); 341 | int send_sporadic = 0; 342 | 343 | if (now - last_sporadic_auto > SPORADIC_SENSOR_UPDATE_INTERVAL) { 344 | last_sporadic_auto = now; 345 | send_sporadic = 1; 346 | } 347 | 348 | if (front == OUT_OF_RANGE && right == OUT_OF_RANGE && left == OUT_OF_RANGE) { 349 | digitalWrite(LED, HIGH); 350 | mode = "invalid input"; 351 | } else { 352 | digitalWrite(LED, LOW); 353 | // valid input 354 | if (front < 25) { 355 | // determine turn direction 356 | if (millis() - last_move > DIR_CHANGE_TIME) { 357 | // we can choose freely the direction to turn, as the direction holdon expired 358 | last_move = millis(); 359 | Serial.println("TURNING!"); 360 | if (right > left) { 361 | // there is more space on the right 362 | move_dir = RIGHT; 363 | mode = "turning left"; 364 | 365 | } else { 366 | move_dir = LEFT; 367 | mode = "turning right"; 368 | } 369 | 370 | } else { 371 | mode = "turning"; 372 | } 373 | //actually turn 374 | turn(move_dir); 375 | } else { 376 | mode = "going forward"; 377 | forward(); 378 | } 379 | } 380 | 381 | if (SERIAL_AUTO_DEBUG || (send_sporadic && SERIAL_SPORADIC_AUTO_UPDATE)) { 382 | Serial.print("# auto-mode: "); 383 | Serial.println(mode); 384 | Serial.print(" last rotation:"); 385 | Serial.println(move_dir); 386 | Serial.print(" last rotation moment:"); 387 | Serial.println(last_move); 388 | 389 | } 390 | 391 | if (BLUETOOTH_AUTO_DEBUG || (send_sporadic && BLUETOOTH_SPORADIC_AUTO_UPDATE)) { 392 | bluetooth.print("# auto-mode: "); 393 | bluetooth.print(mode); 394 | bluetooth.print(" last rotation:"); 395 | bluetooth.print(move_dir); 396 | bluetooth.print(" last rotation moment:"); 397 | bluetooth.println(last_move); 398 | } 399 | 400 | } 401 | 402 | void check_env(const int left, const int front, const int right) { 403 | /* 404 | * Stop the action when the environment is unsafe 405 | */ 406 | if (front < 40 || left < 20 || right < 20) { 407 | halt(); 408 | } 409 | else if (front == OUT_OF_RANGE || (left == OUT_OF_RANGE && right == OUT_OF_RANGE)) { 410 | halt(); 411 | } 412 | } 413 | 414 | void timed_turn(const int dir, const int time_ms) { 415 | turn(dir); 416 | delay(time_ms); 417 | halt(); 418 | } 419 | /***************************************************************************************/ 420 | /********************************* Main Loop *******************************************/ 421 | /***************************************************************************************/ 422 | void loop() { 423 | long left, front, right; 424 | char new_order; 425 | 426 | while (counter > 0 ){ 427 | left = read_distance_sensor(SENSL_TRIG, SENSL_ECHO); 428 | front = read_distance_sensor(SENSF_TRIG, SENSF_ECHO); 429 | right = read_distance_sensor(SENSR_TRIG, SENSR_ECHO); 430 | 431 | send_sensor_data(left, front, right); 432 | counter -= 1; 433 | Serial.println(counter); 434 | } 435 | new_order = receive_orders(); 436 | if (new_order == '_') { 437 | // no order received this tick 438 | // the default order is 'halt', only if we are in auto mode, we continue auto mode 439 | if (last_order == 'A') { 440 | new_order = 'A'; 441 | }else if(last_order == 'w'){ 442 | new_order = 'w'; 443 | } 444 | } 445 | last_order = new_order; 446 | 447 | 448 | // normal conditions only one measurement needed 449 | 450 | switch (last_order) { 451 | case 'A': auto_move(left, front, right); break; 452 | case 'w': forward(); delay(500); halt(); counter = 4; break; // 453 | case 's': backward(); break; // delay(100);halt(); 454 | //case 'a': timed_turn(LEFT, ANGLE_45DEG); break; 455 | case 'a': timed_turn(RIGHT, ANGLE_30DEG); counter = 4; break; 456 | //case 'd': timed_turn(RIGHT, ANGLE_10DEG); break; 457 | case 'd': timed_turn(LEFT, ANGLE_30DEG); counter = 4; break; 458 | case 't': test_motors(); break; 459 | case 'p': counter = 4; break; // sense before starting ! 460 | case 'h': halt(); break; 461 | // case ' ': halt(); break; 462 | default : check_env(left, front, right); break; 463 | } 464 | } 465 | -------------------------------------------------------------------------------- /test/old/nieuwedata2.txt: -------------------------------------------------------------------------------- 1 | L89F9999R64t34 2 | L89F9999R9999t38 3 | L89F9999R65t35 4 | L89F9999R9999t38 5 | L89F9999R65t35 6 | L89F9999R9999t39 7 | L89F9999R52t33 8 | L89F9999R9999t38 9 | L89F9999R65t35 10 | L89F9999R9999t38 11 | L89F9999R64t35 12 | L89F9999R63t35 13 | L89F9999R9999t39 14 | L89F9999R52t32 15 | L89F9999R9999t39 16 | L89F9999R65t35 17 | L89F9999R9999t38 18 | L89F9999R64t35 19 | L89F9999R52t33 20 | L89F9999R9999t39 21 | L89F9999R64t34 22 | L89F9999R64t34 23 | L89F9999R9999t39 24 | L89F9999R9999t38 25 | L89F9999R64t35 26 | L89F9999R9999t39 27 | L89F9999R9999t38 28 | L89F9999R9999t38 29 | L89F9999R64t34 30 | L89F9999R64t35 31 | L89F9999R52t33 32 | L89F9999R64t35 33 | L89F9999R9999t40 34 | L89F9999R9999t38 35 | L89F9999R64t34 36 | L89F9999R9999t39 37 | L89F9999R9999t38 38 | L89F9999R64t35 39 | L89F9999R53t33 40 | L90F9999R64t35 41 | L89F9999R9999t38 42 | L89F9999R64t34 43 | L90F9999R9999t39 44 | L89F9999R52t33 45 | L89F9999R64t35 46 | L89F9999R52t32 47 | L89F9999R9999t39 48 | L89F9999R64t35 49 | L89F9999R9999t38 50 | L89F9999R64t35 51 | L89F9999R9999t38 52 | L89F9999R64t35 53 | L89F9999R9999t39 54 | L89F9999R9999t39 55 | L89F9999R63t34 56 | L89F9999R9999t39 57 | L89F9999R9999t38 58 | L89F9999R9999t39 59 | L90F9999R65t35 60 | L89F9999R9999t38 61 | L89F9999R9999t39 62 | L89F9999R64t33 63 | L90F9999R9999t39 64 | L89F9999R9999t39 65 | L90F9999R9999t39 66 | L89F9999R9999t39 67 | L89F9999R9999t38 68 | L90F9999R9999t39 69 | L90F9999R9999t39 70 | L90F9999R9999t39 71 | L90F9999R9999t38 72 | L90F9999R64t34 73 | L89F9999R9999t39 74 | L88F9999R9999t39 75 | L90F9999R64t35 76 | L89F9999R9999t38 77 | L90F9999R64t35 78 | L89F9999R9999t39 79 | L90F9999R65t33 80 | L90F9999R9999t39 81 | L89F9999R9999t39 82 | L89F9999R63t34 83 | L89F9999R9999t39 84 | L90F9999R9999t38 85 | L89F9999R65t35 86 | L89F9999R9999t39 87 | L90F9999R64t33 88 | L89F9999R9999t39 89 | L90F9999R64t34 90 | L89F9999R9999t39 91 | L89F9999R9999t38 92 | L90F9999R64t35 93 | L89F9999R9999t39 94 | L90F9999R9999t38 95 | L89F9999R63t35 96 | L89F9999R9999t39 97 | L90F9999R65t34 98 | L90F9999R9999t39 99 | L89F9999R9999t38 100 | L90F9999R64t35 101 | L90F9999R9999t39 102 | L90F9999R65t33 103 | L89F9999R9999t39 104 | L89F9999R9999t39 105 | L90F9999R64t34 106 | L89F9999R9999t39 107 | L90F9999R9999t38 108 | L90F9999R65t35 109 | L89F9999R9999t38 110 | L90F9999R65t34 111 | L89F9999R9999t39 112 | L89F9999R9999t38 113 | L90F9999R63t35 114 | L89F9999R9999t39 115 | L90F9999R65t35 116 | L88F9999R9999t39 117 | L89F9999R9999t37 118 | L89F9999R64t35 119 | L90F9999R9999t39 120 | L90F9999R63t34 121 | L89F9999R9999t39 122 | L89F9999R65t34 123 | L89F9999R65t33 124 | L89F9999R64t35 125 | L89F9999R9999t39 126 | L89F9999R64t34 127 | L89F9999R9999t39 128 | L89F9999R65t34 129 | L89F9999R9999t39 130 | L89F9999R9999t37 131 | L89F9999R63t35 132 | L89F9999R9999t39 133 | L89F9999R64t34 134 | L89F9999R9999t39 135 | L89F9999R9999t38 136 | L89F9999R64t35 137 | L89F9999R62t34 138 | L89F9999R9999t39 139 | L89F9999R9999t39 140 | L89F9999R65t34 141 | L89F9999R9999t39 142 | L89F9999R9999t38 143 | L89F9999R64t35 144 | L89F9999R9999t39 145 | L89F9999R64t33 146 | L89F9999R9999t39 147 | L89F9999R9999t38 148 | L89F9999R9999t40 149 | el400er400cor-35t24 150 | L89F9999R9999t39 151 | L89F9999R37t32 152 | L89F9999R67t32 153 | L89F9999R68t33 154 | L89F9999R68t33 155 | L88F9999R69t31 156 | L88F9999R70t33 157 | L88F9999R9999t39 158 | L88F9999R39t33 159 | L87F9999R9999t38 160 | L88F9999R9999t36 161 | L88F9999R9999t36 162 | L87F9999R9999t37 163 | L87F9999R9999t37 164 | L87F9999R9999t35 165 | L88F9999R9999t35 166 | L88F9999R9999t35 167 | L90F9999R9999t34 168 | L88F9999R9999t34 169 | L88F9999R9999t37 170 | L87F9999R9999t37 171 | L88F9999R9999t37 172 | L87F9999R9999t37 173 | L88F9999R9999t35 174 | L87F9999R9999t37 175 | L88F9999R9999t37 176 | L88F9999R9999t37 177 | L88F9999R9999t37 178 | L88F9999R9999t36 179 | L88F9999R9999t38 180 | L88F9999R9999t36 181 | L89F9999R9999t37 182 | L90F9999R9999t37 183 | L90F9999R9999t37 184 | L90F9999R9999t37 185 | L90F9999R9999t37 186 | L90F9999R9999t37 187 | L91F9999R9999t37 188 | L91F9999R9999t36 189 | L92F9999R9999t37 190 | L92F9999R9999t37 191 | L93F9999R9999t37 192 | L94F9999R9999t37 193 | L94F9999R9999t37 194 | L94F96R9999t35 195 | L95F95R9999t33 196 | L96F91R9999t35 197 | L96F89R9999t34 198 | L97F86R9999t34 199 | L97F84R9999t34 200 | L98F85R9999t34 201 | L98F9999R9999t38 202 | L100F9999R9999t39 203 | L100F9999R9999t38 204 | L101F9999R9999t39 205 | L101F73R9999t35 206 | L102F9999R9999t38 207 | L103F104R9999t38 208 | L104F101R9999t36 209 | L105F104R65t36 210 | L9999F101R70t36 211 | L9999F98R9999t38 212 | L9999F45R9999t34 213 | L9999F42R9999t34 214 | L9999F41R9999t33 215 | L9999F87R9999t39 216 | L9999F85R9999t37 217 | L9999F81R9999t36 218 | L9999F29R9999t33 219 | el-400er400cor35t23 220 | L9999F71R9999t36 221 | el400er400cor-35t24 222 | L9999F20R100t33 223 | el-400er400cor35t24 224 | L73F9999R9999t38 225 | el400er400cor-35t23 226 | L66F9999R9999t36 227 | L63F9999R9999t33 228 | L56F9999R9999t33 229 | L10F9999R9999t31 230 | L9F9999R9999t28 231 | L8F9999R9999t31 232 | L8F101R9999t30 233 | L8F98R9999t28 234 | L9F96R9999t29 235 | L8F95R9999t28 236 | L7F101R9999t29 237 | L8F92R9999t29 238 | L8F90R9999t28 239 | L8F89R9999t27 240 | L9F86R9999t28 241 | L9F9999R9999t31 242 | L9F9999R9999t31 243 | L10F9999R9999t32 244 | L10F9999R9999t32 245 | L10F9999R9999t35 246 | L11F9999R9999t31 247 | L12F9999R9999t33 248 | L12F9999R9999t33 249 | L12F9999R9999t33 250 | L13F9999R9999t32 251 | L13F9999R9999t32 252 | L14F9999R9999t32 253 | L15F9999R9999t33 254 | L16F9999R9999t33 255 | L16F9999R9999t31 256 | L17F9999R9999t33 257 | L20F9999R9999t33 258 | L69F9999R9999t36 259 | L66F9999R9999t34 260 | L73F9999R9999t36 261 | L67F9999R9999t36 262 | L71F100R9999t34 263 | L70F101R9999t35 264 | L72F96R9999t33 265 | L74F95R9999t33 266 | L84F81R9999t33 267 | L76F88R9999t33 268 | L77F85R9999t33 269 | L85F9999R9999t37 270 | L87F9999R9999t36 271 | L87F56R9999t32 272 | L88F54R9999t32 273 | L89F59R9999t33 274 | L90F57R40t27 275 | L91F54R40t28 276 | L91F36R15t26 277 | el-400er400cor35t22 278 | L93F31R16t26 279 | L94F32R40t26 280 | L95F98R40t31 281 | el400er400cor-35t23 282 | L98F104R9999t36 283 | L94F9999R9999t37 284 | L90F9999R9999t37 285 | L90F9999R9999t37 286 | L90F27R9999t30 287 | el-400er400cor35t23 288 | L90F9999R9999t37 289 | el400er400cor-35t24 290 | L91F22R9999t29 291 | el-400er400cor35t24 292 | L97F32R59t28 293 | L102F9999R79t37 294 | el400er400cor-35t23 295 | L9999F30R79t32 296 | el-400er400cor35t23 297 | L9999F9999R9999t43 298 | L9999F9999R9999t42 299 | L9999F9999R9999t41 300 | L9999F9999R83t39 301 | el400er400cor-35t23 302 | L9999F100R101t40 303 | L9999F9999R101t40 304 | L9999F9999R102t40 305 | L77F9999R101t37 306 | L76F9999R101t37 307 | L76F9999R9999t38 308 | L76F9999R99t35 309 | L76F9999R98t36 310 | L75F9999R96t35 311 | L9999F104R98t37 312 | L101F103R91t37 313 | L100F9999R89t37 314 | L98F102R88t36 315 | L92F77R86t32 316 | L77F90R84t32 317 | L98F9999R84t35 318 | L77F88R85t32 319 | L77F87R81t32 320 | L89F78R79t32 321 | L80F81R80t30 322 | L87F75R79t31 323 | L88F73R75t31 324 | L82F76R72t30 325 | L89F71R72t31 326 | L84F75R70t31 327 | L82F75R73t30 328 | L87F70R68t30 329 | L81F77R68t30 330 | L76F76R63t30 331 | L76F73R63t29 332 | L85F70R66t30 333 | L87F68R65t30 334 | L74F65R58t28 335 | L92F63R61t30 336 | L68F62R59t28 337 | L69F60R55t27 338 | L57F53R53t23 339 | L76F57R55t33 340 | L57F55R50t25 341 | L53F54R50t27 342 | L53F51R51t26 343 | L78F51R49t27 344 | L49F50R48t27 345 | L54F48R46t26 346 | L50F50R44t25 347 | L45F48R42t25 348 | L45F40R42t24 349 | L48F34R41t25 350 | el-400er400cor35t22 351 | L47F47R37t25 352 | el400er400cor-35t24 353 | L29F37R37t23 354 | el-400er400cor35t23 355 | L25F34R52t23 356 | L24F31R53t24 357 | L23F29R54t23 358 | L22F29R61t24 359 | L21F15R9999t24 360 | L21F14R9999t26 361 | L22F28R9999t27 362 | L27F49R9999t27 363 | el400er400cor-35t23 364 | L23F59R9999t28 365 | L24F9999R56t30 366 | L26F9999R46t30 367 | L28F9999R56t31 368 | L29F9999R44t28 369 | L33F9999R44t30 370 | L32F9999R40t30 371 | L33F9999R28t28 372 | L36F9999R29t30 373 | L37F9999R32t30 374 | L39F105R32t28 375 | L40F104R34t29 376 | L42F101R35t29 377 | L44F98R37t26 378 | L46F96R38t28 379 | L48F98R39t28 380 | L49F98R41t28 381 | L51F92R42t28 382 | L52F87R44t28 383 | L56F83R46t27 384 | L55F84R46t28 385 | L58F80R47t28 386 | L58F79R50t27 387 | L61F75R57t29 388 | L63F9999R58t32 389 | L65F70R54t28 390 | L67F67R61t28 391 | L68F68R72t30 392 | L70F63R69t28 393 | L72F61R59t29 394 | L75F57R60t28 395 | L78F55R60t28 396 | L79F52R61t28 397 | L80F51R64t29 398 | L82F9999R65t33 399 | L83F9999R66t34 400 | L85F9999R74t35 401 | L88F9999R77t36 402 | L91F9999R80t33 403 | L96F9999R78t33 404 | L98F9999R80t34 405 | L100F9999R80t35 406 | L102F9999R83t35 407 | L9999F9999R83t39 408 | L9999F9999R84t36 409 | L9999F9999R82t36 410 | L9999F9999R85t37 411 | L9999F9999R86t36 412 | L9999F9999R85t37 413 | L9999F9999R87t39 414 | L9999F9999R88t38 415 | L9999F9999R95t39 416 | L9999F9999R89t39 417 | L9999F9999R62t35 418 | L9999F9999R63t35 419 | L9999F9999R57t35 420 | L9999F9999R57t35 421 | L9999F9999R57t36 422 | L25F9999R56t30 423 | L23F9999R57t28 424 | L22F9999R9999t33 425 | L21F9999R101t34 426 | L20F9999R9999t33 427 | L20F9999R9999t35 428 | L21F9999R61t30 429 | L21F9999R60t31 430 | L22F9999R64t29 431 | L22F9999R60t31 432 | L22F9999R61t30 433 | L23F9999R62t30 434 | L23F9999R62t30 435 | L24F9999R64t31 436 | L24F9999R65t30 437 | L26F9999R67t30 438 | L28F9999R68t31 439 | L96F9999R85t36 440 | L97F9999R86t36 441 | L101F9999R74t37 442 | L9999F9999R75t38 443 | L9999F9999R74t35 444 | L9999F9999R76t36 445 | L9999F9999R77t37 446 | L9999F9999R77t37 447 | L9999F9999R79t36 448 | L9999F9999R80t36 449 | L9999F9999R81t36 450 | L9999F9999R83t36 451 | L9999F9999R84t37 452 | L9999F9999R85t37 453 | L9999F9999R86t38 454 | L9999F9999R88t37 455 | L9999F9999R91t37 456 | L9999F9999R94t37 457 | L9999F9999R96t36 458 | L9999F9999R95t36 459 | L9999F9999R94t37 460 | L9999F9999R95t37 461 | L9999F9999R97t38 462 | L9999F9999R99t37 463 | L9999F9999R100t41 464 | L9999F9999R104t40 465 | L9999F9999R104t41 466 | L9999F9999R9999t42 467 | L9999F103R9999t42 468 | L9999F101R9999t39 469 | L104F98R9999t38 470 | L104F95R9999t38 471 | L104F92R9999t38 472 | L103F89R9999t38 473 | L103F87R9999t37 474 | L103F84R9999t38 475 | L103F81R9999t37 476 | L103F78R9999t37 477 | L104F75R9999t36 478 | L104F73R9999t37 479 | L103F70R99t34 480 | L104F67R102t35 481 | L104F64R102t35 482 | L104F62R9999t37 483 | L104F59R9999t35 484 | L105F56R9999t35 485 | L105F54R9999t36 486 | L105F51R9999t34 487 | L9999F48R9999t35 488 | L9999F45R9999t34 489 | L9999F43R9999t34 490 | L9999F40R9999t34 491 | L9999F38R9999t34 492 | el-400er400cor35t23 493 | L9999F34R9999t34 494 | L9999F31R9999t33 495 | L77F30R9999t30 496 | el400er-400cor-35t24 497 | L62F28R9999t29 498 | L45F9999R9999t34 499 | el400er400cor-35t23 500 | L28F9999R9999t34 501 | L43F9999R9999t34 502 | L39F28R9999t26 503 | el400er-400cor-35t25 504 | L9999F25R9999t34 505 | el-400er400cor35t22 506 | L9999F20R9999t33 507 | L9999F19R9999t33 508 | L9999F18R9999t33 509 | L9999F19R9999t32 510 | L20F9999R9999t33 511 | el400er400cor-35t23 512 | L14F9999R9999t33 513 | L14F9999R9999t33 514 | L16F9999R9999t33 515 | L9999F103R9999t38 516 | L58F9999R9999t35 517 | L9999F103R9999t39 518 | L46F9999R9999t34 519 | L51F9999R9999t34 520 | L59F9999R9999t35 521 | L69F9999R9999t36 522 | L70F9999R9999t34 523 | L57F9999R9999t32 524 | L69F9999R9999t34 525 | L79F9999R9999t35 526 | L9999F9999R9999t37 527 | L9999F9999R9999t40 528 | L100F9999R9999t39 529 | L9999F9999R9999t40 530 | L9999F9999R9999t40 531 | L9999F9999R9999t39 532 | L9999F9999R9999t40 533 | L9999F9999R9999t40 534 | L9999F9999R9999t40 535 | L9999F9999R9999t40 536 | L9999F9999R9999t40 537 | L9999F9999R9999t40 538 | L9999F9999R9999t40 539 | L9999F9999R9999t39 540 | L9999F9999R9999t40 541 | L9999F9999R9999t40 542 | L9999F9999R9999t40 543 | L9999F9999R9999t40 544 | L9999F9999R9999t40 545 | L9999F9999R9999t39 546 | L9999F9999R9999t40 547 | L9999F9999R9999t42 548 | L9999F9999R9999t42 549 | L9999F9999R9999t41 550 | L9999F9999R86t38 551 | L9999F9999R82t38 552 | L81F9999R82t36 553 | L80F9999R79t35 554 | L79F9999R78t35 555 | L77F9999R77t34 556 | L76F9999R9999t35 557 | L75F9999R9999t36 558 | L75F9999R9999t36 559 | L74F9999R9999t36 560 | L74F9999R9999t36 561 | L73F9999R9999t36 562 | L71F9999R9999t35 563 | L72F9999R9999t36 564 | L71F9999R9999t36 565 | L72F9999R9999t36 566 | L71F9999R9999t36 567 | L69F9999R9999t35 568 | L70F9999R9999t35 569 | L69F9999R9999t36 570 | L70F9999R9999t36 571 | L76F9999R9999t36 572 | L68F9999R9999t35 573 | L67F9999R9999t36 574 | L66F24R9999t29 575 | el400er-400cor-35t25 576 | L64F80R9999t32 577 | el400er400cor-35t22 578 | L64F9999R9999t36 579 | L65F9999R9999t36 580 | L85F9999R9999t36 581 | L67F9999R9999t36 582 | L63F9999R9999t34 583 | L61F9999R9999t36 584 | L62F9999R9999t35 585 | L89F9999R9999t37 586 | L59F9999R9999t35 587 | L59F9999R9999t35 588 | L59F9999R9999t34 589 | L57F9999R9999t35 590 | L57F9999R9999t35 591 | L58F9999R9999t35 592 | L101F9999R9999t39 593 | L61F9999R9999t35 594 | L97F9999R9999t37 595 | L97F9999R9999t37 596 | L58F83R9999t32 597 | L92F9999R9999t38 598 | L90F105R9999t36 599 | L91F100R9999t36 600 | L98F94R9999t33 601 | L90F101R9999t36 602 | L92F99R9999t35 603 | L88F102R9999t35 604 | L90F9999R9999t37 605 | L92F97R9999t35 606 | L88F80R9999t32 607 | L88F81R9999t33 608 | L91F93R9999t35 609 | L87F90R9999t34 610 | L86F87R9999t32 611 | L85F85R9999t34 612 | L85F83R9999t33 613 | L84F78R9999t33 614 | L81F77R9999t33 615 | L80F76R9999t31 616 | L78F73R9999t33 617 | L78F70R9999t32 618 | L77F67R9999t32 619 | L77F65R9999t31 620 | L78F62R9999t33 621 | L75F61R9999t31 622 | L74F58R9999t30 623 | L74F56R9999t32 624 | L73F53R9999t31 625 | L72F51R9999t30 626 | L72F49R9999t30 627 | L71F47R9999t30 628 | L71F45R9999t31 629 | L71F45R9999t29 630 | L70F41R9999t30 631 | L69F38R9999t30 632 | el400er-400cor-35t24 633 | 80F9999R88t35 634 | L80F9999R87t36 635 | L80F9999R88t34 636 | L80F9999R87t35 637 | L80F9999R87t36 638 | L80F9999R87t35 639 | L80F9999R87t35 640 | L80F9999R87t36 641 | L80F9999R87t34 642 | L80F9999R87t35 643 | L80F9999R87t35 644 | L80F9999R87t35 645 | L80F9999R87t35 646 | L80F9999R87t34 647 | L80F9999R87t36 648 | L80F9999R87t35 649 | L80F9999R87t35 650 | L80F9999R87t35 651 | L80F9999R87t35 652 | L80F9999R87t34 653 | L80F9999R87t35 654 | L80F9999R87t35 655 | L80F9999R87t36 656 | L80F9999R88t35 657 | L80F9999R88t34 658 | L80F9999R87t35 659 | L80F85R87t33 660 | L79F85R86t32 661 | L80F9999R88t35 662 | L80F84R87t31 663 | L80F9999R87t35 664 | L80F9999R87t35 665 | L80F9999R87t35 666 | L80F9999R87t36 667 | L80F9999R87t34 668 | L80F9999R87t35 669 | L80F9999R87t35 670 | L80F9999R87t35 671 | L80F9999R87t35 672 | L80F9999R87t34 673 | L80F9999R87t36 674 | L80F9999R87t35 675 | L80F9999R88t35 676 | L80F9999R87t35 677 | L80F9999R88t35 678 | L80F9999R87t34 679 | L80F9999R87t35 680 | L80F85R87t32 681 | L80F9999R87t36 682 | L79F9999R87t36 683 | L80F9999R87t34 684 | L80F9999R87t35 685 | L80F9999R86t35 686 | L80F9999R87t35 687 | L80F9999R88t35 688 | L80F9999R87t36 689 | L80F9999R87t34 690 | L80F85R87t32 691 | L80F83R87t32 692 | L80F84R87t31 693 | L80F84R87t31 694 | L80F85R87t32 695 | -------------------------------------------------------------------------------- /slam/out.txt: -------------------------------------------------------------------------------- 1 | Importing serial failed! Only file imports will be supported 2 | Readchar not available 3 | serial_port : /dev/rfcomm0 4 | testfile : ../test/test.txt 5 | self.file : ../test/test.txt 6 | SensorUpdate(Left: 9999cm Front: 267cm Right: 83cm Timedelta: 2269ms) 7 | SensorUpdate(Left: 9999cm Front: 267cm Right: 83cm Timedelta: 2269ms) 8 | MotionUpdate(Left: 300 Right: 300 Timedelta: 25) 9 | SensorUpdate(Left: 9999cm Front: 215cm Right: 60cm Timedelta: 1727ms) 10 | SensorUpdate(Left: 66cm Front: 198cm Right: 64cm Timedelta: 131ms) 11 | SensorUpdate(Left: 65cm Front: 172cm Right: 79cm Timedelta: 131ms) 12 | SensorUpdate(Left: 66cm Front: 170cm Right: 87cm Timedelta: 131ms) 13 | SensorUpdate(Left: 43cm Front: 183cm Right: 88cm Timedelta: 130ms) 14 | SensorUpdate(Left: 41cm Front: 179cm Right: 93cm Timedelta: 131ms) 15 | SensorUpdate(Left: 40cm Front: 174cm Right: 94cm Timedelta: 128ms) 16 | SensorUpdate(Left: 41cm Front: 170cm Right: 95cm Timedelta: 129ms) 17 | SensorUpdate(Left: 39cm Front: 164cm Right: 131cm Timedelta: 135ms) 18 | SensorUpdate(Left: 39cm Front: 159cm Right: 169cm Timedelta: 664ms) 19 | SensorUpdate(Left: 48cm Front: 112cm Right: 137cm Timedelta: 666ms) 20 | SensorUpdate(Left: 46cm Front: 108cm Right: 134cm Timedelta: 129ms) 21 | SensorUpdate(Left: 49cm Front: 103cm Right: 136cm Timedelta: 129ms) 22 | SensorUpdate(Left: 66cm Front: 97cm Right: 135cm Timedelta: 127ms) 23 | SensorUpdate(Left: 80cm Front: 92cm Right: 136cm Timedelta: 129ms) 24 | SensorUpdate(Left: 237cm Front: 79cm Right: 135cm Timedelta: 342ms) 25 | SensorUpdate(Left: 236cm Front: 73cm Right: 136cm Timedelta: 159ms) 26 | SensorUpdate(Left: 236cm Front: 67cm Right: 140cm Timedelta: 157ms) 27 | SensorUpdate(Left: 235cm Front: 62cm Right: 139cm Timedelta: 156ms) 28 | SensorUpdate(Left: 232cm Front: 49cm Right: 119cm Timedelta: 328ms) 29 | SensorUpdate(Left: 230cm Front: 43cm Right: 109cm Timedelta: 146ms) 30 | MotionUpdate(Left: 0 Right: 0 Timedelta: 16) 31 | SensorUpdate(Left: 232cm Front: 36cm Right: 93cm Timedelta: 140ms) 32 | SensorUpdate(Left: 235cm Front: 36cm Right: 94cm Timedelta: 138ms) 33 | SensorUpdate(Left: 233cm Front: 36cm Right: 93cm Timedelta: 137ms) 34 | SensorUpdate(Left: 235cm Front: 36cm Right: 93cm Timedelta: 138ms) 35 | SensorUpdate(Left: 235cm Front: 36cm Right: 93cm Timedelta: 139ms) 36 | SensorUpdate(Left: 235cm Front: 36cm Right: 93cm Timedelta: 139ms) 37 | SensorUpdate(Left: 234cm Front: 36cm Right: 93cm Timedelta: 137ms) 38 | SensorUpdate(Left: 235cm Front: 36cm Right: 91cm Timedelta: 139ms) 39 | SensorUpdate(Left: 234cm Front: 36cm Right: 93cm Timedelta: 139ms) 40 | SensorUpdate(Left: 234cm Front: 36cm Right: 92cm Timedelta: 138ms) 41 | SensorUpdate(Left: 233cm Front: 36cm Right: 93cm Timedelta: 137ms) 42 | SensorUpdate(Left: 234cm Front: 36cm Right: 91cm Timedelta: 138ms) 43 | SensorUpdate(Left: 233cm Front: 36cm Right: 93cm Timedelta: 138ms) 44 | SensorUpdate(Left: 233cm Front: 36cm Right: 93cm Timedelta: 138ms) 45 | SensorUpdate(Left: 233cm Front: 36cm Right: 93cm Timedelta: 139ms) 46 | SensorUpdate(Left: 233cm Front: 36cm Right: 93cm Timedelta: 138ms) 47 | SensorUpdate(Left: 233cm Front: 36cm Right: 93cm Timedelta: 137ms) 48 | SensorUpdate(Left: 232cm Front: 36cm Right: 93cm Timedelta: 139ms) 49 | SensorUpdate(Left: 231cm Front: 36cm Right: 93cm Timedelta: 137ms) 50 | MotionUpdate(Left: -300 Right: 300 Timedelta: 24) 51 | MotionUpdate(Left: 0 Right: 0 Timedelta: 216) 52 | SensorUpdate(Left: 104cm Front: 4162cm Right: 42cm Timedelta: 858ms) 53 | MotionUpdate(Left: -300 Right: 300 Timedelta: 25) 54 | MotionUpdate(Left: 0 Right: 0 Timedelta: 217) 55 | SensorUpdate(Left: 138cm Front: 234cm Right: 34cm Timedelta: 333ms) 56 | SensorUpdate(Left: 137cm Front: 235cm Right: 34cm Timedelta: 151ms) 57 | SensorUpdate(Left: 153cm Front: 235cm Right: 34cm Timedelta: 674ms) 58 | SensorUpdate(Left: 149cm Front: 234cm Right: 34cm Timedelta: 154ms) 59 | MotionUpdate(Left: 300 Right: 300 Timedelta: 22) 60 | SensorUpdate(Left: 125cm Front: 233cm Right: 34cm Timedelta: 149ms) 61 | SensorUpdate(Left: 119cm Front: 227cm Right: 34cm Timedelta: 143ms) 62 | SensorUpdate(Left: 90cm Front: 222cm Right: 35cm Timedelta: 135ms) 63 | SensorUpdate(Left: 87cm Front: 220cm Right: 34cm Timedelta: 135ms) 64 | SensorUpdate(Left: 84cm Front: 215cm Right: 35cm Timedelta: 132ms) 65 | SensorUpdate(Left: 84cm Front: 206cm Right: 35cm Timedelta: 132ms) 66 | SensorUpdate(Left: 83cm Front: 202cm Right: 35cm Timedelta: 131ms) 67 | SensorUpdate(Left: 84cm Front: 189cm Right: 36cm Timedelta: 307ms) 68 | SensorUpdate(Left: 85cm Front: 181cm Right: 36cm Timedelta: 307ms) 69 | SensorUpdate(Left: 83cm Front: 171cm Right: 37cm Timedelta: 304ms) 70 | SensorUpdate(Left: 84cm Front: 158cm Right: 37cm Timedelta: 125ms) 71 | SensorUpdate(Left: 84cm Front: 153cm Right: 38cm Timedelta: 122ms) 72 | SensorUpdate(Left: 84cm Front: 149cm Right: 38cm Timedelta: 122ms) 73 | SensorUpdate(Left: 85cm Front: 144cm Right: 38cm Timedelta: 120ms) 74 | SensorUpdate(Left: 93cm Front: 139cm Right: 39cm Timedelta: 123ms) 75 | SensorUpdate(Left: 90cm Front: 134cm Right: 40cm Timedelta: 122ms) 76 | SensorUpdate(Left: 90cm Front: 128cm Right: 39cm Timedelta: 118ms) 77 | SensorUpdate(Left: 89cm Front: 123cm Right: 40cm Timedelta: 119ms) 78 | MotionUpdate(Left: 0 Right: 0 Timedelta: 17) 79 | SensorUpdate(Left: 92cm Front: 115cm Right: 41cm Timedelta: 117ms) 80 | SensorUpdate(Left: 93cm Front: 115cm Right: 41cm Timedelta: 118ms) 81 | SensorUpdate(Left: 93cm Front: 114cm Right: 41cm Timedelta: 117ms) 82 | SensorUpdate(Left: 92cm Front: 115cm Right: 41cm Timedelta: 118ms) 83 | SensorUpdate(Left: 93cm Front: 115cm Right: 41cm Timedelta: 117ms) 84 | SensorUpdate(Left: 93cm Front: 115cm Right: 41cm Timedelta: 118ms) 85 | SensorUpdate(Left: 93cm Front: 115cm Right: 41cm Timedelta: 117ms) 86 | SensorUpdate(Left: 93cm Front: 116cm Right: 41cm Timedelta: 119ms) 87 | SensorUpdate(Left: 92cm Front: 116cm Right: 41cm Timedelta: 117ms) 88 | SensorUpdate(Left: 93cm Front: 116cm Right: 41cm Timedelta: 118ms) 89 | SensorUpdate(Left: 93cm Front: 115cm Right: 41cm Timedelta: 118ms) 90 | SensorUpdate(Left: 93cm Front: 115cm Right: 41cm Timedelta: 118ms) 91 | SensorUpdate(Left: 93cm Front: 115cm Right: 41cm Timedelta: 118ms) 92 | SensorUpdate(Left: 93cm Front: 115cm Right: 41cm Timedelta: 116ms) 93 | SensorUpdate(Left: 92cm Front: 115cm Right: 41cm Timedelta: 118ms) 94 | SensorUpdate(Left: 92cm Front: 115cm Right: 41cm Timedelta: 118ms) 95 | SensorUpdate(Left: 92cm Front: 115cm Right: 41cm Timedelta: 118ms) 96 | SensorUpdate(Left: 92cm Front: 115cm Right: 41cm Timedelta: 117ms) 97 | SensorUpdate(Left: 92cm Front: 114cm Right: 41cm Timedelta: 117ms) 98 | SensorUpdate(Left: 92cm Front: 114cm Right: 41cm Timedelta: 118ms) 99 | SensorUpdate(Left: 92cm Front: 114cm Right: 41cm Timedelta: 117ms) 100 | SensorUpdate(Left: 93cm Front: 114cm Right: 41cm Timedelta: 117ms) 101 | SensorUpdate(Left: 93cm Front: 114cm Right: 41cm Timedelta: 118ms) 102 | SensorUpdate(Left: 93cm Front: 114cm Right: 41cm Timedelta: 117ms) 103 | SensorUpdate(Left: 93cm Front: 114cm Right: 41cm Timedelta: 117ms) 104 | MotionUpdate(Left: -300 Right: 300 Timedelta: 23) 105 | MotionUpdate(Left: 0 Right: 0 Timedelta: 217) 106 | SensorUpdate(Left: 93cm Front: 4163cm Right: 69cm Timedelta: 854ms) 107 | MotionUpdate(Left: -300 Right: 300 Timedelta: 26) 108 | MotionUpdate(Left: 0 Right: 0 Timedelta: 216) 109 | SensorUpdate(Left: 261cm Front: 4163cm Right: 103cm Timedelta: 900ms) 110 | MotionUpdate(Left: -300 Right: 300 Timedelta: 25) 111 | MotionUpdate(Left: 0 Right: 0 Timedelta: 216) 112 | SensorUpdate(Left: 263cm Front: 96cm Right: 112cm Timedelta: 163ms) 113 | SensorUpdate(Left: 265cm Front: 96cm Right: 112cm Timedelta: 162ms) 114 | SensorUpdate(Left: 264cm Front: 96cm Right: 112cm Timedelta: 162ms) 115 | SensorUpdate(Left: 264cm Front: 96cm Right: 111cm Timedelta: 163ms) 116 | SensorUpdate(Left: 262cm Front: 96cm Right: 111cm Timedelta: 161ms) 117 | SensorUpdate(Left: 261cm Front: 96cm Right: 112cm Timedelta: 161ms) 118 | SensorUpdate(Left: 264cm Front: 96cm Right: 112cm Timedelta: 162ms) 119 | SensorUpdate(Left: 264cm Front: 96cm Right: 112cm Timedelta: 162ms) 120 | SensorUpdate(Left: 265cm Front: 96cm Right: 112cm Timedelta: 162ms) 121 | SensorUpdate(Left: 263cm Front: 96cm Right: 111cm Timedelta: 162ms) 122 | SensorUpdate(Left: 263cm Front: 96cm Right: 112cm Timedelta: 162ms) 123 | SensorUpdate(Left: 261cm Front: 96cm Right: 111cm Timedelta: 162ms) 124 | SensorUpdate(Left: 262cm Front: 96cm Right: 111cm Timedelta: 161ms) 125 | SensorUpdate(Left: 263cm Front: 96cm Right: 112cm Timedelta: 162ms) 126 | SensorUpdate(Left: 261cm Front: 96cm Right: 112cm Timedelta: 161ms) 127 | SensorUpdate(Left: 261cm Front: 96cm Right: 112cm Timedelta: 162ms) 128 | SensorUpdate(Left: 261cm Front: 96cm Right: 111cm Timedelta: 162ms) 129 | SensorUpdate(Left: 261cm Front: 96cm Right: 112cm Timedelta: 161ms) 130 | SensorUpdate(Left: 261cm Front: 96cm Right: 112cm Timedelta: 160ms) 131 | SensorUpdate(Left: 263cm Front: 96cm Right: 112cm Timedelta: 162ms) 132 | SensorUpdate(Left: 262cm Front: 96cm Right: 111cm Timedelta: 162ms) 133 | SensorUpdate(Left: 261cm Front: 96cm Right: 111cm Timedelta: 161ms) 134 | SensorUpdate(Left: 261cm Front: 95cm Right: 111cm Timedelta: 163ms) 135 | SensorUpdate(Left: 262cm Front: 96cm Right: 111cm Timedelta: 160ms) 136 | SensorUpdate(Left: 263cm Front: 96cm Right: 111cm Timedelta: 162ms) 137 | SensorUpdate(Left: 261cm Front: 96cm Right: 111cm Timedelta: 161ms) 138 | MotionUpdate(Left: 300 Right: 300 Timedelta: 23) 139 | SensorUpdate(Left: 263cm Front: 95cm Right: 112cm Timedelta: 161ms) 140 | SensorUpdate(Left: 262cm Front: 88cm Right: 114cm Timedelta: 162ms) 141 | SensorUpdate(Left: 259cm Front: 82cm Right: 123cm Timedelta: 692ms) 142 | SensorUpdate(Left: 261cm Front: 54cm Right: 128cm Timedelta: 157ms) 143 | SensorUpdate(Left: 199cm Front: 49cm Right: 129cm Timedelta: 147ms) 144 | SensorUpdate(Left: 198cm Front: 45cm Right: 133cm Timedelta: 146ms) 145 | SensorUpdate(Left: 230cm Front: 4163cm Right: 4204cm Timedelta: 1261ms) 146 | SensorUpdate(Left: 263cm Front: 4163cm Right: 361cm Timedelta: 945ms) 147 | MotionUpdate(Left: -300 Right: -300 Timedelta: 26) 148 | MotionUpdate(Left: 0 Right: 0 Timedelta: 18) 149 | SensorUpdate(Left: 214cm Front: 36cm Right: 9999cm Timedelta: 1928ms) 150 | SensorUpdate(Left: 213cm Front: 36cm Right: 7101cm Timedelta: 1579ms) 151 | 37025.66498756409 152 | elapsed time : 8473.923683166504 153 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 154 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 155 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 156 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 157 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 158 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 159 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 160 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 161 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 162 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░ 163 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░ 164 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░ 165 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░ 166 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░ 167 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░ 168 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░ 169 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░ 170 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░ 171 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░ 172 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░ ░░░░░░░░░░░░░░░░░░░░░░░░ 173 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░ 174 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░ 175 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░ 176 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░ 177 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░ 178 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░ 179 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░ 180 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░ 181 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░ 182 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░ 183 | ░░░░░░░░░░░░░ ░ ↙ ░░░░░░░░░░░░░░░░░░░░░░░░░ 184 | ░░░░░░░░░░ ↙↑ ░░░░░░░░░░░░░░░░░░░░░░░░░ 185 | ░░░░░░░ ↙ ↑ ░░░░░░░░░░░░░░░░░░░░░░░░░░ 186 | ░░░░░░░ ↑ ░░░░░░░░░░░░░░░░░░░░░░░░░░ 187 | ░░░░░░░░ ↑ ░░░░░░░░░░░░░░░░░░░░░░░░░ 188 | ░░░░░░░░ ↑ ░░░░░░░░░░░░░░░░░░░░░░░░ 189 | ░░░░░░░░░ ↑ ░░░░░░░░░░░░░░░░░░░░░░░ 190 | ░░░░░░░░░ ↙ ↑ ░░░░░░░░░░░░░░░░░░░░░░ 191 | ░░░░░░░░░░ ↙↙ ↑ ░░░░░░░░░░░░░░░░░░░░ 192 | ░░░░░░░░░░ ↙ ↑ ░░░░░░░░░░░░░░░░░░ 193 | ░░░░░░░░░░░ ↑ ░░░░░░░░░░░░░░░░ 194 | ░░░░░░░░░░░ ░░░░░░░░░░░░░ 195 | ░░░░░░░░░░░░ ░░░░░░░░░░░ 196 | ░░░░░░░░░░░░ ↑ ░░░░░░░░░░░ 197 | ░░░░░░░░░░░░░ ░░░░░░░░░░░░ 198 | ░░░░░░░░░░░░░ ░░░░░░░░░░░░ 199 | ░░░░░░░░░░░░░░ ↑ ░░░░░░░░░░░░░ 200 | ░░░░░░░░░░░░░░ ░ ↙ ░░░░░░░░░░░░░░ 201 | ░░░░░░░░░░░░░░░ ░░░░ ░░░░░░░░░░░░░░ 202 | ░░░░░░░░░░░░░░░ ░░░░░░ ↑ ░░░░░░░░░░░░░░░ 203 | ░░░░░░░░░░░░░░░░ ░░░░░░░░ ░░░░░░░░░░░░░░░░ 204 | ░░░░░░░░░░░░░░░░ ░░░░░░░░ ↑ ░░░░░░░░░░░░░░░░░ 205 | ░░░░░░░░░░░░░░░░░ ░░░░░░░░░░ ↑ ░░░░░░░░░░░░░░░░░░ 206 | ░░░░░░░░░░░░░░░░░ ░░░░░░░░░ ↙ ↑ ░░░░░░░░░░░░░░░░░░░ 207 | ░░░░░░░░░░░░░░░░░░ ░░░░░░░ ↑ ░░░░░░░░░░░░░░░░░░░░ 208 | ░░░░░░░░░░░░░░░░░░ ░░░░░░ ░░░░░░░░░░░░░░░░░░░░░ 209 | ░░░░░░░░░░░░░░░░░░░ ░░░░ ↑ ░░░░░░░░░░░░░░░░░░░░░░ 210 | ░░░░░░░░░░░░░░░░░░░ ░░░ ↙ ↑ ░░░░░░░░░░░░░░░░░░░░░░░░ 211 | ░░░░░░░░░░░░░░░░░░░░ ░ ↙ →→ → →↑ ░░░░░░░░░░░░░░░░░░░░░░░░░ 212 | ░░░░░░░░░░░░░░░░░░░░X → →→ →→→→→ → →→→ →→ →→ ░░░░░░░░░░░░░░░░░░░░░░░░░░ 213 | ░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░ 214 | ░░░░░░░░░░░░░░░░░░░░ ░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 215 | ░░░░░░░░░░░░░░░░░░░░ ░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 216 | ░░░░░░░░░░░░░░░░░░░ ░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 217 | ░░░░░░░░░░░░░░░░░░░ ░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 218 | ░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 219 | ░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 220 | ░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 221 | ░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 222 | ░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 223 | ░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 224 | ░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 225 | ░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 226 | ░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 227 | ░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 228 | ░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 229 | ░░░░░░░░░░░░░░░░░░░░ ░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 230 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 231 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 232 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 233 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 234 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 235 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 236 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 237 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 238 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 239 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 240 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 241 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 242 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 243 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 244 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 245 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 246 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 247 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 248 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 249 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 250 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 251 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 252 | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 253 | -------------------------------------------------------------------------------- /test/testdata-film04.txt: -------------------------------------------------------------------------------- 1 | 24 2 | L12F97R26t25 3 | L12F98R27t25 4 | L12F95R28t25 5 | L13F96R28t25 6 | L12F96R27t25 7 | L13F97R27t25 8 | L12F97R27t24 9 | L13F95R28t26 10 | L13F96R27t25 11 | L12F96R28t24 12 | L12F97R27t26 13 | L13F96R28t24 14 | L13F95R27t25 15 | L12F97R27t25 16 | L13F97R27t25 17 | L12F96R28t25 18 | L12F97R27t25 19 | L13F96R27t26 20 | L12F95R28t24 21 | L12F95R28t26 22 | L12F97R28t25 23 | L12F97R26t24 24 | L12F97R27t26 25 | L12F96R27t24 26 | L13F96R28t25 27 | L12F95R28t26 28 | L12F111R41t27 29 | L12F97R27t25 30 | L13F111R49t27 31 | L12F97R27t26 32 | L13F98R27t25 33 | L12F97R27t25 34 | L13F98R27t25 35 | L13F97R27t24 36 | L12F95R28t26 37 | L12F96R28t24 38 | L13F96R27t25 39 | L12F96R28t26 40 | L12F96R27t24 41 | L13F98R27t25 42 | L13F111R36t27 43 | L13F97R27t25 44 | L12F97R27t26 45 | L12F97R27t24 46 | L13F96R28t25 47 | L13F95R28t25 48 | L12F97R28t25 49 | L13F96R28t25 50 | L12F96R28t25 51 | L12F97R27t25 52 | L13F97R27t24 53 | L12F97R27t26 54 | L12F97R27t24 55 | L13F97R26t25 56 | L12F97R28t26 57 | L12F96R27t24 58 | L13F97R26t25 59 | L12F97R27t25 60 | L13F111R40t29 61 | L13F97R27t25 62 | L13F97R27t24 63 | L12F96R27t26 64 | L12F96R28t24 65 | L13F95R28t25 66 | L13F97R26t26 67 | L12F97R27t24 68 | L13F97R26t25 69 | L12F96R28t25 70 | L12F96R29t25 71 | L13F97R27t24 72 | L12F97R27t26 73 | L12F97R27t25 74 | L12F96R28t24 75 | L12F98R27t26 76 | L12F97R27t24 77 | L12F97R27t25 78 | L12F98R27t26 79 | L12F111R41t27 80 | L12F99R26t25 81 | L12F111R46t27 82 | L12F98R27t26 83 | L12F111R35t27 84 | L12F96R28t25 85 | L12F96R28t25 86 | L12F96R28t24 87 | L12F97R26t26 88 | L12F97R27t25 89 | L13F95R28t24 90 | L13F97R27t26 91 | L12F111R41t27 92 | L13F97R27t25 93 | L12F111R35t28 94 | L13F98R26t24 95 | L12F96R28t26 96 | L12F97R27t24 97 | L13F96R27t25 98 | L12F97R27t25 99 | L12F96R28t25 100 | L12F96R27t26 101 | L12F96R27t24 102 | L13F98R27t26 103 | L13F111R39t28 104 | L13F97R27t24 105 | L12F111R41t28 106 | L13F111R36t27 107 | L13F96R28t25 108 | L12F96R28t26 109 | L12F96R27t24 110 | L13F97R26t25 111 | L12F96R28t24 112 | L13F98R26t26 113 | L13F97R27t25 114 | L12F96R28t24 115 | L13F97R27t26 116 | L13F98R26t24 117 | L12F95R29t26 118 | L12F97R27t24 119 | L13F96R27t25 120 | L12F96R27t25 121 | L12F98R27t25 122 | L13F98R26t25 123 | L12F98R27t25 124 | L12F97R27t25 125 | L13F97R27t25 126 | L13F111R39t27 127 | L12F97R27t26 128 | L12F97R27t24 129 | L13F98R26t25 130 | L12F111R34t28 131 | L13F97R28t24 132 | L13F95R28t26 133 | L13F97R26t24 134 | L13F98R27t25 135 | L12F98R27t26 136 | L12F97R27t24 137 | L13F96R27t25 138 | L13F96R28t25 139 | L12F97R26t25 140 | L12F96R27t25 141 | L12F96R27t26 142 | L12F96R27t25 143 | L13F98R26t24 144 | L12F98R27t26 145 | L12F97R27t24 146 | L13F97R26t25 147 | L13F97R26t26 148 | L12F96R27t24 149 | L13F97R27t25 150 | L13F96R28t25 151 | L12F96R28t25 152 | L13F97R26t24 153 | L12F96R28t26 154 | L12F111R35t27 155 | L13F97R26t25 156 | L12F97R27t25 157 | L13F98R27t24 158 | L13F95R28t26 159 | L12F97R26t25 160 | L13F96R28t24 161 | L12F98R26t26 162 | L12F97R27t24 163 | L13F97R27t25 164 | L12F96R27t26 165 | L12F97R27t24 166 | L13F97R26t25 167 | L12F97R27t25 168 | L12F97R27t25 169 | L13F96R27t24 170 | L13F96R28t26 171 | L12F97R27t25 172 | L13F96R28t24 173 | L13F96R27t26 174 | L12F97R28t24 175 | L13F97R27t25 176 | L12F96R28t26 177 | L12F98R27t24 178 | L13F111R42t28 179 | L13F97R26t25 180 | L12F97R27t26 181 | L13F110R35t27 182 | L12F97R26t25 183 | L13F97R27t25 184 | L13F98R27t24 185 | L12F97R26t26 186 | L12F97R27t25 187 | L13F97R26t24 188 | L12F96R28t26 189 | L12F96R28t24 190 | L13F96R27t25 191 | L13F97R27t25 192 | L12F98R26t25 193 | L12F97R27t25 194 | L13F96R28t25 195 | L12F111R36t27 196 | L13F97R27t25 197 | L13F97R27t25 198 | L12F97R27t26 199 | L12F111R35t26 200 | L13F99R26t26 201 | L12F112R34t26 202 | L13F96R27t26 203 | L12F98R27t25 204 | L13F97R27t24 205 | L13F111R34t28 206 | L13F96R28t24 207 | L13F97R26t26 208 | L12F97R27t25 209 | L13F111R35t27 210 | L12F111R36t27 211 | L13F97R27t25 212 | L12F97R27t25 213 | L13F111R36t28 214 | L12F99R26t24 215 | L12F111R36t28 216 | L13F97R27t25 217 | L12F98R27t25 218 | L12F97R28t25 219 | L13F97R26t25 220 | L12F95R27t25 221 | L12F111R40t28 222 | L13F98R27t25 223 | L13F111R40t28 224 | L13F97R27t24 225 | L12F96R28t26 226 | L12F96R28t25 227 | L13F98R26t24 228 | L12F111R40t28 229 | L12F98R27t25 230 | L12F111R34t27 231 | L13F97R26t26 232 | L12F98R26t24 233 | L13F97R27t25 234 | L13F96R27t25 235 | L12F97R27t25 236 | L13F96R27t24 237 | L13F98R27t26 238 | L12F97R27t25 239 | L13F96R27t24 240 | L12F97R27t25 241 | L12F98R27t25 242 | L13F97R26t25 243 | L12F97R27t26 244 | L12F98R27t24 245 | L13F96R28t25 246 | L12F97R28t25 247 | L12F98R26t25 248 | L13F112R34t28 249 | L12F97R27t24 250 | L13F97R26t25 251 | L12F97R26t25 252 | L12F96R27t25 253 | L13F97R26t24 254 | L12F97R27t25 255 | L12F97R27t26 256 | L13F97R27t24 257 | L12F97R28t26 258 | L12F97R26t24 259 | L13F97R26t26 260 | L12F111R43t28 261 | L12F96R28t25 262 | L13F111R42t28 263 | L12F97R27t24 264 | L12F98R27t25 265 | L12F97R27t26 266 | L13F97R26t24 267 | L13F111R41t28 268 | L13F111R40t27 269 | L13F111R44t28 270 | L12F111R39t28 271 | L12F98R27t24 272 | L12F97R27t26 273 | L13F111R44t28 274 | L13F96R29t24 275 | L13F98R27t26 276 | L12F111R36t26 277 | L13F96R28t26 278 | L13F97R27t25 279 | L12F98R27t25 280 | L12F98R27t25 281 | L13F111R40t27 282 | L13F97R27t25 283 | L12F95R29t26 284 | L12F97R28t24 285 | L13F97R26t25 286 | L12F97R26t25 287 | L12F97R27t25 288 | L13F97R27t24 289 | L12F97R26t26 290 | L12F96R27t25 291 | L13F97R28t24 292 | L12F96R27t26 293 | L12F97R27t24 294 | L13F111R36t28 295 | L13F96R27t25 296 | L13F97R27t24 297 | L12F97R27t26 298 | L12F97R27t24 299 | L13F97R27t26 300 | L12F95R27t26 301 | L13F97R27t24 302 | L13F97R28t25 303 | L12F96R27t25 304 | L12F96R28t25 305 | L12F97R27t24 306 | L12F98R26t26 307 | L12F97R27t25 308 | L12F97R28t24 309 | L12F97R28t26 310 | L13F97R27t24 311 | L12F97R27t25 312 | L12F96R27t26 313 | L12F97R27t24 314 | L12F97R26t25 315 | L12F96R27t25 316 | L12F96R27t25 317 | L13F111R34t28 318 | L12F96R27t24 319 | L13F97R26t25 320 | L12F97R27t25 321 | L12F111R35t27 322 | L13F96R26t25 323 | L12F98R27t25 324 | L13F97R26t25 325 | L12F96R28t25 326 | L12F98R27t25 327 | L13F111R41t28 328 | L13F111R39t27 329 | L13F97R27t25 330 | L12F112R36t27 331 | L13F96R28t25 332 | L12F97R27t26 333 | L12F97R27t24 334 | L12F97R27t25 335 | L13F97R26t25 336 | L12F111R35t27 337 | L12F97R27t26 338 | L13F111R41t27 339 | L13F98R25t26 340 | L12F111R35t27 341 | L12F97R27t25 342 | L13F112R38t28 343 | L13F111R48t28 344 | L12F111R41t28 345 | L13F97R27t25 346 | L13F97R27t24 347 | L12F98R27t26 348 | L12F111R48t27 349 | L12F96R27t25 350 | L12F99R25t26 351 | L12F111R48t27 352 | L12F111R41t28 353 | L13F96R26t24 354 | L12F97R27t26 355 | L13F111R42t28 356 | L13F98R27t24 357 | L12F96R27t26 358 | L12F97R26t24 359 | L13F97R28t25 360 | L13F95R29t26 361 | L12F111R35t26 362 | L13F97R27t26 363 | L12F97R27t24 364 | L13F111R41t28 365 | L13F98R26t25 366 | L12F111R49t28 367 | L12F111R39t28 368 | L13F111R49t28 369 | L12F111R39t27 370 | L13F111R45t28 371 | L12F96R28t26 372 | L12F111R42t27 373 | L12F99R26t25 374 | L12F111R49t28 375 | L12F112R40t28 376 | L13F97R27t25 377 | L13F111R36t27 378 | L13F98R26t26 379 | L12F110R41t28 380 | L13F96R28t24 381 | L13F97R26t26 382 | L12F97R27t24 383 | L13F97R28t25 384 | L13F96R27t25 385 | L12F111R36t27 386 | L12F97R27t26 387 | L12F97R27t24 388 | L12F111R40t28 389 | L13F97R27t24 390 | L12F96R27t26 391 | L12F111R36t27 392 | L13F97R28t25 393 | L12F96R27t25 394 | L13F97R27t24 395 | L12F97R28t26 396 | L13F96R27t25 397 | L12F98R26t24 398 | L12F111R39t28 399 | L13F111R39t27 400 | L13F111R39t28 401 | L13F97R28t26 402 | L12F98R27t24 403 | L12F111R48t28 404 | L12F111R41t28 405 | L12F98R27t25 406 | L13F98R27t25 407 | L12F97R28t25 408 | L12F111R41t28 409 | L12F97R27t25 410 | L13F111R42t27 411 | L13F97R27t25 412 | L12F96R29t25 413 | L12F97R28t25 414 | L12F96R28t25 415 | L12F96R28t25 416 | L12F96R28t25 417 | L12F97R27t25 418 | L12F98R25t26 419 | L12F110R36t27 420 | L13F97R28t25 421 | L13F97R26t25 422 | L12F96R29t24 423 | L12F97R27t26 424 | L13F98R26t25 425 | L12F96R28t24 426 | L12F98R27t26 427 | L13F111R42t27 428 | L13F99R26t25 429 | L12F98R26t26 430 | L12F111R36t26 431 | L12F97R27t26 432 | L12F111R35t26 433 | L13F97R27t26 434 | L12F97R28t25 435 | L12F97R28t25 436 | L12F111R45t28 437 | L13F98R27t24 438 | L12F97R26t25 439 | L12F111R40t28 440 | L13F111R44t28 441 | L13F97R27t25 442 | L13F111R49t27 443 | L13F96R27t26 444 | L13F96R28t25 445 | L12F96R28t24 446 | L12F97R27t26 447 | L13F97R27t24 448 | L12F96R28t25 449 | L12F96R28t26 450 | L13F96R27t24 451 | L12F96R28t25 452 | L12F97R27t25 453 | L13F98R27t25 454 | L12F97R27t26 455 | L12F98R27t24 456 | L13F96R28t25 457 | L13F111R35t28 458 | L12F111R36t28 459 | L12F97R27t25 460 | L12F97R27t24 461 | L12F96R27t26 462 | L12F97R27t24 463 | L13F97R26t25 464 | L12F97R27t25 465 | L12F97R26t25 466 | L13F97R28t25 467 | L12F96R28t25 468 | L12F97R27t25 469 | L13F111R36t27 470 | L12F98R27t25 471 | L12F111R41t28 472 | L12F97R27t24 473 | L12F97R27t26 474 | L12F98R26t24 475 | L12F97R27t25 476 | L12F97R27t26 477 | L13F96R28t24 478 | L13F99R26t26 479 | L12F98R27t24 480 | L13F96R27t25 481 | L12F95R29t26 482 | L12F111R36t26 483 | L12F96R28t26 484 | L12F96R27t24 485 | L13F97R27t25 486 | L13F97R26t26 487 | L12F97R27t24 488 | L13F97R27t25 489 | L12F97R26t25 490 | L12F97R27t25 491 | L13F96R28t24 492 | L12F96R28t26 493 | L12F111R46t28 494 | L13F99R26t24 495 | L12F96R28t26 496 | L12F96R28t24 497 | L13F97R27t26 498 | L12F96R28t26 499 | L13F96R28t24 500 | L13F111R35t28 501 | L13F97R27t24 502 | L13F96R28t25 503 | L12F96R27t26 504 | L12F96R28t24 505 | L13F111R49t28 506 | L12F97R27t25 507 | L13F97R27t25 508 | L12F98R26t25 509 | L12F97R27t25 510 | L12F97R27t25 511 | L13F96R27t24 512 | L12F97R26t26 513 | L12F96R28t25 514 | L13F111R40t27 515 | L13F97R28t25 516 | L12F96R28t25 517 | L12F97R27t25 518 | L13F111R36t28 519 | L12F96R27t24 520 | L12F98R26t25 521 | L12F97R27t25 522 | L12F97R28t25 523 | L12F97R27t24 524 | L12F97R27t26 525 | L13F98R26t25 526 | L13F111R39t27 527 | L13F111R39t28 528 | L13F98R26t25 529 | L12F98R27t25 530 | L12F98R27t25 531 | L12F111R45t27 532 | L12F99R26t26 533 | L13F97R27t25 534 | L13F98R27t25 535 | L12F98R27t25 536 | L13F111R35t27 537 | L13F96R27t25 538 | L12F95R28t26 539 | L13F97R27t25 540 | L12F111R49t28 541 | L12F99R26t24 542 | L12F111R49t29 543 | L13F97R26t25 544 | L12F96R28t25 545 | L12F111R36t27 546 | L13F97R27t25 547 | L12F111R35t27 548 | L12F97R27t26 549 | L12F111R40t27 550 | L12F96R28t25 551 | L12F111R35t28 552 | L13F97R27t24 553 | L12F96R27t25 554 | L12F111R35t27 555 | L12F96R28t25 556 | L12F98R27t25 557 | L13F99R25t25 558 | L12F96R28t25 559 | L12F96R28t25 560 | L13F97R26t25 561 | L13F95R28t24 562 | L12F97R27t26 563 | L13F96R28t25 564 | L13F97R27t24 565 | L12F97R27t26 566 | L13F111R40t27 567 | L13F98R27t25 568 | L13F111R40t28 569 | L12F98R27t25 570 | L12F98R27t25 571 | L13F96R27t24 572 | L12F97R28t26 573 | L12F97R27t25 574 | L13F97R27t24 575 | L12F111R37t28 576 | L12F97R27t24 577 | L12F98R27t26 578 | L13F111R40t29 579 | L12F96R27t24 580 | L12F95R28t25 581 | L12F96R27t25 582 | L12F111R34t27 583 | L12F96R28t26 584 | L12F96R27t24 585 | L13F97R27t25 586 | L12F96R28t25 587 | L12F96R28t25 588 | L13F97R26t24 589 | L12F97R27t26 590 | L12F97R27t25 591 | L13F111R41t27 592 | L13F111R40t28 593 | L13F99R26t25 594 | L12F98R26t25 595 | L12F111R41t28 596 | L12F98R26t24 597 | L13F97R27t25 598 | L12F96R28t26 599 | L12F97R26t24 600 | L13F111R41t28 601 | L13F97R28t24 602 | L12F97R27t26 603 | L12F97R27t25 604 | L12F111R36t27 605 | L13F97R27t25 606 | L12F98R26t24 607 | L12F96R28t26 608 | L12F97R27t24 609 | L12F97R27t25 610 | L12F96R28t26 611 | L13F97R26t24 612 | L13F95R29t26 613 | L12F96R27t24 614 | L13F112R35t28 615 | L12F97R28t25 616 | L13F111R35t27 617 | L13F97R28t26 618 | L12F96R27t24 619 | L12F97R27t26 620 | L12F96R28t25 621 | L12F111R36t27 622 | L13F97R27t25 623 | L12F96R27t24 624 | L12F111R41t28 625 | L12F98R27t26 626 | L13F97R27t24 627 | L12F95R28t25 628 | L12F98R27t25 629 | L13F97R26t25 630 | L12F96R27t25 631 | L12F98R26t25 632 | L12F97R27t25 633 | L12F97R26t24 634 | L12F97R28t26 635 | L12F97R28t25 636 | L12F96R28t24 637 | L12F97R28t26 638 | L13F97R27t24 639 | L12F97R28t26 640 | L12F97R27t24 641 | L13F97R26t25 642 | L12F97R28t26 643 | L12F97R27t24 644 | L13F111R45t28 645 | L12F112R47t29 646 | L12F97R27t24 647 | L13F111R43t28 648 | L12F97R27t25 649 | L12F97R27t25 650 | L13F97R28t24 651 | L13F111R36t28 652 | L13F96R27t25 653 | L12F97R27t25 654 | L12F96R27t25 655 | L13F111R40t28 656 | L13F96R27t24 657 | L13F97R27t26 658 | L12F110R39t27 659 | L13F97R27t26 660 | L13F97R26t25 661 | L13F97R28t25 662 | L12F97R27t25 663 | L13F98R26t24 664 | L12F111R40t28 665 | L13F96R28t26 666 | L12F96R27t24 667 | L13F111R41t28 668 | L13F111R36t27 669 | L13F97R27t25 670 | L12F98R26t25 671 | L12F97R27t25 672 | L12F97R27t25 673 | L12F98R26t24 674 | L12F98R27t26 675 | L12F97R26t24 676 | L13F97R26t25 677 | L12F96R27t26 678 | L12F97R27t24 679 | L13F111R35t28 680 | L12F98R27t24 681 | L12F97R26t25 682 | L12F97R26t26 683 | L12F97R28t24 684 | L13F98R27t25 685 | L12F111R40t27 686 | L13F97R27t26 687 | L12F99R25t25 688 | L13F111R40t27 689 | L13F98R27t25 690 | L12F96R28t25 691 | L12F96R29t25 692 | L12F111R49t29 693 | L12F97R27t24 694 | L13F96R27t25 695 | L12F96R29t25 696 | L12F98R26t25 697 | L13F97R27t26 698 | L12F97R26t24 699 | L13F96R27t26 700 | L13F98R26t24 701 | L12F97R28t25 702 | L12F96R27t26 703 | L12F111R35t26 704 | L12F96R27t26 705 | L12F111R41t27 706 | L13F97R26t25 707 | L13F111R41t28 708 | L13F97R27t25 709 | L12F98R26t25 710 | L13F111R41t27 711 | L13F97R26t25 712 | L12F97R27t25 713 | L12F98R25t25 714 | L12F97R27t25 715 | L12F97R27t24 716 | L12F98R26t26 717 | L12F111R36t27 718 | L12F97R27t25 719 | L13F111R45t28 720 | L12F98R26t24 721 | L12F112R35t28 722 | L12F97R26t25 723 | L12F97R27t25 724 | L12F97R27t25 725 | L13F111R39t27 726 | L13F97R26t25 727 | L12F97R27t26 728 | L12F96R28t24 729 | L13F98R27t25 730 | L12F96R28t25 731 | L12F97R27t25 732 | L13F111R40t28 733 | L13F97R27t24 734 | L12F97R26t26 735 | L12F97R27t24 736 | L13F98R27t25 737 | L12F111R45t29 738 | L12F110R35t27 739 | L12F97R27t26 740 | L12F98R27t24 741 | L13F96R27t25 742 | L12F96R28t26 743 | L12F96R27t24 744 | L13F111R35t28 745 | L13F99R26t24 746 | L13F111R41t28 747 | L13F96R28t25 748 | L13F97R27t25 749 | L12F97R27t25 750 | L12F97R27t24 751 | L12F97R27t26 752 | L12F96R28t25 753 | L13F97R27t24 754 | L12F97R27t26 755 | L12F97R27t24 756 | L12F98R26t25 757 | L12F111R35t28 758 | L12F98R27t25 759 | L12F97R27t25 760 | L13F96R27t24 761 | L12F111R36t28 762 | L13F96R27t25 763 | L12F96R27t24 764 | L12F111R36t28 765 | L13F95R28t24 766 | L12F97R27t26 767 | L13F97R27t25 768 | L12F97R28t25 769 | L12F96R27t25 770 | L13F97R27t24 771 | L12F97R28t26 772 | L12F97R26t24 773 | L13F97R26t25 774 | L12F98R27t26 775 | L12F97R27t24 776 | L13F97R27t25 777 | L12F96R29t25 778 | L12F96R27t26 779 | L13F111R40t28 780 | L13F112R40t27 781 | L13F97R27t25 782 | L12F95R29t25 783 | L13F97R26t25 784 | L13F98R26t25 785 | L12F96R28t25 786 | L12F97R26t25 787 | L13F96R27t24 788 | L12F96R28t25 789 | L12F111R48t29 790 | L13F111R40t27 791 | L13F97R27t25 792 | L13F96R27t25 793 | L12F97R27t25 794 | L13F97R27t25 795 | L12F111R37t27 796 | L13F97R27t25 797 | L12F98R27t25 798 | L13F111R41t28 799 | L13F97R26t25 800 | L12F96R28t24 801 | L12F97R27t26 802 | L12F96R27t24 803 | L13F97R28t25 804 | L12F98R26t26 805 | L12F96R27t24 806 | L12F97R26t25 807 | L12F97R27t25 808 | L12F97R27t25 809 | L13F97R27t24 810 | L12F97R27t26 811 | L12F96R27t25 812 | L13F97R26t24 813 | L12F96R27t26 814 | L12F97R26t24 815 | L13F111R48t28 816 | L12F97R28t26 817 | L12F96R27t25 818 | L13F96R28t25 819 | L12F96R27t25 820 | L12F97R27t25 821 | L12F97R27t25 822 | L12F97R26t25 823 | L12F111R41t28 824 | L12F98R27t24 825 | L12F111R48t29 826 | L12F111R44t28 827 | L13F97R27t24 828 | L12F111R36t28 829 | L13F111R48t28 830 | L12F98R25t25 831 | L12F111R49t28 832 | L13F98R27t24 833 | L12F96R28t26 834 | L12F96R28t25 835 | L13F98R26t24 836 | L12F111R40t28 837 | L13F96R27t25 838 | L12F97R27t25 839 | L12F97R26t25 840 | L12F96R27t25 841 | L12F97R27t25 842 | L13F96R28t24 843 | L12F97R26t26 844 | L12F98R27t24 845 | L13F96R28t25 846 | L12F97R27t26 847 | L12F97R26t24 848 | L13F96R27t25 849 | L13F97R28t25 850 | L12F98R27t25 851 | L13F111R48t28 852 | L13F96R28t25 853 | L13F96R27t25 854 | L12F96R27t24 855 | L12F97R28t26 856 | L13F96R28t25 857 | L12F96R26t25 858 | L12F96R27t26 859 | L12F96R28t24 860 | L12F111R40t28 861 | L12F97R26t25 862 | L12F111R48t28 863 | L13F111R40t28 864 | L13F99R26t24 865 | L12F97R28t26 866 | L12F111R35t27 867 | L12F97R26t25 868 | L12F96R28t25 869 | L13F96R27t24 870 | L12F96R28t25 871 | L12F97R27t26 872 | L13F97R26t24 873 | L12F97R27t25 874 | L12F111R41t27 875 | L12F97R27t26 876 | L13F98R26t25 877 | L12F96R29t24 878 | L12F98R27t26 879 | L13F96R28t24 880 | L13F97R26t25 881 | L12F96R28t25 882 | L13F97R27t25 883 | L12F96R28t26 884 | L12F98R27t24 885 | L13F98R27t25 886 | L13F98R27t25 887 | L12F97R27t25 888 | L13F97R27t25 889 | L12F96R28t25 890 | L12F97R27t25 891 | L13F97R26t24 892 | L12F96R28t26 893 | L12F97R27t25 894 | L13F98R27t24 895 | L12F96R28t26 896 | L12F97R26t24 897 | L13F97R26t26 898 | L12F95R27t25 899 | L12F96R27t25 900 | L13F96R27t25 901 | L12F96R28t25 902 | L12F97R27t25 903 | L13F97R26t24 904 | L12F95R29t25 905 | L12F96R28t26 906 | L13F96R28t24 907 | L12F96R28t26 908 | L12F97R27t24 909 | L13F96R28t25 910 | L13F96R28t25 911 | L12F97R27t25 912 | L13F96R28t25 913 | L13F96R29t25 914 | L12F96R28t25 915 | L13F97R27t24 916 | L12F97R28t26 917 | L12F96R27t25 918 | L13F97R27t24 919 | L12F97R26t26 920 | L12F97R27t24 921 | L13F97R27t25 922 | L13F96R27t25 923 | L12F96R27t25 924 | L13F96R27t25 925 | L12F96R28t25 926 | L12F111R42t28 927 | L12F97R27t24 928 | L13F97R26t25 929 | L12F96R27t26 930 | L12F97R27t24 931 | L13F96R28t25 932 | L13F98R26t25 933 | L12F98R27t25 934 | L13F97R27t25 935 | L12F97R26t25 936 | L12F96R28t25 937 | L13F111R41t28 938 | L13F111R48t28 939 | L12F97R27t26 940 | L13F97R27t24 941 | L12F97R27t25 942 | L12F98R27t25 943 | L13F98R26t25 944 | L12F97R27t25 945 | L12F111R41t27 946 | L12F96R28t26 947 | L13F98R26t24 948 | L12F62R23t23 949 | L12F97R28t25 950 | L12F96R28t25 951 | L13F97R27t25 952 | L13F97R27t25 953 | L12F97R27t25 954 | L13F98R26t24 955 | L12F97R27t26 956 | L12F97R27t25 957 | L13F97R26t24 958 | L12F96R28t26 959 | L12F97R27t24 960 | L13F98R26t25 961 | L12F97R26t25 962 | L12F97R27t25 963 | L13F98R26t25 964 | L12F96R28t25 965 | L12F97R27t25 966 | L13F98R26t24 967 | L12F97R27t26 968 | L12F97R27t25 969 | L13F98R26t24 970 | L12F98R26t26 971 | L12F96R27t24 972 | L13F97R26t25 973 | L12F97R27t25 974 | L12F96R27t25 975 | L13F98R26t25 976 | L12F98R26t25 977 | L12F98R27t25 978 | L12F96R27t25 979 | L13F95R27t26 980 | L12F96R27t25 981 | L13F97R27t24 982 | L12F97R27t25 983 | L12F96R28t25 984 | L13F111R42t28 985 | L13F98R27t25 986 | L12F97R28t25 987 | L12F97R27t25 988 | L13F97R27t24 989 | L12F96R28t26 990 | L12F99R26t25 991 | L13F111R40t27 992 | L13F96R27t25 993 | L12F95R27t24 994 | L12F97R27t26 995 | L13F97R26t24 996 | L13F98R26t25 997 | L12F97R27t26 998 | L13F111R40t27 999 | L13F98R26t25 1000 | L13F96R28t24 1001 | L12F96R28t26 1002 | L13F98R26t25 1003 | L12F95R28t24 1004 | L12F97R27t26 1005 | L13F97R26t24 1006 | L12F96R29t26 1007 | L12F98R27t25 1008 | L13F111R36t27 1009 | L12F111R35t27 1010 | L12F96R28t25 1011 | L12F96R27t25 1012 | L13F97R27t25 1013 | L12F96R28t25 1014 | L12F97R27t25 1015 | L13F111R42t27 1016 | L12F98R27t25 1017 | L12F97R27t26 1018 | L12F96R27t25 1019 | L13F96R27t25 1020 | L12F97R27t25 1021 | L12F97R27t25 1022 | L12F97R27t25 1023 | L13F96R27t25 1024 | L12F96R27t25 1025 | L12F97R27t24 1026 | L12F97R27t26 1027 | L12F96R27t24 1028 | L12F97R27t25 1029 | L12F97R27t26 1030 | L12F97R27t24 1031 | L12F97R28t25 1032 | L12F96R27t25 1033 | L13F96R28t25 1034 | L13F111R41t28 1035 | L13F99R25t25 1036 | L12F98R26t25 1037 | L13F97R27t24 1038 | L12F95R29t25 1039 | L12F97R27t26 1040 | L13F96R27t24 1041 | L12F97R27t25 1042 | L12F97R27t25 1043 | L12F97R27t25 1044 | L12F111R41t27 1045 | L12F97R28t25 1046 | L12F97R27t26 1047 | L13F96R27t24 1048 | L12F96R28t25 1049 | L12F97R27t25 1050 | L12F98R26t25 1051 | L12F96R28t25 1052 | L12F98R27t25 1053 | L12F97R27t25 1054 | L12F97R26t24 1055 | L12F97R27t26 1056 | L12F97R27t25 1057 | L13F111R35t27 1058 | L12F96R26t26 1059 | L12F95R28t24 1060 | L12F96R27t26 1061 | L12F97R27t25 1062 | L13F111R48t27 1063 | L13F95R28t26 1064 | L13F96R28t24 1065 | L13F97R28t26 1066 | L12F96R28t25 1067 | L13F98R26t24 1068 | L12F96R28t26 1069 | L12F96R28t24 1070 | L13F96R28t25 1071 | L13F96R27t25 1072 | L12F97R27t25 1073 | L13F97R27t25 1074 | L12F98R26t25 1075 | L12F98R26t25 1076 | L13F97R26t24 1077 | L12F96R27t25 1078 | L12F97R27t26 1079 | L13F97R26t24 1080 | L12F97R27t25 1081 | L12F97R26t25 1082 | L12F97R27t25 1083 | L12F99R25t24 1084 | L12F97R27t26 1085 | L12F97R27t25 1086 | L12F97R26t24 1087 | L12F98R26t26 1088 | L12F97R27t24 1089 | L13F96R27t25 1090 | L12F96R28t26 1091 | L12F96R28t24 1092 | L13F96R28t25 1093 | L12F96R28t25 1094 | L12F97R27t25 1095 | L13F96R29t24 1096 | L12F97R27t26 1097 | L12F97R26t26 1098 | L13F96R27t24 1099 | L12F96R27t26 1100 | L12F97R28t24 1101 | L13F97R27t25 1102 | L12F97R27t26 1103 | L12F97R27t24 1104 | L13F97R27t25 1105 | L12F96R28t25 1106 | L12F97R28t25 1107 | L13F97R27t24 1108 | L12F96R28t26 1109 | L12F97R27t25 1110 | L13F98R26t24 1111 | L12F96R28t26 1112 | L12F96R27t24 1113 | L13F111R36t28 1114 | L13F98R26t25 1115 | L13F111R49t27 1116 | L12F97R27t26 1117 | L13F96R27t24 1118 | L12F97R26t25 1119 | L12F98R27t26 1120 | L12F97R26t24 1121 | L12F97R26t25 1122 | L12F97R27t25 1123 | L12F97R27t25 1124 | L12F97R26t25 1125 | L12F96R27t25 1126 | L12F99R25t25 1127 | L12F111R41t27 1128 | L13F96R26t25 1129 | L12F97R27t26 1130 | L12F96R10t24 1131 | el300er300cor-25t23 1132 | L12F96R27t25 1133 | L12F97R27t25 1134 | L13F95R29t24 1135 | L12F96R29t26 1136 | L12F97R27t25 1137 | L13F95R28t25 1138 | L12F95R27t25 1139 | L12F95R28t25 1140 | L13F95R28t25 1141 | L13F95R28t24 1142 | L12F96R28t26 1143 | L12F56R26t23 1144 | L12F72R11t21 1145 | L12F95R40t26 1146 | L13F101R43t27 1147 | L12F98R42t26 1148 | L12F97R46t27 1149 | L12F98R44t25 1150 | L12F97R43t26 1151 | L12F95R42t25 1152 | L12F92R44t26 1153 | L12F94R47t27 1154 | L12F92R36t24 1155 | L12F60R23t23 1156 | L12F89R30t24 1157 | L12F88R30t25 1158 | L12F88R28t24 1159 | L12F86R32t25 1160 | L12F88R41t26 1161 | L12F86R9999t300 1162 | L13F72R12t24 1163 | L13F67R12t22 1164 | L13F62R12t23 1165 | L13F68R12t23 1166 | L12F64R12t21 1167 | L12F65R12t24 1168 | L12F88R11t23 1169 | L12F63R12t22 1170 | L12F65R12t22 1171 | L12F63R11t22 1172 | L12F62R12t22 1173 | L12F62R11t22 1174 | L12F60R11t23 1175 | L12F59R11t21 1176 | L12F57R11t22 1177 | L12F57R11t21 1178 | L12F57R11t22 1179 | L12F55R11t21 1180 | L12F54R11t22 1181 | L12F54R10t21 1182 | L12F53R11t22 1183 | L12F52R10t21 1184 | L12F51R10t21 1185 | L12F50R11t21 1186 | L12F50R11t22 1187 | L12F48R10t20 1188 | L12F48R10t22 1189 | L12F47R10t20 1190 | L12F46R10t21 1191 | L12F67R10t23 1192 | L12F54R10t21 1193 | L12F67R10t22 1194 | L12F64R10t22 1195 | L12F44R10t21 1196 | L12F61R10t22 1197 | L12F61R9t20 1198 | L12F42R10t21 1199 | L12F59R9t20 1200 | L12F58R10t23 1201 | L12F59R9t20 1202 | L12F40R9t19 1203 | L13F57R9t21 1204 | L13F54R9t19 1205 | L13F53R9t21 1206 | L14F53R10t21 1207 | L14F54R11t22 1208 | L14F88R11t23 1209 | L14F53R12t22 1210 | L14F61R13t22 1211 | L14F124R26t28 1212 | L14F96R26t25 1213 | L14F95R26t24 1214 | L14F99R26t26 1215 | L13F96R27t25 1216 | L13F64R19t23 1217 | L14F140R28t29 1218 | L14F95R28t24 1219 | L13F43R29t23 1220 | L13F72R30t23 1221 | L14F88R30t25 1222 | L13F87R31t24 1223 | L13F62R22t23 1224 | L13F57R25t23 1225 | L13F85R32t24 1226 | L14F56R26t23 1227 | L14F85R0t21 1228 | el0er0cor0t17 1229 | L13F85R0t21 1230 | L13F57R25t23 1231 | L14F60R22t22 1232 | L13F55R9999t299 1233 | L13F58R9999t301 1234 | L14F130R18t29 1235 | L14F55R9999t300 1236 | L14F130R18t29 1237 | L14F55R9999t299 1238 | L14F131R17t28 1239 | L14F57R9999t299 1240 | L14F131R34t30 1241 | L14F58R9999t300 1242 | L14F124R23t30 1243 | L14F53R9999t299 1244 | L14F53R9999t300 1245 | L14F57R9999t300 1246 | L14F58R9999t302 1247 | L14F55R9999t300 1248 | L14F57R9999t301 1249 | L13F57R9999t300 1250 | L13F58R9999t301 1251 | L14F129R17t30 1252 | L14F48R9999t298 1253 | L14F57R9999t301 1254 | L13F55R9999t300 1255 | L14F57R9999t301 1256 | L14F56R9999t301 1257 | L14F58R9999t300 1258 | L14F57R9999t301 1259 | L14F54R9999t301 1260 | L14F56R9999t301 1261 | L14F57R9999t300 1262 | L14F57R9999t300 1263 | L14F57R9999t302 1264 | L14F54R9999t300 1265 | L14F56R9999t301 1266 | L13F57R9999t300 1267 | L13F58R9999t301 1268 | L13F57R9999t301 1269 | L13F57R9999t300 1270 | L13F58R9999t301 1271 | L13F56R9999t302 1272 | L14F56R9999t301 1273 | L13F55R9999t300 1274 | L13F57R9999t300 1275 | L14F57R9999t302 1276 | L13F54R9999t300 1277 | L13F130R17t28 1278 | L14F58R9999t300 1279 | L13F57R9999t301 1280 | L14F57R9999t301 1281 | L13F56R9999t301 1282 | L13F55R9999t300 1283 | L13F58R9999t301 1284 | L14F57R9999t301 1285 | L14F56R9999t301 1286 | L14F57R9999t300 1287 | L14F56R9999t300 1288 | L14F56R9999t301 1289 | L14F129R36t31 1290 | L14F54R9999t299 1291 | L14F131R34t29 1292 | L13F57R9999t299 1293 | L14F130R18t29 1294 | L14F130R20t28 1295 | L14F131R34t28 1296 | L14F55R9999t300 1297 | L14F129R17t29 1298 | L14F48R9999t299 1299 | L14F58R9999t300 1300 | L13F131R18t29 1301 | L14F58R9999t300 1302 | L13F57R9999t301 1303 | L13F56R9999t301 1304 | L13F57R9999t300 1305 | L13F56R9999t300 1306 | L13F58R9999t301 1307 | L13F58R9999t301 1308 | L13F58R9999t301 1309 | L13F55R9999t300 1310 | L13F57R9999t301 1311 | L13F56R9999t301 1312 | L13F57R9999t300 1313 | L13F58R9999t301 1314 | L14F54R9999t301 1315 | L14F57R9999t302 1316 | L13F130R18t28 1317 | L14F87R50t26 1318 | L13F50R9999t299 1319 | L13F57R9999t300 1320 | L13F58R9999t301 1321 | L13F56R9999t301 1322 | L13F58R9999t301 1323 | L13F58R9999t300 1324 | L13F130R18t29 1325 | L14F56R9999t300 1326 | L13F57R9999t301 1327 | L14F55R9999t300 1328 | L13F131R34t30 1329 | L14F57R9999t299 1330 | L14F124R23t28 1331 | L14F87R9999t302 1332 | L14F57R9999t301 1333 | L14F55R9999t300 1334 | L14F130R18t29 1335 | L14F57R9999t299 1336 | L14F130R18t29 1337 | L14F87R51t26 1338 | L13F88R9999t301 1339 | L14F56R9999t301 1340 | L14F124R23t29 1341 | L14F57R24t23 1342 | L13F104R41t27 1343 | L14F57R24t23 1344 | L14F51R30t22 1345 | L13F55R9999t299 1346 | L14F55R9999t301 1347 | L14F129R19t29 1348 | L14F49R9999t299 1349 | L14F58R9999t301 1350 | L14F56R9999t300 1351 | L14F57R9999t301 1352 | L14F129R17t29 1353 | L14F48R9999t299 1354 | L14F57R9999t301 1355 | L14F57R9999t300 1356 | L14F57R9999t301 1357 | L14F129R17t29 1358 | L14F47R9999t299 1359 | L14F57R9999t301 1360 | L14F130R18t28 1361 | L14F130R18t27 1362 | L14F87R52t27 1363 | L13F58R9999t300 1364 | L14F56R9999t301 1365 | L14F56R9999t300 1366 | L14F125R39t30 1367 | L13F57R9999t299 1368 | L14F58R9999t301 1369 | L14F56R9999t301 1370 | L14F130R34t29 1371 | L13F56R9999t299 1372 | L14F57R9999t301 1373 | L14F130R33t29 1374 | L13F86R9999t302 1375 | L14F57R9999t301 1376 | L14F57R9999t300 1377 | L14F130R18t29 1378 | L14F87R9999t301 1379 | L14F57R9999t301 1380 | L14F56R9999t301 1381 | L13F57R9999t301 1382 | L13F57R9999t300 1383 | L13F57R9999t301 1384 | L13F56R9999t301 1385 | L13F131R35t30 1386 | L14F56R9999t299 1387 | L14F57R9999t301 1388 | L13F130R19t29 1389 | L14F130R33t27 1390 | L13F57R9999t300 1391 | L13F57R9999t301 1392 | L13F57R9999t300 1393 | L13F58R9999t302 1394 | L13F130R18t28 1395 | L14F50R9999t299 1396 | L13F57R9999t301 1397 | L13F58R9999t301 1398 | L13F54R9999t300 1399 | L13F57R9999t301 1400 | L13F56R9999t301 1401 | L13F57R9999t301 1402 | L13F57R9999t301 1403 | L13F58R9999t301 1404 | L13F56R9999t301 1405 | L13F88R9999t302 1406 | L13F55R9999t300 1407 | L13F57R9999t301 1408 | L13F57R9999t301 1409 | L14F57R9999t300 1410 | L13F58R9999t301 1411 | L13F54R9999t301 1412 | L13F57R9999t301 1413 | L13F57R9999t300 1414 | L13F57R9999t300 1415 | L13F57R9999t301 1416 | L13F57R9999t301 1417 | L14F56R9999t301 1418 | L14F57R9999t300 1419 | L13F58R9999t301 1420 | L14F130R18t30 1421 | L14F57R9999t299 1422 | L14F57R9999t300 1423 | L13F57R9999t301 1424 | L13F54R9999t301 1425 | L13F57R9999t301 1426 | L13F58R9999t300 1427 | L14F56R9999t300 1428 | L14F57R9999t301 1429 | L14F57R9999t302 1430 | L14F57R9999t301 1431 | L14F124R39t29 1432 | L14F57R9999t299 1433 | L14F55R9999t301 1434 | L14F57R9999t301 1435 | L14F130R18t29 1436 | L14F57R9999t299 1437 | L13F57R9999t300 1438 | L14F56R9999t301 1439 | L14F56R9999t301 1440 | L14F57R9999t301 1441 | L14F57R9999t300 1442 | L14F57R9999t301 1443 | L14F56R9999t301 1444 | L14F130R18t29 1445 | L14F57R9999t299 1446 | L14F131R35t30 1447 | L14F57R9999t300 1448 | L14F58R9999t301 1449 | L14F129R19t29 1450 | L14F48R9999t299 1451 | L14F130R19t28 1452 | L14F87R9999t302 1453 | el-300er300cor25t24 1454 | el0er0cor0t216 1455 | L22F78R10t24 1456 | L24F81R21t25 1457 | L27F114R28t28 1458 | L27F114R27t28 1459 | L26F75R18t25 1460 | L26F114R28t28 1461 | L27F106R36t27 1462 | L26F115R28t29 1463 | L26F116R28t28 1464 | L26F116R37t28 1465 | L26F108R36t28 1466 | L26F115R27t28 1467 | L26F106R36t27 1468 | L26F116R37t29 1469 | L26F115R38t29 1470 | L26F116R28t27 1471 | L26F115R29t29 1472 | L26F114R29t28 1473 | L26F115R28t27 1474 | L26F79R16t25 1475 | L25F108R36t27 1476 | L26F115R37t29 1477 | L25F107R36t28 1478 | L26F115R37t28 1479 | L25F116R29t28 1480 | L26F115R27t28 1481 | L26F75R19t24 1482 | L26F106R29t27 1483 | L26F107R36t29 1484 | L26F116R28t27 1485 | L26F107R36t28 1486 | L26F116R37t29 1487 | L26F115R37t28 1488 | L25F108R35t28 1489 | L26F107R36t27 1490 | L26F115R37t29 1491 | L25F108R36t28 1492 | L26F116R28t28 1493 | L26F116R29t28 1494 | L26F115R28t28 1495 | L26F114R29t28 1496 | L26F106R36t29 1497 | L26F107R36t28 1498 | L26F115R37t28 1499 | L25F116R28t28 1500 | L26F114R29t28 1501 | L26F115R28t27 1502 | L26F107R28t28 1503 | L26F116R37t29 1504 | L25F115R29t27 1505 | L26F114R28t29 1506 | L26F113R28t28 1507 | L26F115R28t27 1508 | L26F114R28t28 1509 | L26F114R29t28 1510 | L27F113R37t28 1511 | L26F116R27t28 1512 | L26F106R36t29 1513 | L26F115R28t27 1514 | L26F107R36t28 1515 | L26F115R27t28 1516 | L26F115R28t27 1517 | L26F106R36t29 1518 | L26F115R28t28 1519 | L26F107R36t27 1520 | L26F115R28t28 1521 | L26F115R28t28 1522 | L26F98R28t27 1523 | el300er300cor-25t23 1524 | L26F107R36t27 1525 | L26F79R16t25 1526 | L27F80R36t25 1527 | L27F105R36t28 1528 | L25F74R12t24 1529 | L26F70R13t22 1530 | L28F67R15t24 1531 | L32F62R28t24 1532 | L32F64R25t25 1533 | L33F62R25t24 1534 | L77F47R26t26 1535 | L47F75R26t26 1536 | L50F72R26t25 1537 | L52F68R26t26 1538 | L40F80R26t25 1539 | L41F51R26t24 1540 | L41F49R26t24 1541 | L51F38R26t23 1542 | L51F38R27t24 1543 | L40F50R28t24 1544 | L19F69R28t24 1545 | L16F69R28t23 1546 | L15F98R26t25 1547 | L14F98R27t26 1548 | L14F70R29t23 1549 | L13F76R30t24 1550 | L12F70R30t23 1551 | L12F59R31t23 1552 | L11F58R29t23 1553 | L11F59R31t23 1554 | L10F72R29t23 1555 | L10F70R29t24 1556 | L9F72R28t21 1557 | L9F89R29t24 1558 | L8F34R29t19 1559 | L8F87R29t24 1560 | L7F86R30t24 1561 | L6F36R30t19 1562 | L6F34R30t20 1563 | L6F35R30t20 1564 | L5F33R31t20 1565 | L4F36R31t20 1566 | el0er0cor0t16 1567 | L4F82R32t23 1568 | L3F83R32t22 1569 | L3F81R32t23 1570 | L2F81R32t22 1571 | L3F82R33t24 1572 | L2F78R32t22 1573 | L2F82R32t23 1574 | L2F82R33t22 1575 | L2F82R32t23 1576 | L2F82R32t24 1577 | L2F82R32t22 1578 | L2F81R32t23 1579 | L2F82R32t23 1580 | L3F82R32t23 1581 | L2F82R32t22 1582 | L2F82R32t23 1583 | L2F82R32t22 1584 | L2F82R32t23 1585 | L2F82R32t22 1586 | L2F82R32t24 1587 | L2F82R32t22 1588 | L2F82R32t23 1589 | L2F82R32t22 1590 | L2F82R32t23 1591 | L2F82R32t23 1592 | L2F82R32t23 1593 | L2F82R32t23 1594 | L2F82R32t22 1595 | L2F82R32t23 1596 | L2F82R32t22 1597 | L2F82R32t23 1598 | L2F82R32t23 1599 | L2F82R32t23 1600 | L2F82R32t22 1601 | L2F82R32t23 1602 | L2F82R32t22 1603 | L2F82R32t23 1604 | L2F82R32t22 1605 | L2F81R32t24 1606 | L2F82R32t23 1607 | L2F82R32t22 1608 | L2F82R32t23 1609 | L2F82R32t22 1610 | L2F82R32t24 1611 | L2F82R32t22 1612 | L2F82R32t23 1613 | L2F82R32t22 1614 | L2F82R32t23 1615 | L2F81R32t22 1616 | L2F82R32t23 1617 | L2F82R32t23 1618 | L2F82R32t23 1619 | L2F82R32t22 1620 | L2F82R32t23 1621 | L2F81R32t24 1622 | L2F81R32t22 1623 | L2F82R32t23 1624 | L2F82R32t22 1625 | L2F82R32t24 1626 | L2F82R32t22 1627 | L2F82R32t23 1628 | L2F82R32t22 1629 | L2F79R32t23 1630 | L2F81R32t22 1631 | L2F82R32t23 1632 | L2F81R32t23 1633 | L2F82R32t23 1634 | L2F82R32t22 1635 | L2F82R32t23 1636 | L2F81R32t22 1637 | L2F81R32t23 1638 | L2F82R32t23 1639 | L2F82R32t22 1640 | L2F82R32t24 1641 | L2F82R32t22 1642 | L2F82R32t23 1643 | L2F81R32t22 1644 | L2F81R32t23 1645 | L2F82R32t22 1646 | L2F81R32t23 1647 | L2F82R32t23 1648 | L2F82R32t23 1649 | L2F82R32t22 1650 | L2F82R32t23 1651 | L2F82R32t22 1652 | L2F82R32t23 1653 | L2F82R32t22 1654 | L2F82R32t24 1655 | L2F82R32t23 1656 | L2F82R32t22 1657 | L2F82R32t23 1658 | L2F82R32t22 1659 | L2F82R32t23 1660 | L2F82R32t22 1661 | L2F82R32t24 1662 | L2F82R32t22 1663 | L2F82R32t23 1664 | L2F82R32t22 1665 | L2F82R32t23 1666 | L2F82R32t23 1667 | L2F79R32t23 1668 | L2F81R32t22 1669 | L2F82R32t23 1670 | L2F82R32t24 1671 | L2F82R32t22 1672 | L2F81R32t23 1673 | L2F82R32t22 1674 | L2F82R32t23 1675 | L2F82R32t22 1676 | L2F82R32t23 1677 | L2F82R32t23 1678 | L2F82R32t23 1679 | L2F82R32t22 1680 | L2F82R32t23 1681 | L2F82R32t22 1682 | L2F82R32t23 1683 | L2F82R32t22 1684 | L2F82R32t24 1685 | L2F82R32t23 1686 | L2F82R32t22 1687 | L2F82R32t23 1688 | L2F82R32t22 1689 | L2F82R32t23 1690 | L2F82R32t22 1691 | L2F82R32t24 1692 | L2F82R32t22 1693 | L2F82R32t23 1694 | L2F82R32t22 1695 | L2F82R32t23 1696 | L2F82R32t22 1697 | L2F82R32t23 1698 | L2F82R32t23 1699 | L2F82R32t23 1700 | L2F65R32t23 1701 | el-300er300cor25t22 1702 | el0er0cor0t216 1703 | L2F74R70t27 1704 | L3F69R72t24 1705 | L3F35R9999t296 1706 | L3F71R69t26 1707 | L3F71R72t24 1708 | L3F71R70t24 1709 | L3F71R70t25 1710 | L3F70R72t24 1711 | L3F71R70t25 1712 | L3F71R70t23 1713 | L3F71R68t25 1714 | L3F70R72t24 1715 | L3F71R70t24 1716 | L3F71R71t25 1717 | L3F71R70t24 1718 | L3F70R72t24 1719 | L3F71R72t24 1720 | L3F70R70t25 1721 | L3F71R71t24 1722 | L3F71R69t24 1723 | L3F71R69t25 1724 | L3F71R69t24 1725 | L3F71R72t24 1726 | L3F71R69t24 1727 | L3F71R70t25 1728 | L3F71R70t23 1729 | L3F71R72t25 1730 | L3F71R70t24 1731 | L3F71R70t25 1732 | L3F71R70t24 1733 | L3F71R70t25 1734 | L3F70R71t25 1735 | L3F69R70t23 1736 | L3F70R71t25 1737 | L3F70R72t24 1738 | L3F70R70t24 1739 | L3F71R72t25 1740 | L3F71R70t24 1741 | L3F70R68t24 1742 | L3F71R69t24 1743 | L3F70R69t25 1744 | L3F71R69t23 1745 | L3F70R71t25 1746 | L3F70R72t25 1747 | L3F71R73t24 1748 | L3F71R70t24 1749 | L3F70R70t24 1750 | L3F70R70t25 1751 | L3F70R70t23 1752 | L3F71R70t25 1753 | L3F70R70t25 1754 | L3F71R70t23 1755 | L3F70R70t25 1756 | L3F70R72t24 1757 | L3F71R71t25 1758 | L3F71R69t23 1759 | L3F71R70t25 1760 | L3F71R71t25 1761 | L3F71R69t23 1762 | L3F71R70t25 1763 | L3F71R71t24 1764 | L3F71R70t24 1765 | L3F71R70t24 1766 | L3F71R70t25 1767 | L3F70R71t24 1768 | L3F70R72t24 1769 | L3F71R70t25 1770 | L3F70R67t23 1771 | L3F71R70t25 1772 | L3F70R74t24 1773 | L3F70R70t25 1774 | L3F70R70t24 1775 | L3F71R70t24 1776 | L3F70R71t26 1777 | L3F70R71t23 1778 | L3F70R70t25 1779 | L3F71R69t24 1780 | L3F71R72t24 1781 | L3F71R69t25 1782 | L3F70R72t24 1783 | L3F71R71t25 1784 | L3F70R74t23 1785 | L3F70R72t25 1786 | L3F70R72t24 1787 | L3F71R70t25 1788 | L3F71R71t24 1789 | L3F70R70t24 1790 | L3F71R70t25 1791 | L3F70R71t24 1792 | L3F71R69t24 1793 | L3F70R72t24 1794 | L3F70R74t25 1795 | el300er300cor-25t23 1796 | L3F71R70t25 1797 | el0er0cor0t15 1798 | L3F70R69t25 1799 | L3F70R69t25 1800 | L3F69R67t23 1801 | L3F70R68t25 1802 | L3F69R70t23 1803 | L3F70R68t25 1804 | L3F69R71t23 1805 | L3F70R69t25 1806 | L3F69R70t25 1807 | L3F69R69t23 1808 | L3F69R69t25 1809 | L3F70R69t23 1810 | L3F70R69t25 1811 | L3F69R71t24 1812 | L3F69R69t24 1813 | L3F69R69t25 1814 | L3F70R68t23 1815 | L3F69R69t25 1816 | L3F69R69t23 1817 | L3F70R69t26 1818 | L3F70R67t23 1819 | L3F69R69t25 1820 | L3F69R70t24 1821 | L3F70R68t24 1822 | L3F69R69t25 1823 | L3F70R68t23 1824 | L3F69R69t25 1825 | L3F69R68t23 1826 | L3F69R69t25 1827 | L3F70R70t24 1828 | L3F70R69t24 1829 | L3F69R69t25 1830 | L3F70R69t23 1831 | L3F70R69t25 1832 | L3F70R70t24 1833 | L3F70R69t24 1834 | L3F70R69t24 1835 | L3F70R69t24 1836 | L3F69R69t25 1837 | L3F69R70t24 1838 | L3F69R69t24 1839 | L3F69R69t24 1840 | L3F70R69t24 1841 | L3F69R69t24 1842 | L3F69R69t24 1843 | L3F69R69t24 1844 | L3F69R70t25 1845 | L3F69R70t24 1846 | L3F69R69t24 1847 | L3F69R69t24 1848 | L3F69R69t24 1849 | L3F69R70t25 1850 | L3F70R69t23 1851 | L3F70R69t25 1852 | -------------------------------------------------------------------------------- /test/old/nieuwedata1.txt: -------------------------------------------------------------------------------- 1 | 2 | L92F9999R9999t39 3 | L92F9999R9999t40 4 | L91F9999R32t32 5 | L92F9999R31t32 6 | L92F9999R63t33 7 | L92F9999R62t32 8 | L92F9999R63t33 9 | L92F9999R63t32 10 | L92F9999R63t32 11 | L92F9999R32t33 12 | L92F9999R32t33 13 | L92F9999R33t31 14 | L92F9999R33t33 15 | L92F9999R32t33 16 | L92F9999R32t32 17 | L92F9999R32t32 18 | L92F9999R32t33 19 | L92F9999R32t32 20 | L92F9999R33t33 21 | L92F9999R32t32 22 | L92F9999R33t33 23 | L91F9999R32t32 24 | L92F9999R62t33 25 | L92F9999R62t31 26 | L92F9999R62t33 27 | L92F9999R63t33 28 | L91F9999R62t33 29 | L92F9999R32t33 30 | L91F9999R33t31 31 | L92F9999R33t33 32 | L91F9999R32t33 33 | L91F9999R33t32 34 | L92F9999R32t32 35 | L91F9999R63t33 36 | L92F9999R63t32 37 | L92F9999R62t33 38 | L92F9999R63t31 39 | L92F9999R62t33 40 | L92F9999R32t32 41 | L92F9999R63t33 42 | L92F9999R62t32 43 | L92F9999R63t32 44 | L92F9999R62t33 45 | L92F9999R62t32 46 | L92F9999R32t32 47 | L92F9999R33t33 48 | L92F9999R32t32 49 | L92F9999R32t33 50 | L92F9999R32t32 51 | L91F9999R33t33 52 | L92F9999R31t33 53 | L92F9999R32t33 54 | L91F9999R33t31 55 | L92F9999R32t33 56 | L92F9999R62t33 57 | L92F9999R62t32 58 | L92F9999R63t33 59 | L92F9999R62t31 60 | L92F9999R63t33 61 | L92F9999R33t33 62 | L92F9999R32t32 63 | L92F9999R32t32 64 | L91F9999R32t33 65 | L91F9999R33t32 66 | L92F9999R33t33 67 | L92F9999R62t32 68 | L92F9999R63t32 69 | L92F9999R62t33 70 | L92F9999R62t32 71 | L92F9999R63t32 72 | L92F9999R32t33 73 | L92F9999R32t32 74 | L92F9999R62t33 75 | L92F9999R63t32 76 | L91F9999R61t33 77 | L91F9999R61t32 78 | L92F9999R63t33 79 | L92F9999R9999t39 80 | L92F9999R32t32 81 | L91F9999R33t32 82 | L92F9999R32t33 83 | L92F9999R32t33 84 | L92F9999R32t31 85 | L92F9999R9999t39 86 | L92F9999R9999t39 87 | L92F9999R9999t39 88 | L92F9999R32t33 89 | L92F9999R32t32 90 | L92F9999R32t32 91 | L92F9999R33t33 92 | L92F9999R9999t39 93 | L92F9999R32t33 94 | L92F9999R32t32 95 | L92F9999R32t32 96 | L92F9999R9999t39 97 | L92F9999R32t33 98 | L91F9999R9999t40 99 | L92F9999R32t32 100 | L91F9999R33t33 101 | L91F9999R33t32 102 | L92F9999R32t32 103 | L92F9999R9999t39 104 | L92F9999R32t33 105 | L92F9999R33t32 106 | L92F9999R32t32 107 | L92F9999R62t33 108 | L92F9999R62t32 109 | L92F9999R62t33 110 | L92F9999R62t31 111 | L92F9999R63t33 112 | L92F9999R9999t39 113 | L92F9999R9999t39 114 | L92F9999R32t33 115 | L92F9999R32t31 116 | L92F9999R9999t39 117 | L92F9999R32t33 118 | L91F9999R33t32 119 | L92F9999R32t33 120 | L92F9999R33t33 121 | L91F9999R9999t39 122 | L92F9999R32t33 123 | L92F9999R32t32 124 | L92F9999R32t33 125 | L91F9999R33t32 126 | L92F9999R32t32 127 | L92F9999R32t33 128 | L92F9999R33t33 129 | L92F9999R32t31 130 | L92F9999R32t33 131 | L92F9999R9999t39 132 | L92F9999R33t33 133 | L92F9999R32t32 134 | L92F9999R32t32 135 | L92F9999R9999t39 136 | L92F9999R9999t39 137 | L92F9999R9999t39 138 | L92F9999R32t33 139 | L92F9999R32t32 140 | L92F9999R9999t38 141 | L92F9999R9999t39 142 | L92F9999R9999t40 143 | L92F9999R31t33 144 | L92F9999R32t32 145 | L92F9999R32t33 146 | L92F9999R62t32 147 | L92F9999R62t32 148 | L92F9999R62t33 149 | L92F9999R62t32 150 | L92F9999R62t32 151 | L92F9999R32t33 152 | L92F9999R33t32 153 | L92F9999R9999t39 154 | L92F9999R9999t39 155 | L92F9999R9999t39 156 | L92F9999R9999t39 157 | L92F9999R9999t38 158 | L92F9999R33t33 159 | L92F9999R32t32 160 | L92F9999R9999t39 161 | L92F9999R9999t39 162 | L92F9999R9999t39 163 | L92F9999R9999t39 164 | L92F9999R9999t40 165 | L92F9999R9999t38 166 | L92F9999R9999t39 167 | L92F9999R9999t39 168 | L92F9999R32t32 169 | L92F9999R9999t39 170 | L92F9999R9999t39 171 | L92F9999R9999t39 172 | L92F9999R9999t39 173 | L92F9999R9999t39 174 | L92F9999R9999t38 175 | L92F9999R9999t39 176 | L92F9999R9999t39 177 | L92F9999R9999t39 178 | L92F9999R9999t39 179 | L92F9999R33t32 180 | L92F9999R32t33 181 | L92F9999R62t32 182 | L92F9999R63t32 183 | L92F9999R62t33 184 | L92F9999R62t32 185 | L92F9999R62t32 186 | L91F9999R9999t40 187 | L92F9999R32t33 188 | L92F9999R9999t38 189 | L92F9999R9999t39 190 | L92F9999R9999t39 191 | L92F9999R9999t39 192 | L92F9999R9999t39 193 | L92F9999R9999t39 194 | L92F9999R9999t39 195 | L92F9999R9999t38 196 | L92F9999R9999t39 197 | L92F9999R9999t39 198 | L92F9999R33t32 199 | L92F9999R9999t39 200 | L92F9999R9999t39 201 | L92F9999R9999t39 202 | L92F9999R9999t39 203 | L92F9999R9999t39 204 | L92F9999R32t32 205 | L92F9999R9999t39 206 | L91F9999R9999t40 207 | L92F9999R32t32 208 | L92F9999R9999t39 209 | L92F9999R63t33 210 | L92F9999R62t31 211 | L92F9999R63t33 212 | L92F9999R62t33 213 | L92F9999R63t32 214 | L92F9999R9999t39 215 | L92F9999R9999t38 216 | L92F9999R9999t39 217 | L92F9999R32t32 218 | L92F9999R9999t39 219 | L92F9999R9999t39 220 | L92F9999R9999t39 221 | L92F9999R9999t39 222 | L92F9999R9999t39 223 | L92F9999R9999t39 224 | L92F9999R9999t38 225 | L92F9999R9999t39 226 | L92F9999R9999t39 227 | L91F9999R62t33 228 | L92F9999R62t33 229 | L92F9999R63t32 230 | L92F9999R63t32 231 | L92F9999R62t33 232 | L92F9999R33t32 233 | L92F9999R9999t39 234 | L92F9999R9999t39 235 | L92F9999R9999t39 236 | L92F9999R9999t39 237 | L92F9999R9999t38 238 | L92F9999R9999t39 239 | L91F9999R9999t39 240 | L92F9999R9999t38 241 | L92F9999R9999t39 242 | L92F9999R9999t39 243 | L92F9999R9999t39 244 | L92F9999R9999t39 245 | L92F9999R9999t39 246 | L91F9999R9999t39 247 | L92F9999R62t32 248 | L91F9999R62t33 249 | L92F9999R62t32 250 | L92F9999R63t33 251 | L92F9999R62t31 252 | L92F9999R9999t39 253 | L92F9999R63t33 254 | L92F9999R62t32 255 | L92F9999R63t33 256 | L92F9999R62t31 257 | L92F9999R63t33 258 | L92F9999R9999t39 259 | L92F9999R9999t39 260 | L92F9999R9999t39 261 | L92F9999R9999t39 262 | L92F9999R33t31 263 | L92F9999R9999t39 264 | L92F9999R9999t39 265 | L92F9999R9999t39 266 | L92F9999R32t33 267 | L92F9999R32t32 268 | L92F9999R9999t39 269 | L92F9999R32t33 270 | L92F9999R30t33 271 | L91F9999R9999t39 272 | L92F9999R63t32 273 | L92F9999R62t33 274 | L92F9999R63t31 275 | L92F9999R62t33 276 | L92F9999R63t32 277 | L92F9999R9999t39 278 | L92F9999R9999t39 279 | L92F9999R9999t39 280 | L92F9999R9999t39 281 | L92F9999R33t32 282 | L92F9999R32t32 283 | L92F9999R9999t39 284 | L92F9999R9999t39 285 | L92F9999R9999t39 286 | L92F9999R9999t39 287 | L92F9999R9999t39 288 | L92F9999R32t31 289 | L92F9999R9999t39 290 | L92F9999R63t34 291 | L92F9999R61t32 292 | L92F9999R62t33 293 | L91F9999R63t32 294 | L92F9999R62t32 295 | L92F9999R9999t39 296 | L92F9999R9999t39 297 | L92F9999R32t33 298 | L92F9999R32t31 299 | L92F9999R9999t39 300 | L92F9999R9999t39 301 | L92F9999R9999t39 302 | L92F9999R9999t39 303 | L92F9999R9999t39 304 | L92F9999R9999t39 305 | L92F9999R33t32 306 | L92F9999R9999t39 307 | L92F9999R9999t38 308 | L92F9999R9999t39 309 | L92F9999R9999t39 310 | L92F9999R9999t39 311 | L92F9999R9999t40 312 | L91F9999R31t33 313 | L92F9999R33t32 314 | L92F9999R9999t39 315 | L92F9999R9999t38 316 | L92F9999R9999t39 317 | L92F9999R9999t39 318 | L92F9999R9999t39 319 | L92F9999R9999t39 320 | L92F9999R9999t39 321 | L92F9999R32t33 322 | L92F9999R32t32 323 | L92F9999R62t32 324 | L91F9999R63t32 325 | L92F9999R62t33 326 | L92F9999R62t32 327 | L92F9999R62t32 328 | L92F9999R9999t39 329 | L92F9999R33t33 330 | L92F9999R32t32 331 | L92F9999R63t33 332 | L92F9999R62t31 333 | L92F9999R47t34 334 | el300er300cor-35t24 335 | L92F9999R61t31 336 | L91F9999R9999t39 337 | L92F9999R9999t39 338 | L92F9999R9999t39 339 | L92F9999R62t33 340 | L91F9999R63t32 341 | L91F9999R63t32 342 | L91F9999R63t32 343 | L92F9999R62t33 344 | L92F9999R9999t39 345 | L92F9999R9999t39 346 | L92F9999R9999t39 347 | L92F9999R9999t39 348 | L92F9999R32t32 349 | L92F9999R62t32 350 | L92F9999R62t32 351 | L92F9999R62t36 352 | L91F9999R63t32 353 | L92F9999R62t33 354 | L92F9999R33t32 355 | L92F9999R62t34 356 | L91F9999R61t31 357 | L92F9999R63t33 358 | L92F9999R62t33 359 | L92F9999R63t32 360 | L92F9999R9999t39 361 | L92F9999R9999t39 362 | L92F9999R9999t38 363 | L92F9999R31t33 364 | L92F9999R32t32 365 | L92F9999R9999t39 366 | L92F9999R9999t39 367 | L92F9999R63t33 368 | L92F9999R62t31 369 | L92F9999R62t33 370 | L92F9999R62t33 371 | L92F9999R62t32 372 | L92F9999R9999t39 373 | L92F9999R9999t38 374 | L92F9999R9999t39 375 | L92F9999R9999t39 376 | L92F9999R32t33 377 | L92F9999R62t33 378 | L92F9999R61t33 379 | L92F9999R62t31 380 | L92F9999R62t33 381 | L91F9999R63t32 382 | L92F9999R9999t39 383 | L92F9999R9999t39 384 | L92F9999R32t32 385 | L92F9999R32t33 386 | L92F9999R32t32 387 | L92F9999R62t33 388 | L92F9999R62t31 389 | L91F9999R63t33 390 | L92F9999R62t33 391 | L92F9999R63t32 392 | L92F9999R33t32 393 | L92F9999R32t33 394 | L91F9999R33t32 395 | L92F9999R62t33 396 | L92F9999R62t32 397 | L92F9999R62t32 398 | L92F9999R62t33 399 | L92F9999R62t32 400 | L92F9999R9999t40 401 | L92F9999R31t32 402 | L91F9999R9999t39 403 | L92F9999R32t33 404 | L92F9999R32t32 405 | L92F9999R62t33 406 | L92F9999R62t31 407 | L92F9999R62t33 408 | L92F9999R62t32 409 | L91F9999R63t33 410 | L91F9999R32t32 411 | L92F9999R32t32 412 | L92F9999R33t33 413 | L92F9999R32t33 414 | L92F9999R33t32 415 | L92F9999R32t32 416 | L92F9999R63t33 417 | L92F9999R63t32 418 | L92F9999R63t33 419 | L91F9999R63t31 420 | L92F9999R63t33 421 | L91F9999R33t32 422 | L91F9999R9999t40 423 | L92F9999R32t33 424 | L91F9999R62t32 425 | L92F9999R63t32 426 | L92F9999R62t33 427 | L92F9999R63t32 428 | L91F9999R63t32 429 | L92F9999R9999t39 430 | L92F9999R33t33 431 | L92F9999R33t32 432 | L92F9999R32t32 433 | L92F9999R32t33 434 | L92F9999R33t32 435 | L92F9999R33t33 436 | L92F9999R33t33 437 | L92F9999R32t31 438 | L92F9999R32t33 439 | L92F9999R33t33 440 | L92F9999R33t33 441 | L92F9999R63t31 442 | L92F9999R62t33 443 | L91F9999R63t32 444 | L92F9999R62t33 445 | L92F9999R63t31 446 | L92F9999R32t34 447 | L91F9999R9999t39 448 | L92F9999R33t33 449 | L92F9999R33t32 450 | L92F9999R33t32 451 | L92F9999R33t33 452 | L92F9999R33t33 453 | L92F9999R33t32 454 | L92F9999R9999t39 455 | L92F9999R9999t38 456 | L92F9999R9999t39 457 | L92F9999R9999t39 458 | L92F9999R9999t39 459 | L92F9999R33t32 460 | L92F9999R63t33 461 | L92F9999R62t31 462 | L92F9999R63t33 463 | L92F9999R62t33 464 | L91F9999R63t32 465 | L92F9999R9999t39 466 | L92F9999R9999t39 467 | L92F9999R33t32 468 | L92F9999R63t33 469 | L91F9999R61t33 470 | L92F9999R63t32 471 | L92F9999R62t32 472 | L92F9999R63t32 473 | L92F9999R9999t39 474 | L92F9999R33t33 475 | L92F9999R33t32 476 | L92F9999R9999t38 477 | L92F9999R63t33 478 | L92F9999R63t32 479 | L92F9999R63t33 480 | L92F9999R62t32 481 | L92F9999R63t32 482 | L92F9999R9999t39 483 | L92F9999R9999t39 484 | L92F9999R33t33 485 | L92F9999R33t32 486 | L92F9999R9999t38 487 | L92F9999R33t33 488 | L92F9999R33t33 489 | L92F9999R33t32 490 | L92F9999R9999t39 491 | L92F9999R33t33 492 | L91F9999R9999t39 493 | L92F9999R33t33 494 | L92F9999R33t32 495 | L92F9999R62t33 496 | L92F9999R62t31 497 | L92F9999R63t33 498 | L91F9999R63t32 499 | L92F9999R63t33 500 | L91F9999R33t32 501 | L92F9999R33t32 502 | L92F9999R9999t39 503 | L92F9999R32t33 504 | L92F9999R32t33 505 | L92F9999R32t31 506 | L92F9999R63t33 507 | L92F9999R62t32 508 | L91F9999R63t33 509 | L91F9999R63t31 510 | L92F9999R62t33 511 | L91F9999R34t33 512 | L92F9999R32t32 513 | L92F9999R32t32 514 | L92F9999R32t33 515 | L91F9999R32t33 516 | L92F9999R32t34 517 | L91F9999R31t33 518 | L92F9999R33t32 519 | L92F9999R31t32 520 | L92F9999R32t33 521 | L92F9999R32t33 522 | L92F9999R31t31 523 | L92F9999R63t33 524 | L92F9999R62t32 525 | L91F9999R63t33 526 | L91F9999R63t32 527 | L92F9999R63t32 528 | L92F9999R32t33 529 | L92F9999R32t32 530 | L92F9999R33t32 531 | L92F9999R33t33 532 | L92F9999R33t33 533 | L92F9999R63t32 534 | L92F9999R62t32 535 | L92F9999R62t32 536 | L92F9999R63t33 537 | L91F9999R63t32 538 | L92F9999R32t34 539 | L91F9999R9999t38 540 | L92F9999R32t33 541 | L92F9999R62t32 542 | L92F9999R62t33 543 | L91F9999R63t31 544 | L92F9999R63t33 545 | L91F9999R63t32 546 | L92F9999R33t33 547 | L92F9999R32t32 548 | L92F9999R33t32 549 | L92F9999R33t33 550 | L92F9999R9999t39 551 | L92F9999R9999t39 552 | L92F9999R9999t39 553 | L92F9999R33t33 554 | L92F9999R33t31 555 | L92F9999R9999t39 556 | L92F9999R63t33 557 | L91F9999R63t32 558 | L92F9999R62t33 559 | L91F9999R62t32 560 | L92F9999R63t33 561 | L92F9999R9999t40 562 | L91F9999R9999t39 563 | L92F9999R33t33 564 | L92F9999R32t31 565 | L92F9999R33t33 566 | L92F9999R33t33 567 | L92F9999R33t32 568 | L92F9999R33t32 569 | L92F9999R33t33 570 | L92F9999R33t33 571 | L92F9999R32t32 572 | L92F9999R63t32 573 | L91F9999R63t32 574 | L91F9999R63t33 575 | L91F9999R63t32 576 | L91F9999R63t32 577 | L91F9999R33t33 578 | L92F9999R32t32 579 | L92F9999R9999t39 580 | L92F9999R32t33 581 | L92F9999R33t32 582 | L92F9999R32t32 583 | L92F9999R63t33 584 | L92F9999R63t33 585 | L91F9999R61t32 586 | L92F9999R62t33 587 | L91F9999R63t32 588 | L92F9999R9999t39 589 | L92F9999R33t33 590 | L92F9999R31t31 591 | L92F9999R33t33 592 | L92F9999R31t33 593 | L92F9999R32t32 594 | L92F9999R62t32 595 | L92F9999R63t32 596 | L92F9999R63t33 597 | L92F9999R63t33 598 | L92F9999R47t31 599 | L91F9999R30t33 600 | L92F9999R32t33 601 | L92F9999R31t32 602 | L92F9999R33t33 603 | L92F9999R32t32 604 | L92F9999R31t32 605 | L92F9999R63t33 606 | L91F9999R63t32 607 | L92F9999R63t33 608 | L91F9999R61t32 609 | L92F9999R63t33 610 | L91F9999R32t33 611 | L92F9999R31t31 612 | L92F9999R33t33 613 | L92F9999R31t33 614 | L92F9999R32t32 615 | L92F9999R32t32 616 | L92F9999R32t33 617 | L91F9999R32t32 618 | L92F9999R33t33 619 | L92F9999R32t32 620 | L92F9999R33t33 621 | L92F9999R33t32 622 | L92F9999R63t33 623 | L91F9999R63t31 624 | L92F9999R62t33 625 | L91F9999R63t33 626 | L82F9999R57t32 627 | L91F9999R32t33 628 | L92F9999R9999t38 629 | L92F9999R32t33 630 | L92F9999R63t33 631 | L92F9999R61t33 632 | L92F9999R63t31 633 | L92F9999R62t33 634 | L92F9999R63t32 635 | L92F9999R9999t39 636 | L92F9999R9999t39 637 | L92F9999R9999t40 638 | L92F9999R31t33 639 | L92F9999R32t31 640 | L92F9999R33t33 641 | L92F9999R9999t39 642 | L92F9999R9999t39 643 | L79F9999R9999t39 644 | L92F9999R31t33 645 | L92F9999R9999t38 646 | L92F9999R33t33 647 | L92F9999R33t32 648 | L92F9999R63t33 649 | L92F9999R63t31 650 | L91F9999R63t33 651 | L91F9999R63t32 652 | L92F9999R63t34 653 | L92F9999R9999t39 654 | L92F9999R9999t39 655 | L92F9999R31t32 656 | L92F9999R33t32 657 | L92F9999R9999t39 658 | L92F9999R9999t39 659 | L92F9999R9999t39 660 | L92F9999R9999t39 661 | L92F9999R9999t39 662 | L92F9999R9999t39 663 | L92F9999R33t32 664 | L92F9999R33t32 665 | L92F9999R9999t39 666 | L92F9999R33t33 667 | L92F9999R9999t39 668 | L92F9999R9999t39 669 | L92F9999R33t32 670 | L92F9999R33t32 671 | L92F9999R33t33 672 | L92F9999R9999t39 673 | L92F9999R9999t40 674 | L91F9999R9999t39 675 | L92F9999R9999t39 676 | L92F9999R33t32 677 | L92F9999R33t32 678 | L92F9999R33t33 679 | L92F9999R9999t39 680 | L92F9999R9999t39 681 | L92F9999R33t31 682 | L92F9999R33t33 683 | L92F9999R9999t39 684 | L92F9999R9999t39 685 | L92F9999R9999t39 686 | L92F9999R9999t39 687 | L92F9999R26t33 688 | el-300er-300cor35t24 689 | L92F9999R61t33 690 | L92F9999R62t32 691 | L92F9999R62t32 692 | L93F9999R61t32 693 | L93F9999R30t33 694 | L94F9999R60t32 695 | L94F9999R59t34 696 | L94F9999R58t31 697 | L96F9999R83t34 698 | L96F9999R61t33 699 | L97F9999R52t34 700 | L97F9999R82t33 701 | L98F9999R51t34 702 | L99F9999R50t34 703 | L99F9999R50t34 704 | L100F9999R48t36 705 | L100F9999R49t34 706 | L100F9999R9999t40 707 | L99F9999R49t34 708 | L100F9999R49t35 709 | L101F9999R9999t41 710 | L102F9999R9999t40 711 | L101F9999R45t35 712 | L102F9999R9999t41 713 | L101F9999R46t34 714 | L103F9999R9999t41 715 | L101F9999R9999t40 716 | L102F9999R9999t42 717 | el300er300cor-35t24 718 | L103F9999R9999t41 719 | L101F9999R9999t41 720 | L103F9999R9999t41 721 | L102F9999R9999t40 722 | L102F9999R9999t41 723 | L103F9999R9999t40 724 | L104F9999R9999t41 725 | L95F9999R9999t38 726 | L94F9999R9999t39 727 | L93F9999R9999t39 728 | L91F9999R9999t39 729 | L90F9999R102t36 730 | L89F9999R103t35 731 | L87F9999R102t36 732 | L86F9999R103t35 733 | L85F9999R9999t36 734 | L83F9999R9999t38 735 | L82F9999R9999t37 736 | L81F9999R88t34 737 | L81F9999R9999t35 738 | L92F9999R9999t35 739 | L78F9999R9999t33 740 | L77F9999R9999t36 741 | L75F9999R9999t35 742 | L75F9999R9999t34 743 | L74F9999R9999t34 744 | L72F9999R9999t33 745 | L71F9999R9999t34 746 | L70F9999R9999t36 747 | L70F9999R9999t33 748 | L69F9999R9999t34 749 | L67F9999R9999t33 750 | L66F9999R9999t34 751 | L65F9999R9999t33 752 | L63F9999R9999t36 753 | L62F9999R9999t33 754 | L61F9999R9999t32 755 | L60F9999R9999t34 756 | L59F9999R9999t33 757 | L57F9999R9999t35 758 | L57F9999R9999t34 759 | L56F9999R9999t36 760 | L55F9999R9999t35 761 | L54F9999R9999t33 762 | L53F9999R9999t35 763 | L52F9999R9999t35 764 | L51F9999R9999t33 765 | L50F9999R9999t35 766 | L49F9999R9999t34 767 | L49F9999R9999t35 768 | L48F9999R9999t34 769 | L46F9999R9999t34 770 | L46F105R9999t33 771 | L45F9999R9999t35 772 | L44F9999R9999t34 773 | L43F9999R9999t34 774 | L42F9999R9999t33 775 | L41F9999R9999t34 776 | L40F9999R9999t34 777 | L40F9999R9999t34 778 | L39F9999R9999t32 779 | L38F9999R9999t32 780 | L38F9999R9999t32 781 | L37F9999R9999t32 782 | el-300er-300cor35t24 783 | L35F9999R9999t35 784 | L35F9999R9999t34 785 | L35F9999R9999t34 786 | L34F9999R9999t33 787 | L34F9999R9999t34 788 | L34F9999R9999t33 789 | L35F9999R9999t34 790 | L36F9999R9999t34 791 | L37F9999R9999t33 792 | L38F9999R9999t34 793 | L39F9999R9999t34 794 | L40F9999R9999t34 795 | L41F9999R9999t34 796 | L42F9999R9999t33 797 | L44F9999R9999t34 798 | L45F9999R9999t35 799 | L46F9999R9999t34 800 | L48F9999R9999t34 801 | L49F9999R9999t34 802 | L50F9999R9999t35 803 | L51F9999R9999t34 804 | L52F9999R9999t35 805 | L54F9999R9999t35 806 | L55F9999R9999t35 807 | L56F9999R9999t35 808 | L57F9999R9999t35 809 | L59F9999R9999t33 810 | L60F9999R9999t35 811 | L61F9999R9999t36 812 | L62F9999R9999t34 813 | L66F9999R9999t35 814 | L66F9999R9999t34 815 | L67F9999R9999t34 816 | L68F9999R9999t34 817 | L60F9999R9999t33 818 | el0er0cor0t17 819 | L71F9999R9999t36 820 | L73F9999R9999t33 821 | L73F9999R9999t34 822 | L74F9999R9999t34 823 | L73F9999R9999t34 824 | L73F9999R9999t34 825 | L73F9999R9999t35 826 | L73F9999R9999t34 827 | L73F9999R9999t34 828 | L72F9999R9999t34 829 | L73F9999R9999t35 830 | L72F9999R9999t34 831 | L73F9999R9999t36 832 | L73F9999R9999t34 833 | L73F9999R9999t34 834 | L73F9999R9999t34 835 | L73F9999R9999t33 836 | L72F9999R9999t34 837 | L73F9999R9999t36 838 | L73F9999R9999t34 839 | L72F9999R9999t34 840 | L73F9999R9999t33 841 | L72F9999R9999t34 842 | L73F9999R9999t34 843 | L73F9999R9999t36 844 | L56F9999R9999t34 845 | el300er300cor-35t23 846 | L72F9999R9999t34 847 | L73F9999R9999t34 848 | L72F9999R9999t34 849 | L72F9999R9999t35 850 | L72F9999R9999t34 851 | L72F9999R9999t34 852 | L72F9999R9999t35 853 | L72F9999R9999t35 854 | L73F9999R9999t33 855 | L73F9999R9999t36 856 | L73F9999R9999t34 857 | L73F9999R9999t34 858 | L73F9999R9999t34 859 | L73F9999R9999t33 860 | L73F9999R9999t34 861 | L73F9999R9999t36 862 | L73F9999R9999t34 863 | L73F9999R9999t34 864 | L72F9999R9999t33 865 | L72F9999R9999t34 866 | L72F9999R9999t34 867 | L72F9999R9999t36 868 | L72F9999R9999t34 869 | L73F9999R9999t33 870 | L73F9999R9999t34 871 | L73F9999R9999t34 872 | L73F9999R9999t34 873 | L73F9999R9999t36 874 | L73F9999R9999t34 875 | L72F9999R9999t35 876 | L73F9999R9999t34 877 | L73F9999R9999t34 878 | L73F9999R9999t34 879 | L73F9999R9999t35 880 | L73F9999R9999t34 881 | L73F9999R9999t34 882 | L73F9999R9999t34 883 | L73F9999R9999t34 884 | L73F9999R9999t33 885 | L73F9999R9999t36 886 | L73F9999R9999t34 887 | L73F9999R9999t34 888 | L72F9999R9999t34 889 | L73F9999R9999t33 890 | L73F9999R9999t34 891 | L73F9999R9999t36 892 | L72F9999R9999t34 893 | L73F9999R9999t34 894 | L73F9999R9999t33 895 | L73F9999R9999t34 896 | L73F9999R9999t35 897 | L72F9999R9999t37 898 | L73F9999R9999t34 899 | L73F9999R9999t33 900 | L73F9999R9999t34 901 | L73F9999R9999t34 902 | L73F9999R9999t34 903 | L72F9999R9999t36 904 | L73F9999R9999t33 905 | L72F9999R9999t34 906 | L73F9999R9999t34 907 | L73F9999R9999t34 908 | L73F9999R9999t34 909 | L73F9999R9999t35 910 | L73F9999R9999t34 911 | L73F9999R9999t34 912 | L73F9999R9999t34 913 | L73F9999R9999t34 914 | L73F9999R9999t34 915 | L72F9999R9999t35 916 | L72F9999R9999t34 917 | L73F9999R9999t35 918 | L72F9999R9999t34 919 | L73F9999R9999t35 920 | L73F9999R9999t33 921 | L73F9999R9999t36 922 | L73F9999R9999t34 923 | L73F9999R9999t34 924 | L73F9999R9999t34 925 | L73F9999R9999t33 926 | L72F9999R9999t34 927 | L73F9999R9999t36 928 | L73F9999R9999t34 929 | L73F9999R9999t34 930 | L73F9999R9999t33 931 | L72F9999R9999t34 932 | L72F9999R9999t34 933 | L72F9999R9999t36 934 | L72F9999R9999t34 935 | L73F9999R9999t33 936 | L72F9999R9999t34 937 | L72F9999R9999t34 938 | L72F9999R9999t34 939 | L72F9999R9999t36 940 | L73F9999R9999t34 941 | L72F9999R9999t34 942 | L72F9999R9999t34 943 | L72F9999R9999t34 944 | L73F9999R9999t34 945 | L73F9999R9999t35 946 | L72F9999R9999t34 947 | L72F9999R9999t34 948 | L72F9999R9999t34 949 | L72F9999R9999t34 950 | L72F9999R9999t33 951 | L73F9999R9999t36 952 | L72F9999R9999t34 953 | L72F9999R9999t34 954 | L73F9999R9999t34 955 | L72F9999R9999t33 956 | L73F9999R9999t34 957 | L73F9999R9999t36 958 | L72F9999R9999t34 959 | L73F9999R9999t34 960 | L72F9999R9999t33 961 | L73F9999R9999t34 962 | L73F9999R9999t35 963 | L73F9999R9999t36 964 | L73F9999R9999t34 965 | L73F9999R9999t34 966 | L73F9999R9999t34 967 | L73F9999R9999t34 968 | L73F9999R9999t34 969 | L73F9999R9999t36 970 | L73F9999R9999t33 971 | L73F9999R9999t34 972 | L73F9999R9999t34 973 | L73F9999R9999t34 974 | L73F9999R9999t34 975 | L73F9999R9999t35 976 | L73F9999R9999t34 977 | L73F9999R9999t34 978 | L73F9999R9999t34 979 | L73F9999R9999t34 980 | L73F9999R9999t33 981 | L73F9999R9999t36 982 | L73F9999R9999t34 983 | L72F9999R9999t34 984 | L73F9999R9999t35 985 | L73F9999R9999t33 986 | L72F9999R9999t34 987 | L73F9999R9999t37 988 | el0er0cor0t16 989 | L73F9999R9999t35 990 | L73F9999R9999t34 991 | L73F9999R9999t34 992 | L73F9999R9999t34 993 | L73F9999R9999t35 994 | L73F9999R9999t34 995 | L73F9999R9999t34 996 | L73F9999R9999t34 997 | L73F9999R9999t34 998 | L73F9999R9999t33 999 | L73F9999R9999t36 1000 | L73F9999R9999t34 1001 | L73F9999R9999t34 1002 | L73F9999R9999t34 1003 | L73F9999R9999t33 1004 | L73F9999R9999t34 1005 | L73F9999R9999t36 1006 | L73F9999R9999t34 1007 | L72F9999R9999t35 1008 | L72F9999R9999t33 1009 | L73F9999R9999t34 1010 | L73F9999R9999t34 1011 | L73F9999R9999t36 1012 | L73F9999R9999t34 1013 | L73F9999R9999t35 1014 | L73F9999R9999t33 1015 | L73F9999R9999t34 1016 | L73F9999R9999t34 1017 | L73F9999R9999t36 1018 | L73F9999R9999t34 1019 | L72F9999R9999t33 1020 | L73F9999R9999t34 1021 | L73F9999R9999t34 1022 | L72F9999R9999t34 1023 | L72F9999R9999t36 1024 | L72F9999R9999t33 1025 | L72F9999R9999t34 1026 | L72F9999R9999t34 1027 | L73F9999R9999t34 1028 | L73F9999R9999t33 1029 | L73F9999R9999t36 1030 | L72F9999R9999t35 1031 | L72F9999R9999t34 1032 | L72F9999R9999t34 1033 | L73F9999R9999t34 1034 | L72F9999R9999t33 1035 | L72F9999R9999t36 1036 | L72F9999R9999t34 1037 | L73F9999R9999t34 1038 | L73F9999R9999t34 1039 | L73F9999R9999t33 1040 | L73F9999R9999t34 1041 | L73F9999R9999t36 1042 | L72F9999R9999t34 1043 | L73F9999R9999t35 1044 | el300er300cor-35t23 1045 | L73F9999R9999t34 1046 | L73F9999R9999t34 1047 | L73F9999R9999t36 1048 | L72F9999R9999t33 1049 | L73F9999R9999t34 1050 | L73F9999R9999t34 1051 | L72F9999R9999t34 1052 | L72F9999R9999t35 1053 | L72F9999R9999t35 1054 | L73F9999R9999t34 1055 | L73F9999R9999t34 1056 | L73F9999R9999t35 1057 | L73F9999R9999t34 1058 | L73F9999R9999t33 1059 | L73F9999R9999t36 1060 | L73F9999R9999t34 1061 | L73F9999R9999t34 1062 | L73F9999R9999t34 1063 | L73F9999R9999t33 1064 | L73F9999R9999t34 1065 | L73F9999R9999t36 1066 | L73F9999R9999t34 1067 | L73F9999R9999t34 1068 | L73F9999R9999t33 1069 | L73F9999R9999t34 1070 | L73F9999R9999t34 1071 | L73F9999R9999t36 1072 | L73F9999R9999t34 1073 | L73F9999R9999t33 1074 | L73F9999R9999t35 1075 | L72F9999R9999t34 1076 | L73F9999R9999t34 1077 | L72F9999R9999t36 1078 | L72F9999R9999t33 1079 | L72F9999R9999t34 1080 | L72F9999R9999t34 1081 | L73F9999R9999t34 1082 | L72F9999R9999t34 1083 | L72F9999R9999t35 1084 | L73F9999R9999t34 1085 | L73F9999R9999t34 1086 | L72F9999R9999t34 1087 | L72F9999R9999t34 1088 | L73F9999R9999t33 1089 | L73F9999R9999t36 1090 | L73F9999R9999t34 1091 | L73F9999R9999t34 1092 | L73F9999R9999t34 1093 | L73F9999R9999t35 1094 | L72F9999R9999t34 1095 | L73F9999R9999t36 1096 | L72F9999R9999t34 1097 | L72F9999R9999t35 1098 | L73F9999R9999t33 1099 | L72F9999R9999t34 1100 | L73F9999R9999t34 1101 | L72F9999R9999t36 1102 | L73F9999R9999t34 1103 | L72F9999R9999t33 1104 | L72F9999R9999t34 1105 | L72F9999R9999t34 1106 | L72F9999R9999t34 1107 | L72F9999R9999t36 1108 | L72F9999R9999t33 1109 | L73F9999R9999t34 1110 | L72F9999R9999t34 1111 | L73F9999R9999t34 1112 | L73F9999R9999t34 1113 | L73F9999R9999t35 1114 | L72F9999R9999t34 1115 | L72F9999R9999t34 1116 | L72F9999R9999t34 1117 | L72F9999R9999t34 1118 | L73F9999R9999t33 1119 | L72F9999R9999t37 1120 | L72F9999R9999t34 1121 | L72F9999R9999t34 1122 | L72F9999R9999t34 1123 | L72F9999R9999t33 1124 | L72F9999R9999t34 1125 | L73F9999R9999t36 1126 | L72F9999R9999t34 1127 | L72F9999R9999t34 1128 | L72F9999R9999t33 1129 | L72F9999R9999t34 1130 | L72F9999R9999t34 1131 | L56F9999R9999t36 1132 | el0er0cor0t16 1133 | L72F9999R9999t35 1134 | L73F9999R9999t34 1135 | L73F9999R9999t34 1136 | L73F9999R9999t36 1137 | L72F9999R9999t35 1138 | L73F9999R9999t34 1139 | L72F9999R9999t34 1140 | L72F9999R9999t34 1141 | L72F9999R9999t34 1142 | L72F9999R9999t33 1143 | L72F9999R9999t37 1144 | L73F9999R9999t34 1145 | L73F9999R9999t34 1146 | L73F9999R9999t34 1147 | L73F9999R9999t33 1148 | L72F9999R9999t34 1149 | L73F9999R9999t36 1150 | L73F9999R9999t34 1151 | L73F9999R9999t34 1152 | L73F9999R9999t33 1153 | L72F9999R9999t34 1154 | L73F9999R9999t34 1155 | L73F9999R9999t36 1156 | L73F9999R9999t34 1157 | L73F9999R9999t33 1158 | L73F9999R9999t34 1159 | L72F9999R9999t34 1160 | L73F9999R9999t34 1161 | L72F9999R9999t36 1162 | L72F9999R9999t33 1163 | L73F9999R9999t34 1164 | L73F9999R9999t35 1165 | L72F9999R9999t34 1166 | L73F9999R9999t34 1167 | L73F9999R9999t35 1168 | L73F9999R9999t34 1169 | L73F9999R9999t35 1170 | L72F9999R9999t34 1171 | L72F9999R9999t34 1172 | L72F9999R9999t33 1173 | L72F9999R9999t35 1174 | L72F9999R9999t34 1175 | L72F9999R9999t35 1176 | L73F9999R9999t34 1177 | L73F9999R9999t33 1178 | L73F9999R9999t34 1179 | L73F9999R9999t36 1180 | L73F9999R9999t34 1181 | L73F9999R9999t34 1182 | L73F9999R9999t33 1183 | L73F9999R9999t34 1184 | L73F9999R9999t34 1185 | L73F9999R9999t36 1186 | L73F9999R9999t35 1187 | L73F9999R9999t33 1188 | L72F9999R9999t34 1189 | L73F9999R9999t34 1190 | L73F9999R9999t34 1191 | L73F9999R9999t36 1192 | L72F9999R9999t33 1193 | L73F9999R9999t34 1194 | L73F9999R9999t34 1195 | L72F9999R9999t34 1196 | L73F9999R9999t34 1197 | L73F9999R9999t35 1198 | L73F9999R9999t34 1199 | L73F9999R9999t34 1200 | L73F9999R9999t34 1201 | L73F9999R9999t34 1202 | L73F9999R9999t34 1203 | L73F9999R9999t35 1204 | L73F9999R9999t35 1205 | L73F9999R9999t34 1206 | L73F9999R9999t34 1207 | L73F9999R9999t33 1208 | L72F9999R9999t36 1209 | L73F9999R9999t36 1210 | L73F9999R9999t34 1211 | L73F9999R9999t34 1212 | L72F9999R9999t34 1213 | L57F9999R9999t33 1214 | el-300er300cor35t24 1215 | L72F9999R9999t36 1216 | L72F9999R9999t33 1217 | L71F9999R9999t34 1218 | L71F9999R9999t34 1219 | L70F9999R9999t34 1220 | L70F9999R9999t34 1221 | L71F9999R9999t35 1222 | L92F9999R9999t35 1223 | L9999F9999R9999t38 1224 | L9999F9999R67t37 1225 | L9999F9999R68t38 1226 | L9999F9999R71t37 1227 | L9999F9999R74t36 1228 | L9999F68R72t33 1229 | L9999F68R70t33 1230 | L9999F68R71t35 1231 | L9999F69R71t34 1232 | L9999F9999R89t36 1233 | L9999F85R9999t34 1234 | L9999F72R9999t34 1235 | L66F71R9999t32 1236 | L67F71R9999t31 1237 | L69F73R9999t31 1238 | L91F9999R9999t37 1239 | L71F9999R9999t36 1240 | L70F9999R9999t34 1241 | L69F9999R9999t34 1242 | L70F9999R9999t34 1243 | L73F9999R9999t33 1244 | L9999F9999R9999t38 1245 | L9999F9999R9999t39 1246 | L9999F9999R67t38 1247 | L9999F9999R69t37 1248 | L9999F9999R83t39 1249 | L9999F9999R71t36 1250 | L9999F68R69t32 1251 | L9999F68R69t34 1252 | L9999F68R70t34 1253 | L9999F71R71t34 1254 | L9999F9999R97t37 1255 | L9999F72R9999t33 1256 | L9999F72R9999t34 1257 | L66F71R9999t32 1258 | L67F71R9999t31 1259 | L90F75R9999t32 1260 | L72F9999R9999t36 1261 | L70F9999R9999t34 1262 | L69F9999R9999t34 1263 | L68F9999R9999t34 1264 | L69F9999R9999t33 1265 | L90F9999R9999t35 1266 | L9999F9999R9999t40 1267 | L9999F9999R9999t37 1268 | L9999F9999R9999t38 1269 | L9999F9999R70t36 1270 | L9999F9999R73t38 1271 | L9999F9999R70t36 1272 | L9999F68R69t32 1273 | L9999F68R69t34 1274 | L9999F69R70t34 1275 | L9999F72R72t34 1276 | L9999F9999R93t37 1277 | L9999F71R9999t33 1278 | L66F70R9999t32 1279 | L66F70R9999t31 1280 | L67F71R9999t32 1281 | L9999F80R9999t35 1282 | L70F9999R9999t37 1283 | el0er0cor0t17 1284 | L68F9999R9999t33 1285 | L68F9999R9999t34 1286 | L67F9999R9999t33 1287 | L68F9999R9999t34 1288 | L68F9999R9999t36 1289 | L68F9999R9999t34 1290 | L68F9999R9999t36 1291 | L68F9999R9999t36 1292 | L68F9999R9999t35 1293 | L67F9999R9999t36 1294 | L68F9999R9999t36 1295 | L68F9999R9999t34 1296 | L67F9999R9999t36 1297 | L68F9999R9999t36 1298 | L67F9999R9999t36 1299 | L68F9999R9999t36 1300 | L68F9999R9999t36 1301 | L68F9999R9999t34 1302 | L68F9999R9999t36 1303 | L67F9999R9999t36 1304 | L68F9999R9999t35 1305 | L67F9999R9999t36 1306 | L68F9999R9999t35 1307 | L68F9999R9999t35 1308 | L68F9999R9999t36 1309 | L68F9999R9999t35 1310 | L68F9999R9999t36 1311 | L68F9999R9999t36 1312 | L68F9999R9999t35 1313 | L68F9999R9999t35 1314 | L68F9999R9999t36 1315 | L68F9999R9999t35 1316 | L68F9999R9999t36 1317 | L68F9999R9999t36 1318 | L68F9999R9999t35 1319 | L68F9999R9999t36 1320 | L67F9999R9999t37 1321 | el300er-300cor-35t24 1322 | L67F9999R9999t36 1323 | L68F9999R9999t36 1324 | L68F9999R9999t35 1325 | L68F9999R9999t35 1326 | L68F9999R9999t36 1327 | L68F9999R9999t36 1328 | L68F9999R9999t35 1329 | L68F9999R9999t36 1330 | L68F9999R9999t34 1331 | L68F9999R9999t36 1332 | L68F9999R9999t36 1333 | L68F9999R9999t35 1334 | L68F9999R9999t36 1335 | L68F9999R9999t36 1336 | L68F9999R9999t34 1337 | L68F9999R9999t36 1338 | L68F9999R9999t36 1339 | L68F9999R9999t35 1340 | L68F9999R9999t36 1341 | L68F9999R9999t36 1342 | L67F9999R9999t35 1343 | L68F9999R9999t36 1344 | L68F9999R9999t36 1345 | L68F9999R9999t35 1346 | L68F9999R9999t36 1347 | L68F9999R9999t36 1348 | L68F9999R9999t34 1349 | L68F9999R9999t36 1350 | L68F9999R9999t35 1351 | L68F9999R9999t36 1352 | L68F9999R9999t36 1353 | L68F9999R9999t35 1354 | L68F9999R9999t35 1355 | L68F9999R9999t36 1356 | L68F9999R9999t35 1357 | L67F9999R9999t36 1358 | L67F9999R9999t36 1359 | L68F9999R9999t35 1360 | L67F9999R9999t35 1361 | L68F9999R9999t36 1362 | L68F9999R9999t35 1363 | L68F9999R9999t37 1364 | L67F9999R9999t36 1365 | L68F9999R9999t35 1366 | L68F9999R9999t35 1367 | L68F9999R9999t36 1368 | L67F9999R9999t35 1369 | L68F9999R9999t36 1370 | L68F9999R9999t36 1371 | L68F9999R9999t36 1372 | L67F9999R9999t35 1373 | L68F9999R9999t36 1374 | L68F9999R9999t35 1375 | L68F9999R9999t36 1376 | L68F9999R9999t36 1377 | L68F9999R9999t35 1378 | L68F9999R9999t35 1379 | L68F9999R9999t36 1380 | L67F9999R9999t36 1381 | L68F9999R9999t36 1382 | L68F9999R9999t36 1383 | L68F9999R9999t35 1384 | L68F9999R9999t35 1385 | L68F9999R9999t36 1386 | L67F9999R9999t36 1387 | L68F9999R9999t36 1388 | L68F9999R9999t36 1389 | L68F9999R9999t35 1390 | L68F9999R9999t35 1391 | L68F9999R9999t36 1392 | L68F9999R9999t35 1393 | L68F9999R9999t36 1394 | L68F9999R9999t36 1395 | L68F9999R9999t35 1396 | L68F9999R9999t36 1397 | el0er0cor0t17 1398 | L67F9999R9999t36 1399 | L68F9999R9999t35 1400 | L68F9999R9999t35 1401 | L68F9999R9999t36 1402 | L68F9999R9999t35 1403 | L68F9999R9999t36 1404 | L68F9999R9999t36 1405 | L68F9999R9999t34 1406 | L68F9999R9999t36 1407 | L67F9999R9999t36 1408 | L67F9999R9999t36 1409 | L68F9999R9999t36 1410 | L68F9999R9999t36 1411 | L68F9999R9999t34 1412 | L67F9999R9999t36 1413 | L68F9999R9999t36 1414 | L67F9999R9999t35 1415 | L68F9999R9999t36 1416 | L68F9999R9999t36 1417 | L68F9999R9999t34 1418 | L68F9999R9999t36 1419 | L68F9999R9999t36 1420 | L68F9999R9999t35 1421 | L68F9999R9999t36 1422 | L68F9999R9999t36 1423 | L68F9999R9999t34 1424 | L68F9999R9999t36 1425 | L68F9999R9999t36 1426 | L68F9999R9999t35 1427 | L68F9999R9999t36 1428 | L68F9999R9999t35 1429 | L68F9999R9999t36 1430 | L67F9999R9999t36 1431 | L68F9999R9999t36 1432 | L68F9999R9999t35 1433 | L68F9999R9999t36 1434 | L68F9999R9999t35 1435 | L68F9999R9999t35 1436 | L68F9999R9999t36 1437 | L68F9999R9999t35 1438 | L68F9999R9999t36 1439 | L68F9999R9999t36 1440 | L68F9999R9999t35 1441 | L68F9999R9999t35 1442 | L68F9999R9999t36 1443 | L68F9999R9999t35 1444 | L68F9999R9999t36 1445 | L68F9999R9999t36 1446 | L68F9999R9999t35 1447 | L68F9999R9999t35 1448 | L68F9999R9999t35 1449 | L68F9999R9999t36 1450 | L68F9999R9999t36 1451 | L68F9999R9999t36 1452 | L67F9999R9999t36 1453 | L67F9999R9999t35 1454 | L68F9999R9999t36 1455 | L68F9999R9999t35 1456 | L68F9999R9999t36 1457 | L68F9999R9999t36 1458 | L68F9999R9999t35 1459 | L68F9999R9999t35 1460 | L68F9999R9999t36 1461 | L68F9999R9999t35 1462 | L68F9999R9999t36 1463 | L68F9999R9999t35 1464 | L68F9999R9999t36 1465 | L68F9999R9999t35 1466 | L68F9999R9999t35 1467 | L68F9999R9999t36 1468 | L68F9999R9999t36 1469 | L68F9999R9999t36 1470 | el-300er-300cor35t24 1471 | L67F9999R9999t36 1472 | L68F9999R9999t36 1473 | L68F9999R9999t36 1474 | L67F9999R9999t36 1475 | L68F9999R9999t36 1476 | L68F9999R9999t34 1477 | L68F9999R9999t36 1478 | L68F9999R9999t36 1479 | L68F9999R9999t35 1480 | L69F9999R9999t36 1481 | L69F9999R9999t36 1482 | L69F9999R9999t35 1483 | L69F9999R9999t35 1484 | L69F9999R9999t36 1485 | L69F9999R9999t36 1486 | L70F9999R9999t35 1487 | L70F9999R9999t36 1488 | L70F9999R9999t33 1489 | L70F9999R9999t34 1490 | L71F9999R9999t34 1491 | L70F9999R9999t34 1492 | L71F9999R9999t34 1493 | L70F9999R72t32 1494 | L71F9999R70t34 1495 | L71F9999R70t34 1496 | L71F9999R9999t35 1497 | L72F9999R9999t33 1498 | L72F9999R9999t34 1499 | L72F9999R49t30 1500 | L72F9999R49t31 1501 | L73F9999R67t33 1502 | L73F9999R49t32 1503 | L73F9999R46t31 1504 | L74F97R48t30 1505 | L74F96R75t30 1506 | L74F9999R91t35 1507 | L74F93R83t32 1508 | L74F94R9999t35 1509 | L73F93R103t34 1510 | L73F94R103t33 1511 | L73F93R9999t35 1512 | L73F94R105t35 1513 | L73F93R104t34 1514 | L72F94R103t34 1515 | L72F94R103t33 1516 | L72F94R104t34 1517 | L72F94R103t34 1518 | L72F95R103t34 1519 | L72F94R102t35 1520 | L72F95R103t33 1521 | L72F95R102t34 1522 | L72F96R102t34 1523 | L72F95R102t34 1524 | L72F96R103t33 1525 | L72F95R104t34 1526 | L72F95R104t34 1527 | L72F95R103t34 1528 | L72F95R104t34 1529 | L72F96R103t33 1530 | L72F95R102t34 1531 | L65F86R104t35 1532 | el0er0cor0t16 1533 | L72F94R104t34 1534 | L72F95R103t34 1535 | L72F96R102t34 1536 | L72F97R102t34 1537 | L72F97R101t33 1538 | L72F95R104t34 1539 | L72F97R101t34 1540 | L72F96R104t35 1541 | L72F96R102t34 1542 | L71F96R102t34 1543 | L72F96R102t34 1544 | L72F97R101t34 1545 | L72F95R102t34 1546 | L72F96R102t34 1547 | L72F96R103t33 1548 | L72F97R102t34 1549 | L72F96R102t34 1550 | L72F96R102t34 1551 | L72F96R104t34 1552 | L72F96R101t33 1553 | L72F95R103t34 1554 | L72F96R102t34 1555 | L72F95R88t32 1556 | L72F96R102t33 1557 | L72F96R103t35 1558 | L72F95R104t34 1559 | L72F97R103t34 1560 | L72F96R84t32 1561 | L72F97R104t33 1562 | L72F97R104t34 1563 | L72F9999R97t35 1564 | L72F9999R96t36 1565 | L71F96R104t35 1566 | L72F96R104t33 1567 | L72F94R85t32 1568 | L72F96R102t34 1569 | L72F98R81t32 1570 | L72F96R81t30 1571 | L73F9999R101t37 1572 | L74F9999R97t35 1573 | L73F9999R9999t34 1574 | L74F9999R9999t35 1575 | L74F9999R9999t33 1576 | L75F9999R9999t34 1577 | L75F9999R9999t34 1578 | L77F9999R9999t36 1579 | L85F9999R9999t37 1580 | L76F9999R9999t36 1581 | L85F9999R9999t35 1582 | L80F9999R38t31 1583 | L81F9999R40t31 1584 | L83F9999R43t30 1585 | L9999F9999R46t34 1586 | L9999F9999R50t35 1587 | L9999F9999R56t37 1588 | L85F9999R55t32 1589 | L87F9999R57t32 1590 | L9999F9999R62t35 1591 | L9999F9999R64t35 1592 | L9999F9999R66t35 1593 | L9999F9999R71t38 1594 | L9999F9999R74t38 1595 | L9999F9999R74t38 1596 | L9999F9999R78t38 1597 | L9999F9999R80t37 1598 | L9999F9999R81t39 1599 | L82F44R85t29 1600 | L9999F44R82t33 1601 | L9999F45R88t33 1602 | L105F47R89t31 1603 | L102F49R89t33 1604 | L101F51R90t32 1605 | L98F54R18t28 1606 | L93F9999R17t30 1607 | L97F9999R19t33 1608 | L80F9999R94t35 1609 | L84F82R20t27 1610 | L83F9999R9999t39 1611 | L74F9999R21t32 1612 | L74F9999R22t31 1613 | L73F9999R9999t36 1614 | L68F9999R9999t33 1615 | L41F9999R9999t32 1616 | L40F9999R9999t32 1617 | L41F9999R9999t32 1618 | L40F9999R9999t32 1619 | L63F9999R9999t35 1620 | L62F9999R9999t33 1621 | L59F9999R9999t34 1622 | L39F9999R9999t32 1623 | L35F9999R9999t31 1624 | L35F59R9999t29 1625 | L35F58R9999t29 1626 | L35F56R9999t28 1627 | L34F9999R9999t33 1628 | L35F9999R9999t32 1629 | L47F9999R9999t35 1630 | L34F9999R9999t30 1631 | L32F9999R9999t34 1632 | L33F52R9999t29 1633 | L32F9999R9999t33 1634 | L31F9999R9999t34 1635 | L31F9999R9999t34 1636 | L31F9999R9999t31 1637 | L31F9999R9999t34 1638 | L31F9999R70t28 1639 | L32F9999R9999t34 1640 | L32F9999R9999t31 1641 | L33F9999R9999t34 1642 | L33F9999R9999t31 1643 | L32F9999R9999t32 1644 | L32F9999R9999t31 1645 | L31F9999R9999t32 1646 | L32F9999R9999t31 1647 | L31F9999R9999t33 1648 | L32F9999R9999t32 1649 | L34F9999R9999t32 1650 | L33F9999R9999t30 1651 | L33F9999R9999t32 1652 | L32F9999R9999t32 1653 | L32F9999R9999t34 1654 | L32F9999R9999t30 1655 | L32F9999R9999t32 1656 | L33F9999R9999t32 1657 | L46F9999R9999t32 1658 | L33F9999R9999t32 1659 | L32F9999R9999t34 1660 | L33F9999R9999t32 1661 | L32F9999R9999t31 1662 | L33F9999R9999t31 1663 | L32F9999R9999t32 1664 | L31F9999R9999t31 1665 | L31F9999R9999t34 1666 | L31F9999R9999t31 1667 | L32F9999R9999t31 1668 | L31F9999R9999t32 1669 | L32F9999R9999t32 1670 | L32F9999R9999t30 1671 | L33F9999R9999t34 1672 | L32F9999R9999t32 1673 | L32F9999R9999t31 1674 | L31F9999R9999t31 1675 | L32F9999R9999t32 1676 | L33F9999R9999t32 1677 | L39F9999R9999t34 1678 | L33F9999R9999t30 1679 | L32F9999R9999t32 1680 | L32F9999R9999t32 1681 | L33F9999R9999t31 1682 | L32F9999R9999t32 1683 | L32F9999R9999t34 1684 | L33F9999R9999t32 1685 | L33F9999R9999t31 1686 | L32F9999R9999t31 1687 | L32F9999R9999t32 1688 | L36F9999R9999t32 1689 | L33F9999R9999t33 1690 | L32F9999R9999t31 1691 | L32F9999R9999t32 1692 | L32F9999R9999t32 1693 | L32F9999R9999t31 1694 | L32F9999R9999t31 1695 | L31F9999R9999t34 1696 | L31F9999R9999t31 1697 | L31F9999R9999t32 1698 | L32F9999R9999t31 1699 | L31F9999R9999t31 1700 | L31F9999R9999t32 1701 | L29F9999R9999t32 1702 | L30F9999R9999t32 1703 | L30F9999R9999t31 1704 | L31F9999R9999t32 1705 | L31F9999R9999t31 1706 | L31F9999R9999t32 1707 | L30F9999R9999t34 1708 | L31F9999R9999t32 1709 | L31F9999R9999t30 1710 | L30F9999R9999t32 1711 | L31F9999R9999t32 1712 | L31F9999R9999t31 1713 | L30F9999R9999t33 1714 | L32F9999R9999t31 1715 | L33F9999R9999t32 1716 | L31F9999R9999t32 1717 | L31F9999R9999t30 1718 | L32F9999R9999t32 1719 | L31F9999R9999t34 1720 | L31F9999R9999t31 1721 | L31F9999R9999t31 1722 | L35F9999R9999t32 1723 | L32F9999R9999t32 1724 | L31F9999R9999t31 1725 | L31F9999R9999t33 1726 | L32F9999R9999t32 1727 | L32F9999R9999t31 1728 | L31F9999R9999t32 1729 | L31F9999R9999t31 1730 | L31F9999R9999t32 1731 | L31F9999R9999t34 1732 | L58F9999R9999t33 1733 | L34F9999R9999t31 1734 | L37F9999R9999t32 1735 | L38F9999R9999t32 1736 | L46F9999R9999t32 1737 | L41F54R9999t29 1738 | L45F52R9999t29 1739 | L47F54R9999t29 1740 | L46F9999R9999t34 1741 | L46F9999R9999t32 1742 | L47F9999R9999t33 1743 | L47F9999R9999t32 1744 | L45F9999R19t27 1745 | L47F9999R18t29 1746 | L48F9999R18t29 1747 | L50F9999R18t29 1748 | L48F9999R18t29 1749 | L32F9999R18t29 1750 | L70F9999R19t29 1751 | L50F9999R19t30 1752 | L25F9999R19t28 1753 | L24F57R19t22 1754 | L24F52R19t23 1755 | L25F51R19t22 1756 | L24F9999R16t29 1757 | L26F49R15t23 1758 | L25F9999R15t27 1759 | L28F49R16t22 1760 | L27F48R15t22 1761 | L28F49R15t23 1762 | L29F47R15t22 1763 | L9999F47R23t29 1764 | L9999F48R18t30 1765 | L9999F89R17t30 1766 | L9999F88R22t32 1767 | L9999F90R68t35 1768 | L9999F89R22t32 1769 | L9999F89R67t33 1770 | L9999F89R7t30 1771 | L9999F89R8t30 1772 | L9999F90R5t30 1773 | L9999F91R4t29 1774 | L9999F91R6t28 1775 | L9999F90R5t28 1776 | L9999F9999R6t30 1777 | L9999F89R5t28 1778 | L9999F9999R4t31 1779 | L9999F9999R4t30 1780 | L9999F9999R3t33 1781 | L9999F9999R5t31 1782 | L9999F9999R3t31 1783 | L9999F9999R3t31 1784 | L9999F9999R3t31 1785 | L9999F87R3t28 1786 | L9999F87R5t26 1787 | L9999F87R4t28 1788 | L9999F48R3t26 1789 | L9999F61R4t25 1790 | L9999F47R4t26 1791 | L9999F48R4t24 1792 | L9999F49R40t29 1793 | L9999F45R39t29 1794 | L9999F87R38t29 1795 | L9999F89R37t33 1796 | L9999F48R37t31 1797 | L9999F46R38t28 1798 | L9999F46R39t28 1799 | L9999F46R38t28 1800 | L9999F46R37t29 1801 | L9999F47R37t27 1802 | L9999F47R38t29 1803 | L9999F48R40t30 1804 | L9999F9999R39t35 1805 | L9999F9999R39t36 1806 | L9999F9999R42t34 1807 | L9999F11R41t27 1808 | L9999F9999R43t33 1809 | L9999F9999R42t35 1810 | L9999F9999R42t35 1811 | L9999F9999R43t34 1812 | L9999F9999R43t34 1813 | L9999F9999R44t35 1814 | L9999F9999R43t34 1815 | L9999F9999R43t33 1816 | L9999F9999R44t34 1817 | L9999F9999R20t33 1818 | L9999F9999R26t32 1819 | L9999F9999R18t35 1820 | L9999F9999R18t33 1821 | L9999F9999R17t32 1822 | L9999F9999R19t32 1823 | L9999F9999R22t33 1824 | L9999F9999R21t33 1825 | L9999F9999R21t35 1826 | L9999F9999R19t33 1827 | L9999F9999R18t32 1828 | L9999F9999R20t33 1829 | L9999F9999R18t32 1830 | L9999F9999R21t33 1831 | L9999F9999R18t34 1832 | L9999F9999R18t34 1833 | L9999F9999R22t33 1834 | L9999F9999R17t33 1835 | L9999F9999R18t33 1836 | L9999F9999R22t32 1837 | L9999F9999R18t34 1838 | L9999F9999R18t33 1839 | L9999F9999R18t33 1840 | L9999F9999R19t32 1841 | L9999F9999R20t33 1842 | L9999F9999R20t33 1843 | L9999F9999R19t34 1844 | L9999F9999R18t33 1845 | L9999F9999R18t32 1846 | L9999F9999R17t33 1847 | L9999F9999R17t32 1848 | L9999F9999R18t33 1849 | L9999F9999R20t34 1850 | L9999F9999R19t33 1851 | L9999F9999R20t33 1852 | L9999F9999R20t33 1853 | L9999F56R19t27 1854 | L9999F56R18t27 1855 | L9999F55R18t28 1856 | L9999F9999R18t33 1857 | L9999F9999R19t33 1858 | L9999F9999R18t33 1859 | L9999F9999R17t33 1860 | L9999F9999R17t31 1861 | L9999F9999R17t33 1862 | L9999F9999R17t33 1863 | L9999F9999R17t33 1864 | L9999F9999R17t31 1865 | L9999F9999R17t33 1866 | L9999F9999R17t33 1867 | L9999F9999R17t33 1868 | L9999F9999R17t32 1869 | L9999F9999R17t32 1870 | L9999F9999R16t33 1871 | L9999F9999R17t33 1872 | L9999F9999R17t32 1873 | L9999F9999R17t32 1874 | L9999F9999R17t33 1875 | L9999F9999R17t32 1876 | L9999F9999R17t33 1877 | L9999F9999R17t32 1878 | L9999F9999R17t33 1879 | L9999F9999R17t32 1880 | L9999F9999R17t32 1881 | L9999F9999R17t30 1882 | L9999F9999R17t33 1883 | L9999F9999R18t33 1884 | L9999F9999R20t33 1885 | L9999F9999R21t32 1886 | L9999F9999R57t35 1887 | L9999F9999R17t33 1888 | L9999F9999R17t32 1889 | L9999F9999R17t33 1890 | L9999F9999R18t32 1891 | L9999F9999R20t33 1892 | L9999F9999R19t33 1893 | L9999F9999R20t32 1894 | L9999F9999R19t32 1895 | L9999F9999R19t33 1896 | L9999F9999R19t33 1897 | L9999F9999R19t33 1898 | L9999F9999R18t32 1899 | L9999F9999R19t32 1900 | L9999F9999R18t33 1901 | L9999F9999R18t33 1902 | L9999F9999R18t32 1903 | L9999F9999R18t33 1904 | L9999F9999R17t33 1905 | L9999F9999R18t33 1906 | L9999F9999R18t33 1907 | L9999F9999R18t32 1908 | L9999F9999R18t33 1909 | L9999F9999R18t32 1910 | L9999F9999R17t33 1911 | L9999F9999R17t32 1912 | L9999F9999R17t33 1913 | L9999F9999R17t32 1914 | L9999F9999R17t33 1915 | L9999F9999R17t32 1916 | L9999F9999R17t32 1917 | L9999F9999R17t33 1918 | L9999F9999R17t33 1919 | L9999F9999R17t32 1920 | L9999F9999R17t32 1921 | L9999F9999R18t33 1922 | L9999F9999R18t33 1923 | L9999F9999R17t33 1924 | L9999F9999R17t31 1925 | L9999F9999R17t33 1926 | L9999F9999R17t33 1927 | L9999F9999R17t33 1928 | L9999F9999R17t32 1929 | L9999F9999R17t33 1930 | L9999F9999R17t33 1931 | --------------------------------------------------------------------------------