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(-) 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