TinyTrainable
 
Loading...
Searching...
No Matches
InputGesture.h
Go to the documentation of this file.
1
3
4#ifndef INPUT_GESTURE_H
5#define INPUT_GESTURE_H
6
8#include <Arduino.h>
9
11#include "TinyTrainable.h"
12
14#include "Input.h"
15
17// https://www.arduino.cc/en/Reference/ArduinoLSM9DS1/
18#include <Arduino_LSM9DS1.h>
19#include <Arduino_BMI270_BMM150.h>
20
22#include <TensorFlowLite.h>
23#include <tensorflow/lite/micro/all_ops_resolver.h>
24// #include <tensorflow/lite/micro/micro_error_reporter.h>
25#include <tensorflow/lite/micro/micro_interpreter.h>
26#include <tensorflow/lite/schema/schema_generated.h>
27// #include <tensorflow/lite/version.h>
28
31class InputGesture : public Input {
32public:
35
36 virtual void setupInstrument(bool serialDebugging) override;
37 virtual void setupGestureModel(String gestures[3],
38 const unsigned char *model = nullptr) override;
39
40 virtual void gesturePrintHeader() override;
41 virtual void gestureReadData() override;
42 virtual void gestureSetAcceleration(float newVal) override;
43 virtual void gestureSetNumberSamples(int newVal) override;
44
45 virtual void identify() override;
46
47private:
48 void setupGestureSensor();
49
52
54 int _numSamples = 119;
55
56 // initialize as if sampling has already been done
58
59 // variables for reading
60 float _aX;
61 float _aY;
62 float _aZ;
63 float _gX;
64 float _gY;
65 float _gZ;
66
67 // TFLite setup
68 const int NUM_GESTURES = 3;
69 String _gestures[3];
70
71 // variables for TensorFlow Lite
72 tflite::MicroErrorReporter tflErrorReporter;
73 tflite::AllOpsResolver tflOpsResolver;
74 const tflite::Model *tflModel = nullptr;
75 tflite::MicroInterpreter *tflInterpreter = nullptr;
76 TfLiteTensor *tflInputTensor = nullptr;
77 TfLiteTensor *tflOutputTensor = nullptr;
78
79 // TODO - account for this size needing to be changed? add a method?
80 // Create a static memory buffer for TFLM, the size may need to
81 // be adjusted based on the model you are using
82 static constexpr int tensorArenaSize = 8 * 1024;
84
86 float aX, aY, aZ;
87
89 float gX, gY, gZ;
90
92 const String _gestureHeader = "aX,aY,aZ,gX,gY,gZ";
93
95 const int _floatDecimals = 3;
96};
97
98#endif
Input base class.
Arduino library for Tiny Trainable Instruments.
InputGesture inherits from Input.
Definition: InputGesture.h:31
float gY
Definition: InputGesture.h:89
virtual void gestureSetNumberSamples(int newVal) override
Definition: InputGesture.cpp:207
float aZ
Definition: InputGesture.h:86
virtual void setupGestureModel(String gestures[3], const unsigned char *model=nullptr) override
Definition: InputGesture.cpp:30
TfLiteTensor * tflInputTensor
Definition: InputGesture.h:76
float _aX
Definition: InputGesture.h:60
byte tensorArena[tensorArenaSize]
Definition: InputGesture.h:83
String _gestures[3]
Definition: InputGesture.h:69
virtual void gestureSetAcceleration(float newVal) override
Definition: InputGesture.cpp:203
float _gX
Definition: InputGesture.h:63
float gZ
Definition: InputGesture.h:89
tflite::MicroInterpreter * tflInterpreter
Definition: InputGesture.h:75
virtual void gesturePrintHeader() override
Definition: InputGesture.cpp:133
float _accelerationThreshold
threshold of significance measured in G's
Definition: InputGesture.h:51
float _gZ
Definition: InputGesture.h:65
const String _gestureHeader
header for gesture database
Definition: InputGesture.h:92
void setupGestureSensor()
function for setup of sensor LSM9DS1
Definition: InputGesture.cpp:212
float _aZ
Definition: InputGesture.h:62
float gX
gravity in x, y, z
Definition: InputGesture.h:89
float aY
Definition: InputGesture.h:86
float _gY
Definition: InputGesture.h:64
static constexpr int tensorArenaSize
Definition: InputGesture.h:82
virtual void identify() override
Definition: InputGesture.cpp:58
virtual void gestureReadData() override
Definition: InputGesture.cpp:135
tflite::MicroErrorReporter tflErrorReporter
Definition: InputGesture.h:72
float aX
acceleration in x, y, z
Definition: InputGesture.h:86
const int _floatDecimals
number of decimals for floating point numbers
Definition: InputGesture.h:95
int _samplesRead
Definition: InputGesture.h:57
int _numSamples
number of samples per motion
Definition: InputGesture.h:54
const tflite::Model * tflModel
Definition: InputGesture.h:74
float _aY
Definition: InputGesture.h:61
TfLiteTensor * tflOutputTensor
Definition: InputGesture.h:77
tflite::AllOpsResolver tflOpsResolver
Definition: InputGesture.h:73
const int NUM_GESTURES
Definition: InputGesture.h:68
InputGesture()
constructor
Definition: InputGesture.cpp:11
virtual void setupInstrument(bool serialDebugging) override
Definition: InputGesture.cpp:17
Input base class.
Definition: Input.h:15