Friday 27 January 2017

Einfach Bewegend Durchschnittlich Arduino

Ich arbeite an einem mobilen Roboter, der über einen drahtlosen 2,4 GHz Link gesteuert wird. Der Empfänger ist mit dem Arduino Uno verbunden, der als Hauptregler an Bord dient. Der kritischste (und Haupt-) Eingangskanal des Empfängers erzeugt ein sehr verrauschtes Signal, was zu vielen kleinen Änderungen am Ausgang der Aktoren führt, obwohl diese nicht benötigt werden. Ich suche Bibliotheken, die effiziente Glättung durchführen können. Gibt es ein Signal Glättung Bibliotheken zur Verfügung für die Arduino (Uno) Ich glaube, ich sehe eine Menge von Single-Sample Rauschspitzen in Ihrem lauten Signal. Der Medianfilter ist besser bei der Beseitigung von Einzelprobenrauschspitzen als bei jedem linearen Filter. (Es ist besser als jedes Tiefpaßfilter, gleitender Durchschnitt, gewichteter gleitender Durchschnitt usw. in Bezug auf seine Ansprechzeit und seine Fähigkeit, solche Einzelproben-Rauschspitzen-Ausreißer zu ignorieren). Es gibt in der Tat viele Signalglättungsbibliotheken für das Arduino, von denen viele einen Medianfilter enthalten. Signalglättungsbibliotheken bei arduino. cc: Signalglättungsbibliotheken bei github: Würde sowas in Deinem Roboter so funktionieren (Der Median-of-3 erfordert sehr wenig CPU-Leistung und damit schnell): Du könntest diese digital mit einem Tief filtern Filter: Ändern Sie die 0,99, um die Grenzfrequenz zu ändern (näher an 1,0 ist die niedrigere Frequenz). Der tatsächliche Ausdruck für diesen Wert ist exp (-2pif fs), wobei f die Grenzfrequenz ist, die gewünscht wird und fs die Frequenz ist, an der die Daten abgetastet werden. Ein anderer Typ eines digitalen Filters ist ein Ereignisfilter. Es funktioniert gut auf Daten, die Ausreißer, z. B. 9,9,8,10,9,25,9. Ein Ereignisfilter gibt den häufigsten Wert zurück. Statistisch ist dies der Modus. Statistische Mittelwerte wie Mean, Mode etc. können mit Hilfe der Arduino Average Library berechnet werden. Ein Beispiel aus der Arduino Library-Seite entnommen: Dies ist eine Sammlung von Routinen für die Durchführung mathematischer Analysen von Arrays von Zahlen. Aktuelle Funktionsunterstützung: Alle Funktionen werden vollständig überlastet, um die folgenden Datentypen zu unterstützen: Mit Ausnahme von stddev () geben sie alle denselben Datentyp wie das Array zurück. Ein Array von int-Werten gibt ein einzelnes int zurück. Stddev () gibt immer einen float zurück. Alle Funktionen außer rollingAverage () nehmen zwei Argumente. Das erste ist das Array zu bearbeiten. Die zweite ist die Anzahl der Einträge im Array. RollingAverage () nimmt ein drittes Argument - den neuen Eintrag, der dem Array hinzugefügt werden soll. Rolling average Format: average rollingAverage (historyarray, slicecount, value) Fügt dem Array Historyarray einen Wert hinzu, der alle Werte um eine Stelle verschiebt. Der mittlere Mittelwert wird dann zurückgegeben. Format: average mean (array, slicecount) Berechnet den mittleren Mittelwert der Werte im Array. Slicecount ist die Anzahl der Einträge im Array. Format: average mode (array, slicecount) Findet die häufigste Zahl im Array. Format: max maximum (array, slicecount) Sucht den größten Wert im Array. Format: min minimum (array, slicecount) Sucht den kleinsten Wert im Array. Standardabweichung Format: Abweichung stddev (array, slicecount) Die Standardabweichung ist die Quadratwurzel des Mittelwertes der Summe der Quadrate der Differenz zwischen jedem Datenpunkt und dem mittleren Mittelwert des Arrays. Dies ist die einzige Funktion, die nicht denselben Datentyp wie das Array zurückgibt. Die Standardabweichung wird immer als Float zurückgegeben.


No comments:

Post a Comment