Texus Instruments SensorTag CC2650의 Roll/Pitch/Yaw 계산

소개



이 프로그램은 제작입니다.
Roll과 Pitch는 좋은 느낌으로 얻을 수 있습니다만, Yaw가 때때로 폭주해 내일의 값이 되어 버립니다. 분명 뭔가 계산이 잘못되었다고 생각합니다만, 아직 원인 식별할 수 없습니다.

개요



TI SensorTag 은 센서가 탑재된 작은 장치입니다. BLE로 연결하고 나름대로 쉽게 (?) 센서에서 값을 얻을 수 있습니다.

이 센서 중 가속도, 각속도 및 자기(소위 9축 자이로)에서 장치가 어느 방향으로 기울어져 있는지, 어느 방향으로 향하고 있는지를 계산합니다.

환경


  • TI SensorTag CC2650 (Firmware 1.40 Mar 30 2017)
  • macOS High Sierra
  • Python 2.7.10
  • AdaFruit_BluefruitLE

  • macOS에서 사용할 수있는 파이썬 라이브러리가 없어서 찾았습니다.
    macOS에서 개발한다면 Python보다 Node가 더 좋을 것입니다.

    BLE 연결 정보



    BLE은 저전력 Bluetooth라고 생각했습니다.
    아니, 전혀 다릅니다.

    BLE 장치는 다음과 같은 절차로 통일적으로 조작할 수 있는 편리한 사람이었습니다.
  • 이웃 장치 스캔
  • 장치의 서비스 목록
  • 서비스에있는 문자 목록을 나열합니다
  • 캐릭터리스틱스를 지정해 값을 읽고 쓰기

  • Lightblue 라는 앱을 사용하면 위의 작업을 쉽게 할 수 있습니다.

    Lightblue를 사용한 시험



    Lightblue를 시작하면 기기를 검색합니다.
    기기를 찾으면 F000AA80-0451-4000-B000-000000000000이라는 서비스를 탐험합니다.
    F000AA82-0451-4000-B000-000000000000이라는 캐릭터리스틱스가 설정과 센서의 On/Off 전환입니다.
    접속한 직후는 Off로 되어 있습니다.
    여기에 0x7f00 를 쓰면 F000AA81-0451-4000-B000-000000000000이라는 캐릭터리스틱스에서 센서의 값을 읽을 수 있습니다.





    어떤 값을 읽고 쓰면 좋은지는 아래를 참조하십시오.
    htp : // p 여드름 rs. 우키. 치. 이 m/그리고 x. php / c2650_ 천연 r g_ 우세 r % 27s_ 굉장히 # 으응_ 이런 c d

    Roll/Pitch/Yaw 계산 정보



    센서로부터 취득한 값으로부터 단순하게 계산하면, 아무것도 하지 않아도 점점 어긋나 가 버립니다.
    Qiita를 검색하면 Kalman 필터를 사용할 수 있다는 기사를 찾았습니다.
    하지만 원하는 것은 Roll/Pitch/Yaw입니다.

    고맙게도 C# 소스가 공개되었기 때문에 파이썬에 필요한 부분을 이식했습니다.
    htp : //x-이오. 이. u k / 오 - r r - 이무 - an d a hrs - l ri thms /

    논문은 여기> Madgwick 알고리즘

    작성한 프로그램



    github에 넣었습니다.

    프로그램 실행


    sample/sample.py 파일을 실행하면 60초 동안 Roll/Pitch/Yaw(또는 오일러 각)를 읽어 화면에 출력합니다.



    Help Me!



    지자기를 기준값으로 사용하는 Yaw가 이상합니다.
    센서를 움직이지 않아도 점점 값이 바뀔 수 있습니다 (변화되지 않을 수도 있습니다).
    어디를 확인해야합니까?

    감상



    첫 번째 파이썬, 첫 번째 BLE, 첫 번째 센서와 첫 번째 제작으로 오른쪽도 왼쪽도 알 수 없습니다.
    게다가 4원수라고 하는 미지의 숫자.
    아무것도 모르지만 처음으로 할 수있는 일은 재미 있습니다.

    좋은 웹페이지 즐겨찾기