DovesLapTimer 4.0.0
GPS-based lap timing Arduino library — go-karts to race cars
Loading...
Searching...
No Matches
CourseDetector.h
Go to the documentation of this file.
1
13#ifndef _COURSE_DETECTOR_H
14#define _COURSE_DETECTOR_H
15
16#include <Arduino.h>
17#include "DovesLapTimer.h"
18#include "GeoMath.h"
19
20struct CourseInfo {
21 const char* name;
22 float lengthFt;
23};
24
26 int index;
27 float ratio; // distance match quality (0.0 = perfect)
28};
29
31public:
33 void init(CourseInfo* courses, int count);
34 void update(double lat, double lng, float speedKmh, float totalOdometer);
35 void acceptCandidate(int index);
36 // currentOdometer advances the waypoint's lap-window start so the next
37 // ranking pass requires another full lap, rather than immediately
38 // re-ranking while still in proximity.
39 void rejectAllCandidates(float currentOdometer);
40 void reset();
41 void setSpeedThresholdMph(float mph);
42 void setDetectionProximityMeters(float meters);
43
44 // Getters
45 int getState() const;
46 int getDetectedCourseIndex() const;
47 bool isDetected() const;
48 double getWaypointLat() const;
49 double getWaypointLng() const;
50 bool hasWaypoint() const;
51 int getRankedMatchCount() const;
53
54private:
55 void _checkSpeedThreshold(double lat, double lng, float speedKmh, float totalOdometer);
56 void _checkWaypointProximity(double lat, double lng, float totalOdometer);
57 void _matchCourseRanked(float distanceMeters);
58
59 CourseInfo _courses[MAX_COURSES];
60 int _courseCount;
61 int _state;
62 double _waypointLat;
63 double _waypointLng;
64 float _waypointOdometer;
65 int _detectedCourseIndex;
66 DetectionCandidate _rankedMatches[MAX_COURSES];
67 int _rankedMatchCount;
68 float _speedThresholdMph;
69 float _detectionProximityMeters;
70};
71
72#endif
#define MAX_COURSES
Definition DovesLapTimer.h:45
Definition CourseDetector.h:30
void update(double lat, double lng, float speedKmh, float totalOdometer)
Definition CourseDetector.cpp:33
bool hasWaypoint() const
Definition CourseDetector.cpp:152
void reset()
Definition CourseDetector.cpp:24
double getWaypointLng() const
Definition CourseDetector.cpp:148
CourseDetector()
Definition CourseDetector.cpp:8
double getWaypointLat() const
Definition CourseDetector.cpp:144
void rejectAllCandidates(float currentOdometer)
Definition CourseDetector.cpp:112
void setSpeedThresholdMph(float mph)
Definition CourseDetector.cpp:122
void setDetectionProximityMeters(float meters)
Definition CourseDetector.cpp:126
void init(CourseInfo *courses, int count)
Definition CourseDetector.cpp:15
int getRankedMatchCount() const
Definition CourseDetector.cpp:156
bool isDetected() const
Definition CourseDetector.cpp:140
int getDetectedCourseIndex() const
Definition CourseDetector.cpp:136
int getState() const
Definition CourseDetector.cpp:132
const DetectionCandidate * getRankedMatches() const
Definition CourseDetector.cpp:160
void acceptCandidate(int index)
Definition CourseDetector.cpp:106
Definition CourseDetector.h:20
const char * name
Definition CourseDetector.h:21
float lengthFt
Definition CourseDetector.h:22
Definition CourseDetector.h:25
int index
Definition CourseDetector.h:26
float ratio
Definition CourseDetector.h:27