[일반] 자이로센서 roll, pitch, yaw 데이터 처리 구조 #1

고양이 프로젝트를 진행하면서 초기 자이로 센서를 MPU6050 모듈(1,500원)을 사용하여 제작 하였으나 회로를 구성하여 PCB 제작시 부품이 (8,000원)으로 너무 비싼듯 하여 LSM6D33 (2,000원)으로 대체 하게 되었다.


4ce51680311cd2559b64e947babc9b7d.jpg
헬박사님 왈 단품이 비싸면 모듈을 사서 해당 부품을 때서 사용


문제는 MPU6050의 roll, pitch, yaw 코드가 있어 활용 하였으나 LSM6D33 해당 코드가 없어 계속 구글링 중 포기 하고 천천히 관련 기능 구현 해보려고 한다. 


Roll, Pitch, Yaw



Roll,-Yaw,-Pitch_lg_0.jpg 

pitch  : x축에 대한 회전 (끄덕끄덕)

roll    : y축에 대한 회전 (갸웃갸웃)

yaw   : z축에 대한 회전 (도리도리)



링크의 블로그 (토발즐)님의 글에 따르면 자이로센서는 보통 시중에 파는 IMU(관성 측정 장치)와 AHRS(센서 융합기) 나누어짐


IMU는 각속도계(자이로스코프 ?), 가속도계, 지자기계, 온도, 압력 등의 센서로 구성됨 

AHRS는 위의 IMU모듈을 포함하여 MCU를 포함 MCU에선 센서들의 데이터를 이용하여 Roll, Pitch, Yaw값을 계산


MPU6050 IMU

MPU-6000 Family Block Diagram 

mpu6050 스펙 이미지 검색결과 

MPU6050은 자이로와 가속도 센서와 I2C 인터페이스 제공


LSM6D33 IMU


Specifications

    • Dimensions: 0.4″ × 0.9″ × 0.1″ (10 × 23 × 3 mm)
    • Weight without header pins: 0.6 g (0.02 oz)
    • Operating voltage: 2.5 V to 5.5 V
    • Supply current: 2 mA
    • Output format (I²C/SPI):

        • Accelerometer: one 16-bit reading per axis
        • Gyro: one 16-bit reading per axis
    • Sensitivity range (configurable):

        • Accelerometer: ±2, ±4, ±8, or ±16 g
        • Gyro: ±125, ±245, ±500, ±1000, or ±2000°/s

자이로, 가속도, 온도 센서와 I2C / SPI 인터페이스 제공


MCU를 사용하여 AHRS구현

%EC%9E%90%EC%9D%B4%EB%A1%9C%EC%84%BC%EC%

각속도계(자이로) 출력값을 적분 (걸린시간을 곱해줌) 하면 우리가 원하는 Roll, Pitch, Yaw를 구할수 있으나 오류 부정을 위하 가속계와 지자기계를 같이 사용한다.


가속도는 중력에 의한 Roll, Pitch 절대각을 구할수 있는 Yaw는 불가능 (Z축을 기준으로 움직이면 중력 가속도의 변화가 없기 때문) 


가속도 센서 : 오일러 각을 이용한 Roll, Pitch각을 구하는 공식


68d8637fb7d63bfe077cf049150b2030.jpg
 

C언어 코드를 구현 (ax, ay, az는 각각 가속도 값)


roll  = 180 * atan(ay/sqrt(ax*ax + az*az))/M_PI;

pitch = 180 * atan(ax/sqrt(ay*ay + az*az))/M_PI;
 


90도 이상 움직일 경우 짐벌락이 발생하기 때문에 Euler Angle to Quaternion해줘야 된다는 자료를 찾아서 업데이트 예정 


추가작업 : 자이로 센서 값 이용 방법과 필터 구현에 대해서도 추가 자료 업데이트 예정








0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

메이커 스토리

번호 제목 글쓴이 날짜 조회수
69 아두이노 헬박사님의 로봇팔 살리기 icon 양재동메이커 05-13 5,643
68 아두이노 ESP32 CAM을 활용한 도깨비 자동차 Ver 3.0 icon 양재동메이커 06-12 9,483
67 아두이노 ESP32 CAM - 도깨비 자동차 2 icon 양재동메이커 07-13 13,232
66 아두이노 ESP32 CAM - 도깨비 자동차 icon 양재동메이커 05-07 14,897
65 아두이노 로보티즈 다이나믹 셀 MX-12W를 Arduino로 제어하기 (without 3 state buffer) +2 icon 양재동메이커 02-24 19,516
64 아두이노 Otto Bot Bluetooth 연동하기 icon 양재동메이커 05-14 16,064
63 아두이노 ESP8266와 아마존 알렉사 연동 icon 양재동메이커 03-09 16,862
62 아두이노 Open Cat 전원 문제 icon 양재동메이커 02-23 15,402
61 아두이노 Open Cat 한글 매뉴얼 icon 양재동메이커 02-12 15,864
60 아두이노 반려 동물 심폐 소생 시뮬레이터 #2 icon 양재동메이커 11-29 15,892
59 아두이노 오또봇과 형제들 오또봇 RC카 +1 icon 양재동메이커 10-06 17,170
58 아두이노 용인 ICT 스마트 다비아스 톤 - 아침에는 시간이 부족해 icon 양재동메이커 08-04 15,379
57 아두이노 아두이노 이용한 RC, 블루투스 배틀로봇의 외형 자료 icon 양재동메이커 07-25 15,635
56 아두이노 아두이노(아두이노 모터쉴드)를 이용한 RC, 블루투스 배틀로봇 +1 Wavy 07-22 16,166
55 아두이노 팬틸트를 활용한 태양 추적 장치의 개발 icon 양재동메이커 07-15 14,990
54 아두이노 미세먼지 조립 키트 조립기 icon 양재동메이커 07-10 15,268
53 아두이노 오또봇과 형제들 icon 양재동메이커 07-07 16,921
52 아두이노 Otto Bot and Bluetooth icon 양재동메이커 06-08 15,867
51 아두이노 Tokyo Nana의 오또봇(Otto Bot) 제작기 1탄 Tokyonana 06-05 15,163
50 아두이노 오또봇 기본형 만들기 - 오또봇(Otto Bot) 조립 하기 +1 icon 양재동메이커 05-25 20,997