From 52d5ebb21fb3b26496211c8ae6d056bfaf5df429 Mon Sep 17 00:00:00 2001 From: Albin Date: Tue, 19 Nov 2019 17:19:02 +0100 Subject: Seg_constant_list borde funka --- Kod/bilbana/yc4/do_car.m | 7 +++++-- Kod/bilbana/yc4/main.m | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'Kod') diff --git a/Kod/bilbana/yc4/do_car.m b/Kod/bilbana/yc4/do_car.m index f205f02..08c25fe 100644 --- a/Kod/bilbana/yc4/do_car.m +++ b/Kod/bilbana/yc4/do_car.m @@ -90,6 +90,7 @@ if car.running == true if car.new_lap == false % choose_position krachar vid nytt varv (seg 10) if car.lap ~= 0 car.seg_times(car.lap, car.segment) = toc(car.seg_tic); + car.seg_constant_list(car.lap, car.segment) = car.seg_constant; end car.segment = car.segment + 1; car.seg_tic = tic; @@ -105,6 +106,7 @@ if car.running == true end if seg_plus ~= 0 car.seg_times(car.lap, car.segment - seg_plus - 1) = 0; + car.seg_constant_list(car.lap, car.segment - seg_plus - 1) = 0; disp(car.seg_times(car.lap, :)) disp(seg_plus) end @@ -132,6 +134,7 @@ if car.running == true % Spara inte seg_time om missad givare if car.segment == 9 car.seg_times(car.lap, car.segment) = toc(car.seg_tic); + car.seg_constant_list(car.lap, car.segment) = car.seg_constant; end car.seg_tic = tic; car.lap_times(car.lap) = toc(car.lap_tic); @@ -156,8 +159,8 @@ end %% CALCULATE if car.running == true && car.automatic == true car.v = get_new_v(car.position, car.map); - seg_constant = get_seg_constant(car.position, car.lap_constants, car.num, car.pos_at); - car.u = get_new_u(car.v, seg_constant); + car.seg_constant = get_seg_constant(car.position, car.lap_constants, car.num, car.pos_at); + car.u = get_new_u(car.v, car.seg_constant); end %% CONTROLLER diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index 9b31618..e5ac062 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -75,6 +75,7 @@ car2.map = Bana2; car2.miss_probability = 0.1; car2.seg_constant_list = []; % TODO car2.lap_constants = [1,1,1,1,1,1,1,1,1]; % TODO +car2.seg_constant = 1; t = 0; highToc = 0; -- cgit v1.2.1 From e5f92b8b507861769c7439b1873ef580e1400538 Mon Sep 17 00:00:00 2001 From: Albin Date: Wed, 20 Nov 2019 17:18:59 +0100 Subject: =?UTF-8?q?Typ=20s=C3=A5h=C3=A4r=20ska=20det=20se=20ut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kod/bilbana/yc4/do_boot.m | 89 +++++++++++++++++++++++++++++++++++++++++++++++ Kod/bilbana/yc4/do_car.m | 2 +- Kod/bilbana/yc4/main.m | 47 +++++++++++++++++++------ 3 files changed, 126 insertions(+), 12 deletions(-) create mode 100644 Kod/bilbana/yc4/do_boot.m (limited to 'Kod') diff --git a/Kod/bilbana/yc4/do_boot.m b/Kod/bilbana/yc4/do_boot.m new file mode 100644 index 0000000..645e100 --- /dev/null +++ b/Kod/bilbana/yc4/do_boot.m @@ -0,0 +1,89 @@ +function [car] = do_boot(car, boot_time) +%BOOT Summary of this function goes here +% Detailed explanation goes here +if car.running == true + [car.new_lap, car.new_check_point, car.time] = get_car_position(car.num); + %% CHECK POINT + if car.new_check_point == true + if car.new_lap == false % choose_position krachar vid nytt varv (seg 10) + if car.lap ~= 0 + car.seg_times(car.lap, car.segment) = toc(car.seg_tic); + car.seg_constant_list(car.lap, car.segment) = car.seg_constant; + end + car.segment = car.segment + 1; + car.seg_tic = tic; + if car.lap > 2 % S�kerhetsmarginal (B�r vara 1?) + disp(car) + [new_position, seg_plus] = ... + choose_position(car.position, car.segment, car.num, car.pos_at); + if seg_plus ~= 0 && car.segment == 2 + disp('Hoppar �ver missad givare 1/2'); + else + car.position = new_position; + car.segment = car.segment + seg_plus; + end + if seg_plus ~= 0 + car.seg_times(car.lap, car.segment - seg_plus - 1) = 0; + car.seg_constant_list(car.lap, car.segment - seg_plus - 1) = 0; + disp(car.seg_times(car.lap, :)) + disp(seg_plus) + end + %car.miss_time = uint64(0); + else + car.position = car.pos_at(car.segment); + %car.miss_time = uint64(0); + end + end + end + %% NEW LAP + if car.new_lap == true + car.lap_constants = gov_set(car.constant); + car.new_lap = false; %TODO remove + beep; + if car.lap == 0 + % dont save time for first lap + car.segment = 1; + car.lap = car.lap + 1; + car.seg_tic = tic; + car.lap_tic = tic; + else + % beep; + % Spara inte seg_time om missad givare + if car.segment == 9 + car.seg_times(car.lap, car.segment) = toc(car.seg_tic); + car.seg_constant_list(car.lap, car.segment) = car.seg_constant; + end + car.seg_tic = tic; + car.lap_times(car.lap) = toc(car.lap_tic); + car.lap_tic = tic; + car.position = 0; + + if car.lap == 1 && size(car.seg_times, 2) < 9 + disp('FEL: För få segment!!') + car.stopped = true; + other_car.stopped = true; + return + end + + display_data = [display_data, put_text(100, 16 + (16 * car.num), 'L', strjoin({num2str(car.lap), get_time_as_string(round(car.lap_times(car.lap) * 1000))}, ' '))]; + + car.segment = 1; + car.lap = car.lap + 1; + end + end + %% CALCULATE + if car.running == true && car.automatic == true + car.v = get_new_v(car.position, car.map); + car.seg_constant = get_seg_constant(car.position, car.lap_constants, car.num, car.pos_at); + car.u = get_new_u(car.v, car.seg_constant); + end + %% BEFORE FIRST LAP + if car.lap == 0 + t = toc(boot_time); + if t > 1 + car.constant = car.constant + 0.05; + boot_time = tic; + end + end +end +end \ No newline at end of file diff --git a/Kod/bilbana/yc4/do_car.m b/Kod/bilbana/yc4/do_car.m index 08c25fe..96b328d 100644 --- a/Kod/bilbana/yc4/do_car.m +++ b/Kod/bilbana/yc4/do_car.m @@ -120,7 +120,7 @@ if car.running == true %% NEW LAP if car.new_lap == true - car.lap_constants = gov_set(get_car_constant(car.num)); + car.lap_constants = gov_set(car.constant); car.new_lap = false; %TODO remove beep; if car.lap == 0 diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index e5ac062..7b9a2b1 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -1,4 +1,5 @@ clear all; +display_active = false; %% INIT TRACK disp('Startar bilbanan. Avsluta med q.') @@ -17,12 +18,14 @@ global log_debug; log_debug = true; global log_verbose; log_verbose = false; - % INIT DISPLAY -addpath display/ClientServerApp/Release -cd display/ClientServerApp/Release -!startServer -cd ../../.. +if display_active + + addpath display/ClientServerApp/Release + cd display/ClientServerApp/Release + !startServer + cd ../../.. +end display = struct; display.data = [clear_display()]; @@ -57,6 +60,8 @@ car1.map = Bana1; car1.approximation = []; car1.miss_probability = 0.0; car1.lap_constants = [1,1,1,1,1,1,1,1,1]; % TODO +car1.constant = 0.5; +car1.boot = false; car2 = struct; car2.num = 2; @@ -76,6 +81,14 @@ car2.miss_probability = 0.1; car2.seg_constant_list = []; % TODO car2.lap_constants = [1,1,1,1,1,1,1,1,1]; % TODO car2.seg_constant = 1; +car2.constant = 0.5; +car2.boot = false; + +boot = struct; +boot.car1 = false; +boot.car2 = false; +boot.car1_time = 0; +boot.car2_time = 0; t = 0; highToc = 0; @@ -87,6 +100,8 @@ car1.response = input('Vill du köra bil 1? [N] ', 's'); if car1.response == 'J' car1.running = true; car1.automatic = true; + boot.car1 = true; + boot.car1_time = tic; elseif car1.response == 'M' car1.running = true; car1.automatic = false; @@ -99,6 +114,8 @@ car2.response = input('Vill du köra bil 2? [N] ', 's'); if car2.response == 'J' car2.running = true; car2.automatic = true; + boot.car2 = true; + boot.car2_time = tic; elseif car2.response == 'M' car2.running = true; car2.automatic = false; @@ -114,8 +131,7 @@ elseif not(isreal(ref_time)) ref_time = 13; end %} -ref_time = 13; - +ref_time = 13 %% MAIN LOOP while 1 readTime = tic; @@ -130,9 +146,18 @@ while 1 figure(hf) drawnow - - [car1, car1.stop, display.data] = do_car(car1, t, display.data); - [car2, car2.stop, display.data] = do_car(car2, t, display.data); + + %% CORE OF LOOP + if car1.boot + car1 = boot(car1, boot); + else + [car1, car1.stop, display.data] = do_car(car1, t, display.data); + end + if car2.boot + car2 = boot(car2, boot); + else + [car2, car2.stop, display.data] = do_car(car2, t, display.data); + end if car1.stop == true disp('stopped by car 1'); @@ -151,7 +176,7 @@ while 1 while 1 %Whileloop med paus som k�rs till pausen �verskridit 0.07 sekunder % DISPLAY display.send_delay = tic; - if toc(display.last_send) > display.send_interval + if toc(display.last_send) > display.send_interval && display_active % queue control signal if car1.running && car1.automatic % display.data = [display.data, put_text(20, 16 + (16 * 1), 'L', num2str(car1.u))]; -- cgit v1.2.1 From 92c7372b418f3160d50fbe2fe5ab795aac1ccb4f Mon Sep 17 00:00:00 2001 From: Albin Date: Wed, 20 Nov 2019 18:17:25 +0100 Subject: =?UTF-8?q?Funkar=20n=C3=A4stan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kod/bilbana/yc4/do_boot.m | 82 +++-------------------------------------------- Kod/bilbana/yc4/main.m | 45 +++++++++++++------------- 2 files changed, 27 insertions(+), 100 deletions(-) (limited to 'Kod') diff --git a/Kod/bilbana/yc4/do_boot.m b/Kod/bilbana/yc4/do_boot.m index 645e100..ffa7878 100644 --- a/Kod/bilbana/yc4/do_boot.m +++ b/Kod/bilbana/yc4/do_boot.m @@ -1,88 +1,14 @@ -function [car] = do_boot(car, boot_time) +function [car, boot] = do_boot(car, boot) %BOOT Summary of this function goes here % Detailed explanation goes here if car.running == true - [car.new_lap, car.new_check_point, car.time] = get_car_position(car.num); - %% CHECK POINT - if car.new_check_point == true - if car.new_lap == false % choose_position krachar vid nytt varv (seg 10) - if car.lap ~= 0 - car.seg_times(car.lap, car.segment) = toc(car.seg_tic); - car.seg_constant_list(car.lap, car.segment) = car.seg_constant; - end - car.segment = car.segment + 1; - car.seg_tic = tic; - if car.lap > 2 % S�kerhetsmarginal (B�r vara 1?) - disp(car) - [new_position, seg_plus] = ... - choose_position(car.position, car.segment, car.num, car.pos_at); - if seg_plus ~= 0 && car.segment == 2 - disp('Hoppar �ver missad givare 1/2'); - else - car.position = new_position; - car.segment = car.segment + seg_plus; - end - if seg_plus ~= 0 - car.seg_times(car.lap, car.segment - seg_plus - 1) = 0; - car.seg_constant_list(car.lap, car.segment - seg_plus - 1) = 0; - disp(car.seg_times(car.lap, :)) - disp(seg_plus) - end - %car.miss_time = uint64(0); - else - car.position = car.pos_at(car.segment); - %car.miss_time = uint64(0); - end - end - end - %% NEW LAP - if car.new_lap == true - car.lap_constants = gov_set(car.constant); - car.new_lap = false; %TODO remove - beep; - if car.lap == 0 - % dont save time for first lap - car.segment = 1; - car.lap = car.lap + 1; - car.seg_tic = tic; - car.lap_tic = tic; - else - % beep; - % Spara inte seg_time om missad givare - if car.segment == 9 - car.seg_times(car.lap, car.segment) = toc(car.seg_tic); - car.seg_constant_list(car.lap, car.segment) = car.seg_constant; - end - car.seg_tic = tic; - car.lap_times(car.lap) = toc(car.lap_tic); - car.lap_tic = tic; - car.position = 0; - - if car.lap == 1 && size(car.seg_times, 2) < 9 - disp('FEL: För få segment!!') - car.stopped = true; - other_car.stopped = true; - return - end - - display_data = [display_data, put_text(100, 16 + (16 * car.num), 'L', strjoin({num2str(car.lap), get_time_as_string(round(car.lap_times(car.lap) * 1000))}, ' '))]; - - car.segment = 1; - car.lap = car.lap + 1; - end - end - %% CALCULATE - if car.running == true && car.automatic == true - car.v = get_new_v(car.position, car.map); - car.seg_constant = get_seg_constant(car.position, car.lap_constants, car.num, car.pos_at); - car.u = get_new_u(car.v, car.seg_constant); - end %% BEFORE FIRST LAP if car.lap == 0 - t = toc(boot_time); + t = toc(boot.time); if t > 1 car.constant = car.constant + 0.05; - boot_time = tic; + disp(car.constant) + boot.time = tic; end end end diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index 7b9a2b1..5481aa0 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -60,8 +60,8 @@ car1.map = Bana1; car1.approximation = []; car1.miss_probability = 0.0; car1.lap_constants = [1,1,1,1,1,1,1,1,1]; % TODO -car1.constant = 0.5; -car1.boot = false; +car1.constant = 0.1; +car1.stop = false; car2 = struct; car2.num = 2; @@ -81,14 +81,16 @@ car2.miss_probability = 0.1; car2.seg_constant_list = []; % TODO car2.lap_constants = [1,1,1,1,1,1,1,1,1]; % TODO car2.seg_constant = 1; -car2.constant = 0.5; -car2.boot = false; +car2.constant = 0.1; +car2.stop = false; -boot = struct; -boot.car1 = false; -boot.car2 = false; -boot.car1_time = 0; -boot.car2_time = 0; +boot1 = struct; +boot1.status = false; +boot1.time = 0; + +boot2 = struct; +boot2.status = false; +boot2.time = 0; t = 0; highToc = 0; @@ -100,8 +102,8 @@ car1.response = input('Vill du köra bil 1? [N] ', 's'); if car1.response == 'J' car1.running = true; car1.automatic = true; - boot.car1 = true; - boot.car1_time = tic; + boot1.status = true; + boot1.time = tic; elseif car1.response == 'M' car1.running = true; car1.automatic = false; @@ -114,8 +116,8 @@ car2.response = input('Vill du köra bil 2? [N] ', 's'); if car2.response == 'J' car2.running = true; car2.automatic = true; - boot.car2 = true; - boot.car2_time = tic; + boot2.status = true; + boot2.time = tic; elseif car2.response == 'M' car2.running = true; car2.automatic = false; @@ -148,15 +150,14 @@ while 1 drawnow %% CORE OF LOOP - if car1.boot - car1 = boot(car1, boot); - else - [car1, car1.stop, display.data] = do_car(car1, t, display.data); + [car1, car1.stop, display.data] = do_car(car1, t, display.data); + [car2, car2.stop, display.data] = do_car(car2, t, display.data); + %% BOOTSTRAP + if boot1.status + [car1, boot1] = do_boot(car1, boot1); end - if car2.boot - car2 = boot(car2, boot); - else - [car2, car2.stop, display.data] = do_car(car2, t, display.data); + if boot2.status + [car2, boot2] = do_boot(car2, boot2); end if car1.stop == true @@ -222,7 +223,7 @@ disp(car1); disp(car2); terminate(1); -terminate(2); +terminate(2) matlabclient(3); -- cgit v1.2.1 From 9b04ca018663d2f1015a3c77f545ed2df6b7b79d Mon Sep 17 00:00:00 2001 From: Albin Date: Wed, 20 Nov 2019 18:23:55 +0100 Subject: Tog bort seg_constant --- Kod/bilbana/yc4/do_car.m | 6 +----- Kod/bilbana/yc4/main.m | 6 +++--- 2 files changed, 4 insertions(+), 8 deletions(-) (limited to 'Kod') diff --git a/Kod/bilbana/yc4/do_car.m b/Kod/bilbana/yc4/do_car.m index 96b328d..46d1a9d 100644 --- a/Kod/bilbana/yc4/do_car.m +++ b/Kod/bilbana/yc4/do_car.m @@ -90,7 +90,6 @@ if car.running == true if car.new_lap == false % choose_position krachar vid nytt varv (seg 10) if car.lap ~= 0 car.seg_times(car.lap, car.segment) = toc(car.seg_tic); - car.seg_constant_list(car.lap, car.segment) = car.seg_constant; end car.segment = car.segment + 1; car.seg_tic = tic; @@ -106,7 +105,6 @@ if car.running == true end if seg_plus ~= 0 car.seg_times(car.lap, car.segment - seg_plus - 1) = 0; - car.seg_constant_list(car.lap, car.segment - seg_plus - 1) = 0; disp(car.seg_times(car.lap, :)) disp(seg_plus) end @@ -134,7 +132,6 @@ if car.running == true % Spara inte seg_time om missad givare if car.segment == 9 car.seg_times(car.lap, car.segment) = toc(car.seg_tic); - car.seg_constant_list(car.lap, car.segment) = car.seg_constant; end car.seg_tic = tic; car.lap_times(car.lap) = toc(car.lap_tic); @@ -159,8 +156,7 @@ end %% CALCULATE if car.running == true && car.automatic == true car.v = get_new_v(car.position, car.map); - car.seg_constant = get_seg_constant(car.position, car.lap_constants, car.num, car.pos_at); - car.u = get_new_u(car.v, car.seg_constant); + car.u = get_new_u(car.v, car.constant); end %% CONTROLLER diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index 5481aa0..6794831 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -224,9 +224,9 @@ disp(car2); terminate(1); terminate(2) - -matlabclient(3); - +if display_active + matlabclient(3); +end %% DISPLAY GRAPHS if car1.running == true -- cgit v1.2.1 From 1a5ecc5ce4c739e0e9e22f13dd384c98a849572f Mon Sep 17 00:00:00 2001 From: Albin Date: Wed, 20 Nov 2019 19:15:08 +0100 Subject: =?UTF-8?q?Bootstrap=20funkar=20f=C3=B6r=204=20bilar=20(bl=C3=A5?= =?UTF-8?q?=2017,=20vit=2082,=20bussen,=20gr=C3=A5=2067)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kod/bilbana/yc4/do_boot.m | 16 +++++++++++++++- Kod/bilbana/yc4/do_car.m | 4 ++-- Kod/bilbana/yc4/main.m | 4 ++-- 3 files changed, 19 insertions(+), 5 deletions(-) (limited to 'Kod') diff --git a/Kod/bilbana/yc4/do_boot.m b/Kod/bilbana/yc4/do_boot.m index ffa7878..31f4db0 100644 --- a/Kod/bilbana/yc4/do_boot.m +++ b/Kod/bilbana/yc4/do_boot.m @@ -5,11 +5,25 @@ if car.running == true %% BEFORE FIRST LAP if car.lap == 0 t = toc(boot.time); - if t > 1 + if t > 0.6 car.constant = car.constant + 0.05; disp(car.constant) boot.time = tic; end end + %% First segment + if car.lap == 1 && car.segment == 1 + t = toc(boot.time); + if t > 3 + car.constant = car.constant + 0.05; + disp(car.constant) + boot.time = tic; + end + end + %% END BOOTSTRAP + if car.segment > 2 + boot.status = 0; + disp('END OF BOOTSTRAP') + end end end \ No newline at end of file diff --git a/Kod/bilbana/yc4/do_car.m b/Kod/bilbana/yc4/do_car.m index 46d1a9d..7b7ebfd 100644 --- a/Kod/bilbana/yc4/do_car.m +++ b/Kod/bilbana/yc4/do_car.m @@ -1,4 +1,4 @@ -function [car, stop, display_data] = do_car(car, t, display_data) +function [car, stop, display_data] = do_car(car, t, display_data, boot) %DO_CAR Ger nya värden till struct car, avgör om koden ska stoppas samt hämtar displaydata. %{ Input/Output: @@ -44,7 +44,7 @@ end %% READ INPUT FROM TRACK if car.running == true if car.lap ~= 0 - if toc(car.seg_tic) > 9.0 + if toc(car.seg_tic) > 9.0 && not(boot.status) set_car_speed(1, 0); set_car_speed(2, 0); %disp(strjoin({'AvÃ¥kning bil', num2str(car.num)})); diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index 6794831..b7221e3 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -150,8 +150,8 @@ while 1 drawnow %% CORE OF LOOP - [car1, car1.stop, display.data] = do_car(car1, t, display.data); - [car2, car2.stop, display.data] = do_car(car2, t, display.data); + [car1, car1.stop, display.data] = do_car(car1, t, display.data, boot1); + [car2, car2.stop, display.data] = do_car(car2, t, display.data, boot2); %% BOOTSTRAP if boot1.status [car1, boot1] = do_boot(car1, boot1); -- cgit v1.2.1 From b61d81b92dfb6515138fad71accb40fe3bba4c39 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 22 Nov 2019 12:53:15 +0100 Subject: =?UTF-8?q?F=C3=B6rs=C3=B6ker=20komma=20runt=20trasiga=20givare?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kod/scripts/test_givare.m | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'Kod') diff --git a/Kod/scripts/test_givare.m b/Kod/scripts/test_givare.m index 204d501..5ad8afd 100644 --- a/Kod/scripts/test_givare.m +++ b/Kod/scripts/test_givare.m @@ -26,8 +26,33 @@ while 1 [car1.new_lap, car1.new_check_point, car1.time] = get_car_position(1); [car2.new_lap, car2.new_check_point, car2.time] = get_car_position(2); - if car1.new_lap == true || car1.new_check_point == true || car2.new_lap == true || car2.new_check_point == true - beep; + if car1.new_check_point + beep; + disp('car 1 cp') + end + if car2.new_check_point + beep; + disp('car 2 cp') + end + if car1.new_lap + beep; + disp('car 1 lap') + end + if car2.new_lap + beep; + disp('car 2 lap') + end + % KOMPENSERA FÖR TRASIG BANA + if car1.new_lap && car2.new_check_point + car2.new_lap = 0; + end + pause(0.1) + + if car2.new_lap + disp('NEW LAP CAR 2!') + end + if car2.new_check_point + disp('NEW CHECKPOINT CAR 2!') end pause(0.1) -- cgit v1.2.1 From 4e4073b4c12370d162b489757e51977eeab08b8a Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 22 Nov 2019 15:31:21 +0100 Subject: =?UTF-8?q?Lade=20till=20testscript=20kompenserat=20f=C3=B6r=20tra?= =?UTF-8?q?siga=20givare?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kod/scripts/test_givare_kompenserad.m | 79 +++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 Kod/scripts/test_givare_kompenserad.m (limited to 'Kod') diff --git a/Kod/scripts/test_givare_kompenserad.m b/Kod/scripts/test_givare_kompenserad.m new file mode 100644 index 0000000..2ac0841 --- /dev/null +++ b/Kod/scripts/test_givare_kompenserad.m @@ -0,0 +1,79 @@ +disp('Startar bilbanan. Avsluta med q.') +hf=figure('position',[0 0 eps eps],'menubar','none'); + +initialize_counters(1) +initialize_counters(2) + +start_race(1) +start_race(2) + +config_IOs + +car1 = struct; +car2 = struct; + +while 1 + %% PRE-LOOP + if strcmp(get(hf,'currentcharacter'),'q') + close(hf) + break + end + + figure(hf) + drawnow + + %% READ + [car1.new_lap, car1.new_check_point, car1.time] = get_car_position(1); + [car2.new_lap, car2.new_check_point, car2.time] = get_car_position(2); + + if car1.new_lap || car1.new_check_point == true || car2.new_lap == true || car2.new_check_point == true + disp('###') + end + + if car1.new_check_point + beep; + disp('car 1 cp') + end + if car2.new_check_point + beep; + disp('car 2 cp') + end + if car1.new_lap + beep; + disp('car 1 lap') + end + if car2.new_lap + beep; + disp('car 2 lap') + end + % KOMPENSERA FÖR TRASIG BANA + if car1.new_lap && (car2.new_check_point || car1.new_check_point) + car2.new_lap = 0; + elseif car1.new_lap + car2.new_lap = 1; + end + pause(0.1) + + if car1.new_lap || car1.new_check_point == true || car2.new_lap == true || car2.new_check_point == true + disp('---') + end + + if car1.new_lap + disp('New lap car 1') + end + if car1.new_check_point + disp('New checkpoint car 1') + end + if car2.new_lap + disp('NEW LAP CAR 2!') + end + if car2.new_check_point + disp('NEW CHECKPOINT CAR 2!') + end + + pause(0.1) +end + +%% +terminate(1) +terminate(2) \ No newline at end of file -- cgit v1.2.1 From 9ed366cbce18b58df5f880e92e008c3906c93378 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 22 Nov 2019 15:56:46 +0100 Subject: =?UTF-8?q?Anpassade=20koden=20f=C3=B6r=20att=20hantera=20trasiga?= =?UTF-8?q?=20givare.=20Kan=20dock=20inte=20hantera=20'sp=C3=B6ksignaler'.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kod/bilbana/yc4/do_car.m | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'Kod') diff --git a/Kod/bilbana/yc4/do_car.m b/Kod/bilbana/yc4/do_car.m index 7b7ebfd..26f9131 100644 --- a/Kod/bilbana/yc4/do_car.m +++ b/Kod/bilbana/yc4/do_car.m @@ -30,6 +30,14 @@ stop - Huruvida koden ska stoppas eller inte stop = false; if car.running == true [car.new_lap, car.new_check_point, car.time] = get_car_position(car.num); + %% KOMPENSERA FÖR TRASIG BANA + [car1new_lap, car1new_check_point, ~] = get_car_position(1); + if car1new_lap && (car1new_check_point || car1new_check_point) + car.new_lap = 0; + elseif car1new_lap + car.new_lap = 1; + end + %% if car.new_check_point == true && rand < car.miss_probability && car.lap >= 4 disp('Hoppar �ver givare'); car.new_check_point = false; @@ -118,6 +126,7 @@ if car.running == true %% NEW LAP if car.new_lap == true + disp('NEW LAP') car.lap_constants = gov_set(car.constant); car.new_lap = false; %TODO remove beep; -- cgit v1.2.1 From e71ea6726340c44fbfc4f00fcfec75ac441b8a5d Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 25 Nov 2019 12:37:10 +0100 Subject: Lite justerad --- Kod/bilbana/yc4/do_boot.m | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'Kod') diff --git a/Kod/bilbana/yc4/do_boot.m b/Kod/bilbana/yc4/do_boot.m index 31f4db0..1638fb2 100644 --- a/Kod/bilbana/yc4/do_boot.m +++ b/Kod/bilbana/yc4/do_boot.m @@ -7,15 +7,26 @@ if car.running == true t = toc(boot.time); if t > 0.6 car.constant = car.constant + 0.05; + disp('###') + disp(car.num) disp(car.constant) boot.time = tic; end end + %% WHEN NEW LAP + if car.new_lap == 1 + car.constant = car.constant + 0.3; + disp('###') + disp(car.num) + disp(car.constant) + end %% First segment if car.lap == 1 && car.segment == 1 t = toc(boot.time); if t > 3 - car.constant = car.constant + 0.05; + car.constant = car.constant + 0.2; + disp('###') + disp(car.num) disp(car.constant) boot.time = tic; end @@ -24,6 +35,8 @@ if car.running == true if car.segment > 2 boot.status = 0; disp('END OF BOOTSTRAP') + disp(car.num) + disp(car.constant) end end end \ No newline at end of file -- cgit v1.2.1 From ce327fb49a6f30cfbf806eef46a04f4d98ded949 Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 25 Nov 2019 12:40:43 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20sp=C3=A4nningskarta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kod/bilbana/files/Bana2.mat | Bin 623 -> 673 bytes 1 file changed, 0 insertions(+), 0 deletions(-) (limited to 'Kod') diff --git a/Kod/bilbana/files/Bana2.mat b/Kod/bilbana/files/Bana2.mat index 622fc18..31e256d 100644 Binary files a/Kod/bilbana/files/Bana2.mat and b/Kod/bilbana/files/Bana2.mat differ -- cgit v1.2.1 From 51a803f74b5e3ddbbb8cd73bce72448dd82a2ff7 Mon Sep 17 00:00:00 2001 From: matuv053 Date: Mon, 25 Nov 2019 16:30:42 +0100 Subject: =?UTF-8?q?=C3=84ndrat=20lite=20v=C3=A4rden.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kod/bilbana/files/Bana2.mat | Bin 673 -> 668 bytes Kod/bilbana/yc4/do_boot.m | 11 +++++++---- Kod/bilbana/yc4/main.m | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) (limited to 'Kod') diff --git a/Kod/bilbana/files/Bana2.mat b/Kod/bilbana/files/Bana2.mat index 31e256d..e92709f 100644 Binary files a/Kod/bilbana/files/Bana2.mat and b/Kod/bilbana/files/Bana2.mat differ diff --git a/Kod/bilbana/yc4/do_boot.m b/Kod/bilbana/yc4/do_boot.m index 1638fb2..d7e9b88 100644 --- a/Kod/bilbana/yc4/do_boot.m +++ b/Kod/bilbana/yc4/do_boot.m @@ -6,7 +6,7 @@ if car.running == true if car.lap == 0 t = toc(boot.time); if t > 0.6 - car.constant = car.constant + 0.05; + car.constant = car.constant + 0.12; disp('###') disp(car.num) disp(car.constant) @@ -21,16 +21,19 @@ if car.running == true disp(car.constant) end %% First segment - if car.lap == 1 && car.segment == 1 + if car.lap == 1 && car.segment == 1 || car.lap == 1 && car.segment == 2 t = toc(boot.time); - if t > 3 - car.constant = car.constant + 0.2; + if t > 0.8 + car.constant = car.constant + 0.05; disp('###') disp(car.num) disp(car.constant) boot.time = tic; end end + + + %% END BOOTSTRAP if car.segment > 2 boot.status = 0; diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index b7221e3..96e5374 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -223,7 +223,7 @@ disp(car1); disp(car2); terminate(1); -terminate(2) +terminate(2); if display_active matlabclient(3); end -- cgit v1.2.1 From cf90eccbbbc8b016626a746df45ec84dd07b477a Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 26 Nov 2019 07:40:36 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20lite=20i=20sp=C3=A4nningskartan=20f?= =?UTF-8?q?=C3=B6r=20att=20det=20skulle=20fungera,=20samt=20=C3=A4ndra=20p?= =?UTF-8?q?=C3=A5=20v=C3=A4rdena?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kod/bilbana/files/Bana1.mat | Bin 621 -> 1216 bytes Kod/bilbana/files/Bana2.mat | Bin 668 -> 1216 bytes Kod/bilbana/yc4/do_boot.m | 17 +++++++++++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) (limited to 'Kod') diff --git a/Kod/bilbana/files/Bana1.mat b/Kod/bilbana/files/Bana1.mat index d83861f..e745c59 100644 Binary files a/Kod/bilbana/files/Bana1.mat and b/Kod/bilbana/files/Bana1.mat differ diff --git a/Kod/bilbana/files/Bana2.mat b/Kod/bilbana/files/Bana2.mat index e92709f..f9369e4 100644 Binary files a/Kod/bilbana/files/Bana2.mat and b/Kod/bilbana/files/Bana2.mat differ diff --git a/Kod/bilbana/yc4/do_boot.m b/Kod/bilbana/yc4/do_boot.m index d7e9b88..44ae1e7 100644 --- a/Kod/bilbana/yc4/do_boot.m +++ b/Kod/bilbana/yc4/do_boot.m @@ -15,7 +15,7 @@ if car.running == true end %% WHEN NEW LAP if car.new_lap == 1 - car.constant = car.constant + 0.3; + car.constant = car.constant + 0.4; disp('###') disp(car.num) disp(car.constant) @@ -24,13 +24,26 @@ if car.running == true if car.lap == 1 && car.segment == 1 || car.lap == 1 && car.segment == 2 t = toc(boot.time); if t > 0.8 - car.constant = car.constant + 0.05; + car.constant = car.constant + 0.06; disp('###') disp(car.num) disp(car.constant) boot.time = tic; end + end + %% ide höj carconstant så att den blir mer aggresivare ju längre tid som det går t.ex efter 3.5 s + %% if car.lap == 1 && car.segment == 1 || car.lap == 1 && car.segment == 2 + %% t = toc(boot.time); + %% if t > 1.0 + %% car.constant = car.constant + 0.5; + %% disp('###') + %% disp(car.num) + %% disp(car.constant) + %% boot.time = tic; + %% end + %% + %% end -- cgit v1.2.1 From 6d397e0826d9d09cd7a6973513d38cd993bd2779 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 26 Nov 2019 16:49:07 +0100 Subject: Massa arbeten --- Kod/bilbana/yc4/do_boot.m | 10 +++++++--- Kod/bilbana/yc4/do_car.m | 22 +++++++++++----------- Kod/bilbana/yc4/main.m | 20 +++++++++++++++----- 3 files changed, 33 insertions(+), 19 deletions(-) (limited to 'Kod') diff --git a/Kod/bilbana/yc4/do_boot.m b/Kod/bilbana/yc4/do_boot.m index 44ae1e7..5019319 100644 --- a/Kod/bilbana/yc4/do_boot.m +++ b/Kod/bilbana/yc4/do_boot.m @@ -45,10 +45,14 @@ if car.running == true %% %% end - - %% END BOOTSTRAP - if car.segment > 2 + if car.segment > 3 + disp(car.constant); + seg_time = car.seg_times(1, 3) + laptime_forecast = seg_time / 0.102 + forecast_ref_diff = laptime_forecast - car.ref_time + forecast_ref_diff_rel = forecast_ref_diff / car.ref_time + car.constant = car.constant + (forecast_ref_diff_rel * 0.15) boot.status = 0; disp('END OF BOOTSTRAP') disp(car.num) diff --git a/Kod/bilbana/yc4/do_car.m b/Kod/bilbana/yc4/do_car.m index 26f9131..a6240ec 100644 --- a/Kod/bilbana/yc4/do_car.m +++ b/Kod/bilbana/yc4/do_car.m @@ -30,14 +30,6 @@ stop - Huruvida koden ska stoppas eller inte stop = false; if car.running == true [car.new_lap, car.new_check_point, car.time] = get_car_position(car.num); - %% KOMPENSERA FÖR TRASIG BANA - [car1new_lap, car1new_check_point, ~] = get_car_position(1); - if car1new_lap && (car1new_check_point || car1new_check_point) - car.new_lap = 0; - elseif car1new_lap - car.new_lap = 1; - end - %% if car.new_check_point == true && rand < car.miss_probability && car.lap >= 4 disp('Hoppar �ver givare'); car.new_check_point = false; @@ -98,20 +90,24 @@ if car.running == true if car.new_lap == false % choose_position krachar vid nytt varv (seg 10) if car.lap ~= 0 car.seg_times(car.lap, car.segment) = toc(car.seg_tic); - end + end + + seg_time = car.seg_times(car.lap, car.segment); + car.forecasts(car.lap, car.segment) = seg_time / car.percents(car.segment); + car.segment = car.segment + 1; car.seg_tic = tic; if car.lap > 2 % S�kerhetsmarginal (B�r vara 1?) disp(car) [new_position, seg_plus] = ... choose_position(car.position, car.segment, car.num, car.pos_at); - if seg_plus ~= 0 && car.segment == 2 + if seg_plus ~= 0 && car.segment == 2 disp('Hoppar �ver missad givare 1/2'); else car.position = new_position; car.segment = car.segment + seg_plus; end - if seg_plus ~= 0 + if seg_plus ~= 0 && car.segment ~= 2 car.seg_times(car.lap, car.segment - seg_plus - 1) = 0; disp(car.seg_times(car.lap, :)) disp(seg_plus) @@ -127,6 +123,7 @@ if car.running == true %% NEW LAP if car.new_lap == true disp('NEW LAP') + car.lap_constants = gov_set(car.constant); car.new_lap = false; %TODO remove beep; @@ -147,6 +144,9 @@ if car.running == true car.lap_tic = tic; car.position = 0; + % save segment percentage from last lap + car.percents = fit_percents(car.percents, car.lap_times(car.lap), car.seg_times(car.lap,:)) + if car.lap == 1 && size(car.seg_times, 2) < 9 disp('FEL: För få segment!!') car.stopped = true; diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index 96e5374..7f5264b 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -20,7 +20,6 @@ global log_verbose; log_verbose = false; % INIT DISPLAY if display_active - addpath display/ClientServerApp/Release cd display/ClientServerApp/Release !startServer @@ -56,6 +55,7 @@ car1.seg_constant_list = []; % TODO car1.position = 0; car1.pos_at = [0.0 2.53 3.05 4.73 7.68 8.98 10.93 14.69 17.57 19.60]; car1.seg_len = [2.53 0.53 1.68 2.92 1.2 2.01 3.83 2.89 1.99]; +car1.percents = []; % TODO car1.map = Bana1; car1.approximation = []; car1.miss_probability = 0.0; @@ -76,6 +76,8 @@ car2.seg_times = []; car2.position = 0; car2.pos_at = [0.0 2.53 3.05 4.92 7.62 9.02 10.72 14.68 17.76 19.95]; car2.seg_len = [2.53 0.52 1.87 2.70 1.40 1.70 4.03 3.08 2.19]; +car2.percents = [0.088, 0.022, 0.102, 0.15, 0.058, 0.11, 0.212, 0.146, 0.113]; + car2.map = Bana2; car2.miss_probability = 0.1; car2.seg_constant_list = []; % TODO @@ -133,7 +135,8 @@ elseif not(isreal(ref_time)) ref_time = 13; end %} -ref_time = 13 +car1.ref_time = 15; +car2.ref_time = 15; %% MAIN LOOP while 1 readTime = tic; @@ -159,7 +162,14 @@ while 1 if boot2.status [car2, boot2] = do_boot(car2, boot2); end - + %% GOVERNOR + if not(boot1.status) && car1.lap ~= 0 + car1 = do_gov(car1); + end + if not(boot2.status) && car2.lap ~= 0 + car2 = do_gov(car2); + end + %% if car1.stop == true disp('stopped by car 1'); break; @@ -230,12 +240,12 @@ end %% DISPLAY GRAPHS if car1.running == true - graphs(car1.lap_times, ref_time, car1.seg_times, 1); + graphs(car1.lap_times, car1.ref_time, car1.seg_times, 1); end if car2.running == true - graphs(car2.lap_times, ref_time, car2.seg_times, 2); + graphs(car2.lap_times, car2.ref_time, car2.seg_times, 2); end %% SAVE VARIABLES FROM CAR STRUCT -- cgit v1.2.1 From 484d7bfd8c9d20ef2ff1555ffcc905e747d111ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Wed, 27 Nov 2019 13:03:58 +0100 Subject: fix --- Kod/bilbana/files/Bana2.mat | Bin 1216 -> 1207 bytes Kod/bilbana/yc4/do_car.m | 11 +++++++++-- Kod/bilbana/yc4/do_gov.m | 9 +++++++++ Kod/bilbana/yc4/fit_percents.m | 11 +++++++++++ Kod/bilbana/yc4/setup_car.m | 17 +++++++++++++++++ 5 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 Kod/bilbana/yc4/do_gov.m create mode 100644 Kod/bilbana/yc4/fit_percents.m create mode 100644 Kod/bilbana/yc4/setup_car.m (limited to 'Kod') diff --git a/Kod/bilbana/files/Bana2.mat b/Kod/bilbana/files/Bana2.mat index f9369e4..743de15 100644 Binary files a/Kod/bilbana/files/Bana2.mat and b/Kod/bilbana/files/Bana2.mat differ diff --git a/Kod/bilbana/yc4/do_car.m b/Kod/bilbana/yc4/do_car.m index a6240ec..cf534fa 100644 --- a/Kod/bilbana/yc4/do_car.m +++ b/Kod/bilbana/yc4/do_car.m @@ -92,8 +92,15 @@ if car.running == true car.seg_times(car.lap, car.segment) = toc(car.seg_tic); end - seg_time = car.seg_times(car.lap, car.segment); - car.forecasts(car.lap, car.segment) = seg_time / car.percents(car.segment); + seg_time = car.seg_times(car.lap, car.segment) + lap_time_now = toc(car.lap_tic) + % s = vt + % v = s/t + % t = s/v + prev_seg_v = car.seg_len(car.segment) / toc(car.seg_tic) + track_remaining = car.pos_at(length(car.pos_at)) - car.pos_at(car.segment + 1) + + car.forecasts(car.lap, car.segment) = lap_time_now + track_remaining/prev_seg_v car.segment = car.segment + 1; car.seg_tic = tic; diff --git a/Kod/bilbana/yc4/do_gov.m b/Kod/bilbana/yc4/do_gov.m new file mode 100644 index 0000000..d38336a --- /dev/null +++ b/Kod/bilbana/yc4/do_gov.m @@ -0,0 +1,9 @@ +function [ car ] = do_gov( car ) +%UNTITLED Summary of this function goes here +% Detailed explanation goes here +if car.new_check_point + status = car.forecasts(car.lap, car.segment-1)/car.ref_time; + car.constant = car.constant + (status - 1) * 0.01; + disp(car.constant); +end + diff --git a/Kod/bilbana/yc4/fit_percents.m b/Kod/bilbana/yc4/fit_percents.m new file mode 100644 index 0000000..ffdb9fc --- /dev/null +++ b/Kod/bilbana/yc4/fit_percents.m @@ -0,0 +1,11 @@ +function [ new_percents ] = fit_percents( percents, lap_time, seg_times ) +%FIT_PERCENTS Summary of this function goes here +% Detailed explanation goes here +new_percents = []; +for i = 1:length(percents) + old_p = percents(i); + cur_p = seg_times(i) / lap_time; + new_p = old_p - (old_p + cur_p) / 2; + new_percents(i) = new_p; +end + diff --git a/Kod/bilbana/yc4/setup_car.m b/Kod/bilbana/yc4/setup_car.m new file mode 100644 index 0000000..1ab75e0 --- /dev/null +++ b/Kod/bilbana/yc4/setup_car.m @@ -0,0 +1,17 @@ +function [] = setup_car(car, track) +%UNTITLED2 Summary of this function goes here +% Detailed explanation goes here +disp('J = Ja (automatiskt), M = Ja (manuellt), N = Nej'); + +car.response = input('Vill du köra bil 1? [N] ', 's'); +if car.response == 'J' + car.running = true; + car.automatic = true; +elseif car.response == 'M' + car.running = true; + car.automatic = false; +else + car.running = false; +end +end + -- cgit v1.2.1