summaryrefslogtreecommitdiffstats
path: root/Kod/bilbana
diff options
context:
space:
mode:
Diffstat (limited to 'Kod/bilbana')
-rw-r--r--Kod/bilbana/yc4/choose_position.m5
-rw-r--r--Kod/bilbana/yc4/get_aprox_v.m16
-rw-r--r--Kod/bilbana/yc4/main.m27
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