Arduino 이동 평균 라이브러리


무선을 통해 제어되는 모바일 로봇에서 작업 중입니다. 4 GHz 수신기가 메인 컨트롤러로 제공되는 Arduino Uno에 연결되어 있습니다. 수신기에서 오는 가장 중요하고 주요한 입력 채널은 매우 시끄러운 신호를 생성하여 비록 이들이 필요하지 않더라도 액츄에이터의 출력에 작은 변화가 있습니다. 효율적인 평활화를 수행 할 수있는 라이브러리를 찾고 있습니다. Arduino Uno. asked를위한 모든 신호 평활화 라이브러리가 있습니까? 14 월 13 일 14시 57 분. 잡음이 많은 신호에서 많은 단일 샘플 잡음 스파이크가 발생합니다. 중간 필터는 선형 필터보다 단일 샘플 잡음 스파이크를 제거하는 데 더 효과적입니다. 이는 저역 통과 필터, 이동 평균, 가중 이동 평균 등보다 유리합니다 응답 시간과 그러한 단일 샘플 노이즈 스파이크 아웃 라이어를 무시할 수있는 능력을 제공합니다. 실제로 Arduino의 많은 신호 평활화 라이브러리에는 중간 필터가 포함되어 있습니다. 시그널에서의 신호 평활화 라이브러리 - github에서 라이브러리를 스무딩 할 수 있습니다. 로봇에서이 작업과 같은 기능을 수행 할 수 있습니까? 중간 값 3은 CPU의 전력이 거의 필요하지 않으므로 빠릅니다. 저역 통과 필터를 사용하여이 필터를 디지털 방식으로 필터링 할 수 있습니다. 1 0에 더 가까운 주파수는 더 낮은 주파수입니다. 그 값에 대한 실제 표현은 exp -2 pi f fs입니다. 여기서 f는 원하는 차단 주파수이고 fs는 데이터가 샘플링되는 주파수입니다. 다른 유형의 디지털 필터는 이벤트 필터입니다. It 예 : 9,9,8,10,9,25,9 이벤트 필터가 가장 빈번한 값을 반환합니다 통계적으로 이것은 모드입니다. Mean, Mode 등과 같은 통계적 평균은 Arduino 평균을 사용하여 계산할 수 있습니다 Arduino 라이브러리 페이지에서 가져온 예제입니다. Arduino 보드의 기본 응용 프로그램 중 하나는 센서 데이터 읽기 및 로깅입니다. 예를 들어, 하루 중 하루에 압력을 모니터링합니다. 높은 샘플 속도는 종종 그래프 하나에서 스파이크를 생성합니다 또한 avera를 원한다. 측정 값의 정량적 측정 값이 정적이 아니기 때문에 종종 필요한 것은 실행 평균입니다. 이것은 특정 기간의 평균이며 경향 분석을 할 때 매우 중요합니다. 실행 평균의 가장 간단한 형태는 위에 빌드 된 코드로 수행 할 수 있습니다 이전의 실행 평균. 부동 소수점 연산을 사용하지 않으려면 - 메모리가 필요하고 속도가 느려지므로 정수 영역에서 완전히 동일하게 수행 할 수 있습니다. 샘플 코드에서 256으로 나눈 값은 시프트 오른쪽 8입니다. 이것은 예를 들면 100으로 나눗셈을 말하는 것보다 빠릅니다. 이것은 디바이더로서 2의 모든 힘에 대해 사실입니다. 그리고 가중치의 합은 2의 거듭 제곱과 같아야합니다. 그리고 물론 서명이없는 중간 오버플로는 고려해야합니다. 오래 걸릴 수 있습니다. 지난 10 번의 측정과 관련하여보다 정확한 이동 평균이 필요한 경우 배열 또는 링크 된 목록이 필요합니다. 이 배열은 순환 버퍼로 작동하며 모든 새로운 측정 값으로 가장 오래된 것을 제거합니다. verage는 모든 요소를 ​​배열의 요소 수로 나눈 값으로 계산됩니다. 실행 평균의 코드는 다음과 같습니다. 이 코드의 반환 값은 모든 값을 포함하는 배열이 상당히 커질 수 있다는 것입니다. 초당 측정 및 분당 실행 평균을 원할 경우 시간당 평균 60 개의 배열이 필요합니다. 3600의 배열이 필요합니다. Arduino에서는 2K의 RAM 만 있으므로이 방법으로는 수행 할 수 없었습니다. 그러나 2 단계 평균값은 모든 측정에 대해 부과되지 않습니다. psuedo 코드입니다. 모든 runningAverage 함수에 대해 새로운 내부 정적 배열이 필요하기 때문에 class. RunningAverage 라이브러리로 구현되도록 비명을 지릅니다. runningAverage 라이브러리는 함수의 클래스를 만듭니다 그래서 스케치에서 여러 번 사용할 수 있습니다. add 및 avg 함수를 좀 더 융통성있게 분리합니다. 예를 들어 추가하지 않고 평균을 여러 번 호출 할 수 있습니다. 모든 인스턴스 o f 클래스는 자체 배열을 추가하여 측정 값을 저장하고이를 메모리 사용량에 추가합니다. 클래스의 인터페이스는 가능한 작게 유지됩니다. 버전 0과 함께 유의하십시오. 2 메소드의 이름은 모두 더 설명하기 쉽습니다. 그것을 사용할 수있는 방법을 보여줍니다. 무작위 생성기는 센서를 모방하는 데 사용됩니다. 설정에서 myRA가 지워 지므로 새 데이터를 추가 할 수 있습니다. 루프에서 먼저 임의의 숫자가 생성되어 myRA에 추가 될 float으로 변환됩니다. 그런 다음 runningAverage가 직렬 포트에 인쇄됩니다. 또한 일부 LCD에 표시하거나 이더넷 등을 통해 보낼 수 있습니다. 300 개의 항목이 추가되면 myRA가 다시 시작됩니다. 라이브러리를 사용하려면 SKETCHBOOKPATH 라이브러리의 이름을 RunningAverage로 지정하십시오 그리고 h를 놓아 라. 선택적으로 샘플을 배치하기위한 예제 서브 디렉토리를 만든다 .2011-01-30 초기 버전 .011-02-28 h 파일의 소멸자가 빠져있는 문제 수정 .2011-02-28 기본 생성자를 제거했다 .2012- - trimValue Yuval Naveh는 web.2012에서 발견 된 trimValue를 추가했습니다. 11-21 리팩토링 .2012-12-30 게시를 위해 리팩토링 된 fillValue 추가 .2014-07-03 메모리 보호 코드 추가 - 내부 배열을 할당 할 수없는 경우 size가 0이됩니다. 여기에 설명 된 문제를 해결하는 것입니다. 광범위하게 템플릿 클래스를 실행합니다. 실행 평균 h. RunningAverage. Latest version on - Github. Arduino 보드의 주요 응용 프로그램 중 하나는 센서 데이터를 읽고 로깅하는 것입니다. 예를 들어 하루 중 1 분마다 기온과 기압을 모니터링합니다. 많은 기록을 의미하기 때문에 평균 및 표준 편차가 그날의 온도 변화의 이미지를 얻길 원합니다. 통계 라이브러리. 통계 라이브러리는 데이터 플로트 세트의 평균 및 표준 편차를 계산합니다. 또한 입력 된 최소 및 최대 값을 보유합니다. 인터페이스는 다음과 같습니다. 9 개의 함수 버전 0 3 3 Github. Internally에서 라이브러리는 개별 값을 기록하지 않습니다. 개수, 합계 및 제곱 된 합계 합계, 최소값 및 최대 값이 5 개는 ca 평균값과 표준값을 구하십시오. 좋은 점은 10, 100 또는 1000 값을 추가해도 문제가되지 않는다는 것입니다. 작은 스케치가 어떻게 사용될 수 있는지 보여줍니다. 임의의 생성기가 센서를 모방하는 데 사용됩니다. 설치 프로그램에서 myStats가 지워집니다. 우리는 새로운 데이터를 추가 할 수 있습니다. 처음에는 임의의 숫자가 생성되어 float로 변환되어 myStats에 추가됩니다. 그런 다음 카운트, 평균 및 표준 편차가 직렬 포트에 인쇄됩니다. 이더넷 등을 통해 전송 300 항목이 추가되면 myStats가 다시 시작됩니다. 첫 번째 버전에서는 배열의 모든 샘플을 수집했지만 그 결과 메모리 사용량이 상당히 증가했으며 사용자는 미리 샘플 수를 알아야했습니다. 충분한 공간을 할당했기 때문에 나는 이것을 받아 들일 수 없다는 것을 발견 했으므로 클래스에서 데이터 배열을 제거하여 좀 더 초등적으로 만들었습니다. 라이브러리를 사용하려면 SKETCHBOOKPATH 라이브러리에 폴더 이름을 Statistic으로 만들고 h를 붙입니다. 찾는 중 보다 확장 된 통계 lib.2010-11-01 stdev, minimum 및 maximum.2011-01-07 추가 Gil Ross는 수치 적으로 더 안정적인 라이브러리의 향상된 버전을 보냅니다. 이것은 버전 0입니다. 3 Thanx Gil.2012-05-19 NAN 추가 잘못된 -1 인 오류 대신 .015-03-07 - 버전 0 3 3 - ARM proc. Statistic h 파일을 지원하기 위해 float가 double로 변경되었습니다.

Comments