diff options
| author | Albin <albwa833@student.liu.se> | 2019-11-08 11:59:19 +0100 |
|---|---|---|
| committer | Albin <albwa833@student.liu.se> | 2019-11-08 11:59:19 +0100 |
| commit | 2ad11b85f7d5d4a71477a02a1ca5ba8786652c35 (patch) | |
| tree | d788ba4c56f15437b596b2acc1198b20ee1254ba | |
| parent | 84a1ee353c4d5de456254828542d4b604781db23 (diff) | |
| download | tfyy51-2ad11b85f7d5d4a71477a02a1ca5ba8786652c35.tar.gz | |
Missade givare
| -rw-r--r-- | Kod/bilbana/yc4/choose_position.m | 5 | ||||
| -rw-r--r-- | Kod/bilbana/yc4/get_aprox_v.m | 16 | ||||
| -rw-r--r-- | Kod/bilbana/yc4/main.m | 27 |
3 files changed, 31 insertions, 17 deletions
diff --git a/Kod/bilbana/yc4/choose_position.m b/Kod/bilbana/yc4/choose_position.m index 23d4de1..39be6e4 100644 --- a/Kod/bilbana/yc4/choose_position.m +++ b/Kod/bilbana/yc4/choose_position.m @@ -29,9 +29,8 @@ if near(1) == segment disp('In right segment'); else if near(2) < 0.7 % Behöver bli smartare. Typ jämföra andra normal miss med denna miss - seg_plus = near(1) - segment - new_position = set_pos( track, segment + seg_plus) - beep + seg_plus = max(0, near(1) - segment) + new_position = set_pos( track, segment + seg_plus); else new_position = set_pos( track, segment); % ineff borde kombineras seg_plus = 0; diff --git a/Kod/bilbana/yc4/get_aprox_v.m b/Kod/bilbana/yc4/get_aprox_v.m index 41a3c9e..64fa821 100644 --- a/Kod/bilbana/yc4/get_aprox_v.m +++ b/Kod/bilbana/yc4/get_aprox_v.m @@ -1,4 +1,4 @@ -function [v] = get_aprox_v(cur_seg,last_seg_times) +function [v] = get_aprox_v(cur_seg, lap, seg_times) %GET_APROX_V Tillfällig? Behövs för att testa get_position. Ger %medelhastigheten för nuvarande segment på förra varvet. %{ @@ -8,8 +8,18 @@ last_seg_times: 1x9 vektor med förra varvets segmenttider seg_len1 = [2.53 0.53 1.68 2.92 1.2 2.01 3.83 2.89 1.99]; % seg_len2 = [2.53 0.53 1.87 2.68 1.24 1.81 4.03 3.09 2.19]; -%v = last_seg_times(cur_seg)/seg_len(cur_seg); -v = seg_len1(cur_seg)/last_seg_times(cur_seg); +if cur_seg > 9 + cur_seg = cur_seg - 9; +end + +while lap > 0 + lap = lap - 1; + if seg_times(lap, cur_seg) ~= 0 + v = seg_len1(cur_seg)/seg_times(lap, cur_seg); + return + end +end +disp('bara nollor?'); % switch(track) % case 1 diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index 2d450b1..6612e4f 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -104,14 +104,15 @@ while 1 %% CALC POSITION (CAR 1) if car1.lap > 1 last_seg_times1 = car1.seg_times(car1.lap - 1, 1:9); - aprox_v = get_aprox_v(car1.segment, last_seg_times1); + aprox_v = get_aprox_v(car1.segment + detect_missed( car1.position, car1.segment, 1), car1.lap, car1.seg_times); car1.position = get_position(aprox_v, car1.position, t); if detect_missed( car1.position, car1.segment, 1) disp('Miss?'); - disp(toc(car1.miss_time)); - if car1.miss_time == 0 - car1.miss_time = tic; - end + + %disp(toc(car1.miss_time)); + %if car1.miss_time == 0 + % car1.miss_time = tic; + %end end end if car1.new_check_point == true @@ -123,14 +124,18 @@ while 1 car1.seg_tic = tic; if car1.lap > 2 % Säkerhetsmarginal (Bör vara 1?) disp(car1); - [car1.position, seg_plus] = ... - choose_position(car1.position,car1.segment, 1); - %car1.position = x(1); - car1.segment = car1.segment + seg_plus; - car1.miss_time = uint64(0); + [new_position, seg_plus] = ... + choose_position(car1.position, car1.segment, 1); + if seg_plus ~= 0 && car1.segment == 1 + disp('Hoppar över missad givare 1/2'); + else + car1.position = new_position; + car1.segment = car1.segment + seg_plus; + end + %car1.miss_time = uint64(0); else car1.position = car1.seg_len(car1.segment); - car1.miss_time = uint64(0); + %car1.miss_time = uint64(0); end end end |
