KR20100020387A - 다족보행기구의 자세 측정 장치 및 방법 - Google Patents

다족보행기구의 자세 측정 장치 및 방법 Download PDF

Info

Publication number
KR20100020387A
KR20100020387A KR1020080079147A KR20080079147A KR20100020387A KR 20100020387 A KR20100020387 A KR 20100020387A KR 1020080079147 A KR1020080079147 A KR 1020080079147A KR 20080079147 A KR20080079147 A KR 20080079147A KR 20100020387 A KR20100020387 A KR 20100020387A
Authority
KR
South Korea
Prior art keywords
error
sensor
posture
imu
gyro
Prior art date
Application number
KR1020080079147A
Other languages
English (en)
Inventor
박용후
김석중
홍성호
박진영
김동호
고재운
공찬희
이용호
정숭오
문병권
Original Assignee
주식회사 이디
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 이디 filed Critical 주식회사 이디
Priority to KR1020080079147A priority Critical patent/KR20100020387A/ko
Publication of KR20100020387A publication Critical patent/KR20100020387A/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Gyroscopes (AREA)
  • Navigation (AREA)

Abstract

본 발명은 다족보행기구의 자세 측정 장치 및 방법에 관한 것이다.
본 발명은 견마 로봇용 자세측정장치(ARS - Attitude Reference System)를 개발하는 것을 목표로 하였다. ARS는 자이로와 가속도계 그리고 지자기 센서를 이용하여 항체의 롤, 피치각 자세를 측정하는 장치이다. 일반적인 저가형 MEMS 관성센서로는 오차가 심하게 발생하여 항체의 정확한 위치를 계산하기 힘들다. 본 연구에서는 ARS를 개발하기 위하여 상용의 MEMS 가속도계 및 자이로 센서, 추가적으로 지자기 센서를 사용하여IMU 하드웨어를 제작하였다. 제작된 IMU 하드웨어 보드에 자세계산 프로그램을 내장하여 일정 성능을 보장하는 롤, 피치, 요 자세각 정보를 제공한다.

Description

다족보행기구의 자세 측정 장치 및 방법{Attitude reference system for multiple-legged walking machine and method thereof}
본 발명은 다족보행기구의 자세 측정 장치 및 방법에 관한 것이다.
(본 발명은 가출원 명세서로서 추후 보완 예정)
(본 발명은 가출원 명세서로서 추후 보완 예정)
(본 발명은 가출원 명세서로서 추후 보완 예정)
(본 발명은 가출원 명세서로서 추후 보완 예정)
(본 발명은 가출원 명세서로서 추후 보완 예정)
1. 연구 개요
1.1. 협력 기술명
- 견마 로봇용 자세측정장치(ARS) 개발
1.2. 연구 기간
- 2007/12/1 ~ 2008/2/29 (3 months)
1.3. 요약
본 연구는 견마 로봇용 자세측정장치(ARS - Attitude Reference System)를 개발하는 것을 목표로 하였다. ARS는 자이로와 가속도계 그리고 지자기 센서를 이용하여 항체의 롤, 피치각 자세를 측정하는 장치이다. 일반적인 저가형 MEMS 관성 센서로는 오차가 심하게 발생하여 항체의 정확한 위치를 계산하기 힘들다. 본 연구에서는 ARS를 개발하기 위하여 상용의 MEMS 가속도계 및 자이로 센서, 추가적으로 지자기 센서를 사용하여IMU 하드웨어를 제작하였다. 제작된 IMU 하드웨어 보드에 자세계산 프로그램을 내장하여 일정 성능을 보장하는 롤, 피치, 요 자세각 정보를 제공한다.
2. 연구내용 및 결과
본 연구 과제에서 수행한 연구의 흐름은 그림 1과 같다. IMU 하드웨어 제작을 위하여 센서 및 CPU 사양을 결정하고 하드웨어를 설계하였다. 하드웨어 아트웍(artwork)을 수행하였으며, 완성된 PCB로부터 시작품 보드를 조립하였다. 동시에 자세계산 알고리즘을 연구하였으며, 하드웨어 디버깅을 수행하기 위하여 센서 인터페이스 프로그램과 같은 펌웨어(firmware)를 작성하였다. 이후 제작한 IMU의 신호처리를 위하여 1차 디지털 필터와 온도보상을 실시하였으며, 센서 바이어스와 환산계수를 교정하기 위한 다위치 시험을 실시하였다. 이와 동시에 자세계산 알고리즘을 C코드로 구현한 후, MTx 또는 MTi 센서의 출력 데이터를 이용하여 자세계산 알고리즘을 검증하였다. 센서 인터페이스 프로그램과 자세계산 프로그램의 검증을 실시하여, 완성된 IMU의 플래시 메모리에 펌웨어를 내장하여 IMU 프로토 타입을 완성하였다. 완성된 IMU프로토 타입을 이용하여 MTx 또는 MTi와 자세계산 성능을 비교하여 검증하였고, 또한 그 성능을 비교 분석하였다.
Figure 112008057764810-PAT00001
그림 1. 연구 흐름도
2.1. IMU 하드웨어 개발
2.1.1 견마 로봇용 MEMS 관성센서, 지자기 센서 및 CPU 사양 결정
견마 로봇에 사용되는 센서는 저가이며 소형인 MEMS형 관성센서를 이용한다. 일반적으로 저가의 MEMS 관성센서는 사용목적에 따라 동적 출력 특성과 측정가능한 범위가 제한되어 있을 뿐만 아니라 기술적 한계로 제한된 성능에 의해 제한된 목적으로만 사용되는 경우도 있다. 예를 들어 자동차 에어백의 충돌감지용 가속도계는 측정하는 가속도 범위가 매우 크기 때문에 해상도가 크며, 차량 DR항법용 자이로 센서는 차량의 방위각 변화량이 작기 때문에 대체로 +/-50deg/sec 정도만 측정가능 하며, 또한 카메라 손 떨림 방지용으로 제작된 MEMS 자이로는 기준 전압의 불안정성 등으로 항법용으로 사용하기에 부적합하다.
따라서, IMU 하드웨어를 제작하기에 앞서 견마 로봇의 동적 움직임 특성을 감지할 수 있는 급의 상용 MEMS 센서를 조사하고, 견마용 로봇의 동적 동작 범위를 만족할 수 있는 상용의 센서를 선택하여 사용하였다. 사용한 관성센서 및 지자기 센서, 온도 센서의 모델명과 대표 사양 등은 다음 표 1과 같다.
업체/모델명 대표 사양 외관 (mm) 비고
가속도계 STMicroelectronics / LIS302DL ±2 g or ±8 g / 100 or 400 Hz
Figure 112008057764810-PAT00002
(5 x 3 x 0.9)
3축, I2C
자이로 Murata / ENC03M ±300 deg/sec / 50 Hz
Figure 112008057764810-PAT00003
(12.2 x 7 x 2.6)
수평 2축, Analog
Seiko-Epson / XV3500CB ±100 deg/sec / 200 Hz
Figure 112008057764810-PAT00004
(12.2 x 7 x 2.6)
Z축, Analog
지자기 센서 Honeywell / HMC6032 ±6 Gauss / 10 kHz
Figure 112008057764810-PAT00005
(5 x 3.2 x 1.3)
수평 2축, Analog
Honeywell / HMC1041Z ±6 Gauss / 5 MHz
Figure 112008057764810-PAT00006
(4 x 1.05 x 1)
Z축, Analog
온도 센서 National Semi. / LM35DZ 0 ~ 100 ℃
Figure 112008057764810-PAT00007
(TO-92형)
Analog
표 1. 견마 로봇용 IMU의 사용 센서 목록
다음으로 CPU 사양 결정은 두 가지 방안을 고려하였다. 첫째는, UART, AD 컨버터, I2C 기능 등이 내장된 저가의 8비트 프로세서를 사용하여 IMU를 단순한 데이터 획득장치로 사용하는 방안이고. 둘째는, IMU 자체에서 자세계산을 위해서는 16 비트 이상의 프로세서를 이용하는 방안이다.
첫번째 방안의 경우 기존에 본 연구팀에서 8비트 프로세서인 8051, AVR 등을 이용하여 IMU를 제작한 경험이 있기 때문에 단순한 데이터 획득 장치로서의 IMU 하드웨어 개발은 단기간에 완료할 수 있는 장점이 있으나 자세계산 프로그램을 외부 프로세서나 메인 프로세서에서 계산해야 한다는 단점이 있었다. 따라서, 견마 로봇에 stand-alone으로 장착하기 위하여 IMU 자체에서 자세계산을 수행하기 위하여 Atmel 사의 AT91SAM7S256을 사용하기로 하였다. AT91SAM7S256은 ARM7 코어를 기반으로 한 프로세서로서 최대 55MHz의 클럭을 이용하며, 작은 크기에도 불구하고 플래시와 SRAM이 내장되어 있기 때문에 자체적으로 자세계산이 가능한 것으로 판단되었다. 본 프로세서의 대표적인 사양은 다음과 같다.
- 고성능 32비트 RISC 구조
- 3단계 파이프라인 처리방식 (0.91 MIPS / MHz, 최대 55MHz)
- 내부 고속 FLASH 내장 - 256 kbytes
- 내부 고속 SRAM 내장 - 64 kbytes
- 프로세서 클럭, 마스터 클럭, USB 클럭으로 임의로 조정가능한 전력관리 제어기 (소비전력 최소화 가능)
- 32비트의 병렬 I/O 포트 (Peripheral A, B의 2개의 주변장치 출력기능을 멀티플렉서로 선택가능, 각 핀은 출력 동작에서 오픈드레인 또는 풀업저항 사용을 설정할 수 있음)
- 3채널의 16비트 타이머 카운터 (업다운 카운트 가능, PWM 출력 발생, 파형 발생, 입력 캡쳐 기능 등 존재)
- 2채널의 동기 및 비동기 직렬 통신 포트 (USART), 비동기식으로만 사용가능한 디버그 유닛 (DBUG)
- I2C통신을 수행하며 마스터로만 동작하는 직렬 통신포트 (TWI)
- 8채널의 10비트 A/D 컨버터 (전용 4채널, 병렬 I/O 포트와 연결된 4채널)
- 4채널의 16비트 PWM 출력 신호
- 11채널의 주변장치제어기 (DMA)
- 인터럽트 소스, 우선 순위, 허용 여부 제어가능한 인터럽트 제어기 (AIC)
Figure 112008057764810-PAT00008
그림 2. AT91SAM7S256 외관
2.1.2 IMU 하드웨어 설계 및 조립, 디버깅
IMU하드웨어 설계는 앞에서 언급한 바와 같이 하드웨어를 단기간에 개발하고 설계 오류를 최소화하기 위하여 기존에 본 연구팀에서 검증된 센서 인터페이스 회로를 활용하였다. 센서 부분에서는 아날로그 형태로 신호를 출력하는 센서에 대하여 저역 통과 필터를 설계하고, AD 변환 시 전원 잡음에 의한 오차를 최소화하기 위하여 아날로그, 디지털 전원 및 접지 분리 회로를 설계하였으며, IMU 보드를 견마 로봇에 장착하기 위하여 최소한의 사이즈로 제작하였다. 아트웍 및 PCB 제작은 외부 업체를 통하여 수행하였다. 또한 CPU부분은 펌웨어 개발과 하드웨어 개발을 동시에 진행하기 위하여 기존의 상용으로 판매되는 제품을 사용하였다. 따라서 IMU 하드웨어가 완성되는 동안 펌웨어 작성을 완료할 수 있었다.
부품 실장이 완성된 IMU의 모습은 그림 3과 같으며, CPU 부분 보드아래에 센서 부분 보드를 결합하여 사용한다. 상용으로 판매되는 CPU보드의 회로도는 그림 4와 같이 공개되어 있기 때문에, 추후 하나의 보드로 제작하는 것도 별다른 어려움 없이 수행할 수 있다.
Figure 112008057764810-PAT00009
(a) CPU 부분
Figure 112008057764810-PAT00010
(b) 센서 부분
그림 3. 완성된 IMU 하드웨어
Figure 112008057764810-PAT00011
그림 4. 상용의 AT91SAM256 보드 회로도
2.1.3 센서 바이어스 및 환산계수 교정
IMU에서 획득되는 가속도계와 자이로 센서의 측정값은 매 측정마다 일정하게 유지되는 정규 오차(deterministic error)와 확률적 특성을 갖는 불규칙 오차(random error)를 포함하고 있다. 정규 오차의 주요 원인으로는 가속도계와 자이로의 바이어스 오차환산계수 오차, 비정렬 오차 등이 있으며 이러한 오차들은 IMU 다위치 시험(multi position test)을 통해 그 오차 계수를 추정한 후 항법 알고리즘 수행 전에 정규 오차 보상 알고리즘에서 보상해 주어야 한다. 반면 불규칙 오차는 시간에 따라 불규칙적으로 변화하므로 필터링 기법을 이용하여 확률적으로 가장 적합한 오차를 추정하여 보상한다.
본 연구에서는 특히 MEMS 가속도계와 자이로의 환산계수와 바이어스가 일정하지 않고 온도에 따라 변화하는 특성이 심하며 같은 센서라도 센서마다 개별적으로 환산계수와 바이어스 오차가 다르므로 온도보상을 실시하고 레이트 테이블(rate table)을 이용하여 센서 바이어스 및 환산계수를 추정하였다.
- 센서 데이터 디지털 저주파 통과 필터(low pass fitler) 설계
하드웨어 저역 통과 필터를 설계함으로써 여러 잡음 원인에 의한 일정 대역이상의 고주파 잡음을 제거할 수 있지만, 견마 로봇의 동적 특성을 고려하여 디지털 필터를 추가로 설계한다. 그림 15는 1차 디지털 필터를 적용하여 획득한 온도, 가속도계 3축, 자이로 3축 데이터를 나타내고 있다. 크게 흔들리는 신호가 원래의 센서 획득 신호이며, 각 신호의 가운데 부분에 부드럽게 나타난 빨간색 신호, 파란색 신호가 각각 디지털 필터를 1번, 2번 적용한 결과이다.
Figure 112008057764810-PAT00012
Figure 112008057764810-PAT00013
Figure 112008057764810-PAT00014
Figure 112008057764810-PAT00015
Figure 112008057764810-PAT00016
Figure 112008057764810-PAT00017
Figure 112008057764810-PAT00018
그림 15. 1차 디지털 필터 적용 결과
- 센서 온도보상 알고리즘 개발
일반적으로 저가형 관성센서는 온도에 의해 큰 오차가 발생한다. 그러므로 온도 센서로 측정한 온도를 이용하여 자이로와 가속도계 데이터를 보정해 주어야 한다. 이를 센서 온도보상이라고 하며, 수행 과정과 결과는 그림 16과 같다. 보상결과를 보면 알 수 있듯이 센서의 바이어스가 온도에 따라 선형적 또는 고차 다항식으로 표현됨을 알 수 있다.
Figure 112008057764810-PAT00019
Figure 112008057764810-PAT00020
Figure 112008057764810-PAT00021
Figure 112008057764810-PAT00022
Figure 112008057764810-PAT00023
Figure 112008057764810-PAT00024
그림 16. 온도보상 적용 결과
- IMU 가속도계 다위치 시험
저가형 관성센서를 이용한 IMU를 제작하는 경우에 온도보상이 끝난 경우 가장 주요한 오차는 관성센서의 비정렬 오차와 환산계수 오차 그리고 바이어스 오차이다. 가속도계의 비정렬 오차 및 환산계수 오차, 바이어스 오차는 다음 식 (1)과 같이 모델링을 할 수 있다.
Figure 112008057764810-PAT00025
(1)
Figure 112008057764810-PAT00026
Figure 112008057764810-PAT00027
(a) (c) (e)
Figure 112008057764810-PAT00028
(b) (d) (f)
그림 17. 가속도계 다위치 시험 방법
- IMU 자이로 다위치 시험
가속도계와 마찬가지로 자이로의 경우도 식 (2)와 같이 모델링을 할 수 있다.
Figure 112008057764810-PAT00029
(2)
Figure 112008057764810-PAT00030
Figure 112008057764810-PAT00031
(a) (c) (e)
Figure 112008057764810-PAT00032
(b) (d) (f)
그림 18. 자이로 다위치 시험 방법
가속도계 및 자이로의 비정렬 오차, 환산계수, 바이어스 오차를 보상한 시험 결과를 보면 다음과 같다.
먼저, 그림 19의 (a), (b)는 레이트 테이블에서 z축을 중심으로 반시계 방향으로 100 [deg/sec]의 속도로 400 [deg]를 회전한 시험에 대하여 각각 가속도계와 자이로의 출력을 디지털 변환한 후 디지털 필터링과 온도보상을 수행한 결과값이다. 그림 19에서 보면 알 수 있듯이 회전이 없는 x, y축의 자이로에도 작은 값의 각속도가 인가된 것을 알 수 있는데, 이것은 교정 후 남아있는 비정렬 오차 때문이다.
Figure 112008057764810-PAT00033
Figure 112008057764810-PAT00034
(a) 교정 전 가속도계 데이터 (b) 교정 전 자이로 데이터
그림 19. 교정 전 관성센서 데이터
위의 데이터를 앞에서 시험하여 계산한 비정렬 계수, 환산계수, 바이어스 등을 보상하여 출력한 그림이 그림 20이다. 그림 20을 보면 알 수 있듯이, 자이로의 바이어스 및 환산계수가 교정되어 z축 자이로를 중심으로 반시계 방향으로 -100 [deg/sec]의 각속도로 회전한 것을 알 수 있다. 반면에 환산계수 오차는 어느 정도 남아 있으며, 가속도계의 경우 약간의 바이어스가 존재함을 알 수 있는데, 이것은 저가 MEMS 가속도계의 특징상 크게 나타나는 센서의 불규칙 오차로 랜덤 상수 바이어스 오차가 존재하기 때문이다.
Figure 112008057764810-PAT00035
Figure 112008057764810-PAT00036
(a) 교정 후 가속도계 데이터 (b) 교정 후 자이로 데이터
그림 20. 교정 후 관성센서 데이터
2.2. 자세계산 알고리즘 개발 및 C 코드 구현
2.2.1 견마 로봇용 초기 정렬 알고리즘 개발
관성센서를 이용하여 자세계산을 수행하기 위해서는 초기자세를 알아야 한다. 이를 초기정렬이라고 하며 초기정렬은 개략정렬과 정밀정렬로 나뉜다. 그러나 저가형 센서의 경우 필터를 이용하여 수행하는 정밀정렬은 의미가 없으며 일반적으로 개략정렬만을 수행한다.
NESL ARS의 개략정렬 알고리즘은 2 단계 정렬 알고리즘으로 롤과 피치각을 먼저 계산하고 요각을 계산한다. 개략정렬은 정지상태에서 수행되어야 하며 0.2초간 수행하도록 설정 하였다. 롤과 피치 계산은 0.2초간의 가속도계의 출력을 평균하여 중력가속도 벡터를 찾는 방식으로 수행된다. 정지상태에서 가속도계 출력은 롤과 피치에 의해 식 (3)과 같이 주어진다.
Figure 112008057764810-PAT00037
일반적으로 정렬시 요각을 계산하기 위해서는 자이로 데이터를 이용해 지구자전을 측정한다. 그러나 저가형 자이로는 지구자전 속도를 측정할 수 없으므로 지자기 센서를 이용하여 방위각을 설정한다. 그러나 지자기 센서를 이용하지 않을 경우의 초기 개략정렬은 초기각을 0[deg]로 설정하고 계산한다.
실제 센서는 켜고 나서 150 샘플간은 초기화 과정이 필요하다. 초기의 센서 데이터는 전원 안정화에 소요되는 시간 등의 이유로 비정상적인 데이터를 출력하기 때문에 140샘플간은 버리고 10샘플간의 데이터(0.2초간)의 데이터를 이용하여 개략정렬을 수행한다. 이 0.2초간 동체가 정지해 있으면 초기자세계산 성능을 조금 더 향상시킬 수 있다.
2.2.2 롤, 피치, 요 각 자세 업데이트 알고리즘 개발
Figure 112008057764810-PAT00038
그림 21. 가속도계를 이용한 자세보정 알고리즘 개념도
ARS는 롤과 피치를 계산하는 장치로 자이로와 가속도계를 이용하여 정확한 동체의 자세를 계산한다. 일반적으로 동체의 자세는 자이로를 이용하여 동체의 각속도를 측정한 후 적분 계산을 수행하여 얻는다. 그러나 저가형 자이로의 출력에는 센서 오차가 포함되어 있으므로 정확한 각속도 측정이 불가능하다. 그리고 자이로에 포함된 매우 작은 오차도 적분과정을 거치면서 자세오차가 기하급수적으로 커져 발산하게 된다. 그래서 일반적인 ARS는 자세계산을 위하여 가속도계를 이용한 보정 과정을 거치게 된다. 아래 그림은 정지상태에서 Xsens 사의 MTx 센서의 raw 데이터를 이용해 순수 자세계산 알고리즘을 적용한 결과와 MTx센서의 보정된 자세 출력을 비교한 그래프이다.
Figure 112008057764810-PAT00039
그림 22. MTx 자세와 순수 자이로 데이터를 이용한 자세계산 결과의 차이
이를 살펴보면 자세계산을 시작한지 불과 10초만에 자세오차가 10도 가까이 나는 것을 볼 수 있다.
본 연구에서 새로이 NESL ARS의 자세계산 알고리즘은 가속도계 센서 출력을 측정치로 하는 칼만필터를 구성하여 개발되었다. 칼만필터의 시스템 방정식은 다음 오일러각 업데이트식을 통해 계산된다.
Figure 112008057764810-PAT00040
식 (7)에서 지자기 센서 없이 계산할 수 있는 롤과 피치에 관련된 식만 정리하면 각각 식 (8), (9)와 같다.
Figure 112008057764810-PAT00041
식 (12)에서 볼 수 있듯이 각속도 값은 상태 천이행렬(state transition matrix)의 요소로 들어가게 된다.
가속도계에서 출력하는 데이터는 동체에 작용하는 비력으로 아래 식과 같은 요소로 구성되어 있다.
Figure 112008057764810-PAT00042
이 때의 새로운 측정 행렬은 아래와 같다.
Figure 112008057764810-PAT00043
(16)
동체가 정지상태가 아닌 경우는 식 (15)의 속도와 관련된 항이 측정치에 외란으로 작용하게 된다. 이렇게 동체가 움직여서 외란이 크게 작용하는 경우 측정 방정식의 신뢰성이 떨어지게 된다. 따라서 이 경우 칼만필터의 측정잡음을 크게 주 어서 칼만이득을 작게 만들어 순간적으로 자이로 측정치를 더욱 신뢰하고 자세를 추정한다.
이를 위하여 가속도를 측정할 때 3축 가속도의 놈(norm)의 크기가 1[g]보다 크게 벗어나는 경우에는 측정 잡음인 R값을 크게 한다. 이때 설정하는 문턱값(threshold)은 실험을 통하여2단계로 나누어 설정하여 더 정확한 추정을 하였다.
정지상태의 자세오차는 다음 식과 같다.
Figure 112008057764810-PAT00044
간단한 계산을 통해 가속도계 X축 15[mg]정도의 오차는 0.8595[deg]의 피치각 자세오차를 유발한다. 마찬가지로 가속도계 Y축 15[mg]의 오차는 롤 각에 0.8595[deg]정도의 오차를 유발한다. 롤각 자세오차는 피치와 롤각이 커지면 더 커진다.
본 연구에서는 이 알고리즘을 바탕으로 자이로와 가속도계 출력을 혼합하여 롤, 피치각을 보상함으로써 지속적으로 일정 수준이상의 성능을 보장하는 ARS를 구현하였다. 그리고 알고리즘은 최종적으로 ANSI-C언어로 구현되어 목표 플랫폼에 적재되어 실시간으로 구동될 수 있도록 포팅 과정을 거치고 검증을 실시하였다.
2.2.3 요각에 대한 자세 보상 알고리즘 개발
롤과 피치각과 마찬가지로 일반적인 요각 계산 알고리즘 역시 자이로 적분을 통해 계산을 수행한다. 자이로를 이용하여 자세를 계산하면 단시간의 회전각은 상대적으로 정확한 계산이 가능하나 자이로 오차의 누적에 의해 장시간 계산을 수행하면 자세오차가 매우 커지게 된다. 요각을 계산하는 또 다른 방식은 지자기 센서를 이용하는 것이다. 지자기 센서는 발생하는 오차가 일정 범위 내에 한정되어 있기 때문에 장기적으로 자이로보다는 신뢰할 수 있으나 자성체(ferromagnetic) 등에 의하여 외란을 쉽게 받기 때문에 단기적인 자세는 상대적으로 불안정하다.
따라서 본 연구에서는 칼만 필터를 이용하여 자이로와 지자기 센서의 출력을 결합하는 알고리즘을 개발하였다. 측정치는 지자기로부터 측정되는 방위각과 자이로 적분을 통한 방위각 두 가지를 이용하였다.
우선 자이로 적분을 통한 방위각은 다음과 같다.
Figure 112008057764810-PAT00045
칼만 필터는 자기의 외란이 없는 경우, 지자기 센서를 이용하여 계산한 방위각을 신뢰하여 자이로의 부유 오차를 보상하도록 구성되었다. 하지만 지자기의 외란이 있는 경우에는 지자기 센서의 방위각을 신뢰할 수 없기 때문에 공분산 값을 조정하여 자이로 적분을 통한 방위각을 신뢰하도록 구성한다.
지자기 외란은 지자기 센서를 통하여 측정되는 벡터의 놈의 변화와 복각(dip angle)의 변화를 통하여 검출 한다.
지자기의 놈과 복각은 다음과 같이 구할 수 있다.
Figure 112008057764810-PAT00046
지자기 외란을 검출하는 것은 간단하지만 이를 보상하는 것은 현실적으로 어려운 일이므로, 정확하고 강건한 방위각을 찾는 알고리즘을 구성하는 것은 차후 연구할 필요성이 있다.
2.3. 견마 로봇용 ARS 프로토 타입 완성
2.3.1 펌웨어에 자세계산 프로그램 내장
본 연구 과제를 통해 획득한 센서 출력의 디지털 필터링, 온도보상 알고리즘, 환산계수, 바이어스 교정, 자세계산 프로그램을 ANSI-C코드를 기준으로, 실시간으로 수행할 수 있도록, 개발한 하드웨어 플랫폼에 맞게 수정 보완하여 AT91SAM7S256에 내장된 플래시 메모리에 탑재하였다. 이때 소프트웨어 개발환경으로는 ARM사에서 개발한 ADS 1.2 컴파일러 및 통합 개발환경 툴을 사용하였다. 최종 완성된 ARS 프로토 타입은 그림 23과 같다.
Figure 112008057764810-PAT00047
그림 23. ARS 완성된 프로토 타입
Figure 112008057764810-PAT00048
그림 24. ARS 치구 장착 모습
Figure 112008057764810-PAT00049
그림 25. ARS 프로토 타입 검증 시험 모습
실시간으로 교정되는 센서 출력을 검증하기 위하여 MTx 및 MTi의 출력과 비교하는 시험을 실시하였다. 다음 그림 26은 레이트 테이블에서 3개의 모듈을 서로 정확히 수평이 되도록 하고 동시에 z축을 중심으로 시계 방향과 반시계 방향으로 100 [deg/sec]의 각속도로 400 [deg]만큼 회전한 결과이다.
Figure 112008057764810-PAT00050
Figure 112008057764810-PAT00051
Figure 112008057764810-PAT00052
Figure 112008057764810-PAT00053
Figure 112008057764810-PAT00054
Figure 112008057764810-PAT00055
그림 26. Xsense 사의 MTx vs. MTi vs. NESL IMU 비교
그림에서 볼 수 있듯이, MTx와 MTi의 신호는 거의 유사하게 나오는 것을 알 수 있으며, NESL IMU의 경우에도 유사한 경향으로 나타나는 것을 알 수 있다. 다만 가속도계의 경우 랜덤 상수 바이어스 오차가 약간 존재하며, 자이로의 경우는 MTx, MTi보다 백색잡음이 더 적게 나타나는 것을 알 수 있다.
보다 더 정확한 비교 시험을 하기 위하여, 1시간 동안 온도변화가 존재하는 정적인 수평 상태에서 시험을 실시하였으며, 그 결과는 그림 27, 28과 같다.
Figure 112008057764810-PAT00056
Figure 112008057764810-PAT00057
Figure 112008057764810-PAT00058
Figure 112008057764810-PAT00059
Figure 112008057764810-PAT00060
Figure 112008057764810-PAT00061
Figure 112008057764810-PAT00062
그림 27. Xsense 사의 MTx vs. NESL IMU 가속도계 바이어스 안정도 비교
Figure 112008057764810-PAT00063
Figure 112008057764810-PAT00064
Figure 112008057764810-PAT00065
Figure 112008057764810-PAT00066
Figure 112008057764810-PAT00067
Figure 112008057764810-PAT00068
그림 28. Xsense 사의 MTx vs. NESL IMU 자이로 바이어스 안정도 비교
그림 27의 가속도계 결과를 보면 여러 차례 보정을 수행했음에도 불구하고 랜덤 상수 오차가 바이어스로 존재함을 볼 수 있다. 그러나 이런 랜덤 오차는 고정된 크기를 갖지 않으므로 시스템을 구동할 때마다 필터링 기법을 이용하여 보정해야 한다. 보정 되지 않고 남아 있는 오차는 앞에서 설명한 자세계산 알고리즘에서 가속도계 데이터를 측정치로 받으므로 자세오차를 지속적으로 발생시킨다. 가속도계 X축 15[mg]정도의 오차는 0.8595[deg]의 피치 방향 자세오차를 유발하고 마찬가지로 가속도계 Y축 9[mg]의 오차는 롤 방향에 0.5157[deg]정도의 오차를 유발한다. 가속도계 랜덤 상수 오차에 의해 보상할 수 없는 자세오차가 1[deg] 내외로 발생한다. 따라서 자세계산의 정밀도를 높이기 위하여 보다 더 성능이 좋은 가속도계가 요구된다. 반면 자이로의 데이터는 MTx에 비해 좋은 결과를 보여준다.
2.3.2 IMU에 내장된 자세계산 프로그램 검증
제작한 IMU 보드로부터 획득한 자세 정보를 분석하여 자세계산 프로그램이 목표로 하는 플랫폼에 오류 없이 구현되었음을 검증하기 위하여 임의의 자세를 측 정하는 실험을 수행하였다. 먼저 정지상태에서 지자기 센서의 정보를 사용하지 않았을 때 테이블 위에 수평으로 놓고 약 1100초간 자세를 계산했을 때의 결과이다.
Figure 112008057764810-PAT00069
Figure 112008057764810-PAT00070
Figure 112008057764810-PAT00071
그림 29. 정지상태에서의 자세 출력(롤, 피치, 요)
그림 29를 보면 자이로가 측정한 각속도만으로 자세계산을 수행하여 오차가 발산한 요각과는 달리 0.3[deg] 내외에서 안정한 것을 알 수 있다. 그리고 롤과 피치각이 각각 1[deg] 와 0.15[deg] 정도의 오차를 갖는데 이는 앞에서 살펴 보았던 가속도계 오차와 테이블의 오차가 원인이다. 테이블을 정확히 수평으로 맞추고 시험하는 것이 거의 불가능하기 때문에 MTi와의 자세 비교를 통해 조금 더 정확한 성능을 알아 볼 수 있다. 가속도계의 랜덤 상수 오차로 인해 발생하는 오차는 가관측하지 않기 때문에 실시간으로 보상할 수 없으므로 자세계산중에 지속적으로 영향을 미친다. 이 오차를 줄이기 위해서는 가속도계를 조금 더 성능 좋은 모델로 변경해야만 한다.
다음은 롤을 30[deg] 회전시켰을 때의 결과이다. 이번에는 상대적인 자세 정확도를 알기 위하여 MTi의 자세 출력과 비교를 해보았다. 실험은 NESL ARS와 MTi 센서를 서로 붙여 놓고 동시에 데이터를 받는 방식으로 진행 되었다.
Figure 112008057764810-PAT00072
Figure 112008057764810-PAT00073
(a) 롤 비교 (b) 피치 비교
그림 30. 롤을 -30[deg] 돌렸을 때의 자세 출력
결과를 보면 회전각 -30[deg]를 1.5[deg] 이내의 정확도로 찾아가는 것을 볼 수 있다. 초기오차와 피치의 오차는 치구와의 장착오차와 MTi와 NESL ARS의 장착오차에 의해 발생한다.
다음은 x, y축이 지면과 수평으로 정지한 상태에서 피치축으로 10[deg]씩 회전 시켰을 때의 결과이다. 먼저 피치각을 -10[deg]로 회전 후 바로 반대 방향으로 20[deg]를 회전하여 10[deg]를 만들었다가 다시 지면과 수평인 상태로 되돌린 후 실험을 종료하였다.
Figure 112008057764810-PAT00074
Figure 112008057764810-PAT00075
(a) 롤 비교 (b) 피치 비교
그림 31. 피치를 10[deg]씩 돌렸을 때의 자세 출력
장착오차가 존재하는 롤각과는 달리 피치각은 매우 정확한 자세를 출력한다. 정확히 10[deg]씩 회전했으므로 MTi보다 더 좋은 성능을 보여주는 것으로 분석 할 수 있다.
2.3.3 NESL ARS와 MTi 와 자세 출력 성능 비교
마지막으로 NESL ARS와 MTi 에서 출력되는 자세 정보에 대하여 성능을 비교한다. 이때 MTi 의 자세 정보를 참값으로 하여 NESL IMU의 성능을 비교하고, 자세오차 등의 성능이 목표로 제시한 사양에 부합하는지를 최종적으로 확인한다. 자세 결과의 저장은 Window GUI 프로그램을 이용하였다. NESL ARS의 자세 데이터와 MTi 의 자세 데이터를 비교할 때 물리적으로 시각을 정확히 동기 시킬 수 없기 때문에 RMS오차 등을 계산하는 것은 의미가 없다. 따라서 피크(peak)에서 보이는 대략적인 오차의 크기만을 비교해 보았다.
그림 32의 실험은 레이트 테이블에서 회전을 가해 가속도 데이터에 중력 가 속도 이외의 가속도 값이 외란으로 입력될 경우 얼마나 강건(robust)한지를 알아보는 시험이다. 그림 33은 레이트 테이블 중심에서 15cm떨어진 곳에 센서를 위치 시키고 정지상태에서 롤을 30[deg] 회전시킨 후 레이트 테이블을 작동 시켜 60[deg/sec]의 등속 회전을 가한 결과이다.
Figure 112008057764810-PAT00076
그림 32. 실험 장면
Figure 112008057764810-PAT00077
Figure 112008057764810-PAT00078
(a) 롤 비교 (b) 피치 비교
그림 33. 외부 가속도가 입력될 때의 자세 출력
레이트 테이블이 회전하면 원심력에 의한 가속도가 발생하여 회전 구간에서 롤 축으로 측정치에 외란이 발생한다. 그림 33을 보면 본 연구에서 개발된 알고리즘이 외란에 거의 영향을 받지 않고 안정한 출력을 내는 것을 볼 수 있다. 이는 외 란이 작용하면 가속도계 값의 놈이 측정치의
Figure 112008057764810-PAT00079
에 설정한 문턱값 기준을 넘게 되고
Figure 112008057764810-PAT00080
값이 순간적으로 상승하여 가속도계에 의한 자세를 신뢰하지 않게 만들어 얻은 결과이다.
그림 34는 센서들을 롤과 피치 축을 중심으로 천천히 흔들었을 때의 결과이다. 먼저 롤각의 회전을 가하고 다음 피치각으로 회전을 주었다.
Figure 112008057764810-PAT00081
Figure 112008057764810-PAT00082
(a) 롤 비교 (b) 피치 비교
Figure 112008057764810-PAT00083
(c) 롤 비교 확대
그림 34. 느린 속도로 회전시켰을 때 자세 출력(롤, 피치, 롤 확대)
그림 34를 분석하면 NESL ARS의 자세 성능이 거의 MTi와 유사하다는 것을 알 수 있다. 피크 근처의 동적 상황에서도 MTi와 최대 5[deg]까지의 차이를 보임을 알 수 있다.
그림 35는 롤과 피치방향으로 빠르게 흔들었을 때의 결과이다.
Figure 112008057764810-PAT00084
Figure 112008057764810-PAT00085
(a) 롤 비교 (b) 피치 비교
Figure 112008057764810-PAT00086
(a) 롤 비교 확대
그림 35. 임의로 흔들었을 때의 자세 출력(롤, 피치, 그래프 확대)
이 경우도 앞의 결과와 비슷하게 NESL ARS와 MTi의 자세계산 결과는 전체적으로 유사하나 상대적으로 빠르게 흔들리는 상황에서 최대5[deg]까지 차이가 발생하는 것을 볼 수 있다. 이는 동작 범위가 300[deg/sec]인 MTi 와 비교하여 NESL ARS에 사용된 센서의 동작범위가 150[deg/sec]이기 때문에 빠른 동작을 계산할 수 없어서 발생한 문제일 가능성이 있다. 그러나 이와 같이 빠른 움직임 아래에서는 MTi의 정확도도 보장할 수 없다. 따라서 동적인 상태에서 정확한 자세의 정확도를 측정하기 위해서는 레이져 스캐너 등의 고가 장비를 사용해야 하는 단점이 있으므로 본 연구에서는 동적 상태에서는 정확한 자세 오차는 비교할 수 없었다.
요각 계산 알고리즘 역시 시험을 통하여 검증하였다. 실험은 NESL ARS 모듈과 MTx를 수평 상태에 놓고 ±90[deg]로 회전시키면서 요각에 변화를 주었다.
Figure 112008057764810-PAT00087
Figure 112008057764810-PAT00088
그림 36. 90[deg]씩 요각 회전 시 요각 출력
그림 36에서 초록색 선은 ±90[deg], 0[deg]를 표시한 것이다. 위 그림은 0[deg] 부근을 확대한 것이다. MTx와 NESL ARS 모두 오차가 1[deg] 미만인 것을 확인할 수 있다.
Figure 112008057764810-PAT00089
Figure 112008057764810-PAT00090
그림 37. 90[deg]씩 요각 회전 시 요각 출력 확대
위 그림은 ±90[deg]부근의 각을 확대한 것이다. MTx와 NESL ARS 모두 0[deg]일 때보다는 부정확한 결과를 내었다. +90[deg]에서는 NESL ARS가 더 나은 성능을 보이나 -90[deg]에서는 MTx가 더 나은 성능을 보였다. 이는 지자기 센서의 비선형적 특성과 바이어스, 환산계수의 부정확성 때문에 기인한다. NESL ARS의 경우 90[deg]에서 평균 1.2[deg], -90[deg]에서 1.4[deg] 오차가 발생하였다.
이상으로 본 연구를 통해 목표 스펙을 만족하는 ARS제작을 성공적으로 완수 하였다. 추후 성능을 개선하기 위하여 지자기 센서를 이용한 자세 보상 알고리즘과 본 연구에서 개발된 자세계산 알고리즘을 실시간으로 구현하기 위한 연구와 가속도계 초기 랜덤 상수 오차 개선 방법 및 자이로 오차 실시간 보정 방법에 대한 연구를 수행할 필요성이 있다.
3. 자세 출력 포맷
본 연구과제에서 개발한 A(H)RS 모듈은 UART1번 포트를 통하여 50Hz의 주기 로 롤, 피치, 요각을 출력한다. 각각의 자세는 4바이트 float형태로 이루어져 있고, 자세한 포맷은 다음과 같다.
Start Roll Pitch Yaw
'x' [3] [2] [1] [0] [3] [2] [1] [0] [3] [2] [1] [0]
표 2. A(H)RS 모듈 자세각 출력 포맷
데이터를 입력받기 위한 간단한 VC-++ 프로그램 코드는 다음과 같다.
int DataNum = 12;
union Angle
{
BYTE att[4];
float att4byte;
};
static Angle Rol;
static Angle Pit;
static Angle Yaw;
// -------------------- Serial Communication Thread CALLBACK Function ----------------------
void CALLBACK CommReceiveProc(BYTE data, PVOID pExtrahWndProc){ // Serial Communication Data CallBack
if(DataNum == 12){ // Start of Data
if(data == 'x'){ // Start of Header
DataNum = 0;
return ;
}
else{ // Data Transmission Fault
// TODO: WHAT TO DO?
// Error
return ;
}
} else{
if(DataNum <=3){
Rol.att[3-DataNum] = data;
}
else if(DataNum <=7){
Pit.att[7-DataNum] = data;
}
else if(DataNum <=11){
Yaw.att[11-DataNum] = data;
}
DataNum++;
}
return ;
}
상술한 바와 같이, 본 발명에 따른 다족보행기구의 자세 측정 장치 및 방법의 실시예가 구성된다. 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 이것에 의해 한정되지 않으며 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 본 발명의 기술사상과 아래에 기재될 특허청구범위의 균등범위 내에서 다양한 수정 및 변형이 가능함은 물론이다.
본 명세서에 첨부되는 다음의 도면들은 본 발명의 바람직한 실시예를 예시하는 것이며, 전술한 발명의 상세한 설명과 함께 본 발명의 기술사상을 더욱 이해시키는 역할을 하는 것이므로, 본 발명은 그러한 도면에 기재된 사항에만 한정되어 해석되지 않아야 한다.
(본 발명은 가출원 명세서로서 추후 보완 예정)
도 1은 연구 흐름도.

Claims (1)

  1. (본 발명은 가출원 명세서로서 추후 보완 예정)
KR1020080079147A 2008-08-12 2008-08-12 다족보행기구의 자세 측정 장치 및 방법 KR20100020387A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080079147A KR20100020387A (ko) 2008-08-12 2008-08-12 다족보행기구의 자세 측정 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080079147A KR20100020387A (ko) 2008-08-12 2008-08-12 다족보행기구의 자세 측정 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20100020387A true KR20100020387A (ko) 2010-02-22

Family

ID=42090459

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080079147A KR20100020387A (ko) 2008-08-12 2008-08-12 다족보행기구의 자세 측정 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20100020387A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021218212A1 (zh) * 2020-04-26 2021-11-04 珠海格力智能装备有限公司 机器人的控制方法及装置、存储介质和处理器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021218212A1 (zh) * 2020-04-26 2021-11-04 珠海格力智能装备有限公司 机器人的控制方法及装置、存储介质和处理器

Similar Documents

Publication Publication Date Title
CN111678538B (zh) 一种基于速度匹配的动态水平仪误差补偿方法
KR100533106B1 (ko) 지자계 센서의 자세 오차 보상장치 및 방법
US20030084704A1 (en) Self-calibrating inertial measurement system method and apparatus
CA2365886A1 (en) Calibration of sensors
CN102692239B (zh) 一种基于旋转机构的光纤陀螺八位置标定方法
JP5445270B2 (ja) 校正データ取得方法、加速度センサー出力補正方法及び校正データ取得システム
CN109459585B (zh) 一种加速度计零位偏置修正方法
KR20120107439A (ko) 자체 보정 멀티-자기력계 플랫폼을 위한 시스템 및 방법
TWI428602B (zh) 旋轉測量方法、模組及包含該模組之可攜式裝置
CN103323625B (zh) 一种mems-imu中加速度计动态环境下的误差标定补偿方法
KR20140025319A (ko) 근 자기장의 동적 추적 및 보상을 위한 장치 및 방법
US6758080B1 (en) Calibration of sensors
CN111273058A (zh) 一种加速度计标定方法
Carratù et al. IMU self-alignment in suspensions control system
CN108088431B (zh) 一种自校正电子罗盘及其校正方法
CN102654515B (zh) 三轴加速度传感器的z敏感轴的校准方法
Chen et al. High-precision geomagnetic directional technology based on sensor error correction and adaptive hybrid filter
CN110030991B (zh) 融合陀螺和磁强计的飞行物高速旋转角运动测量方法
CN110631605B (zh) 一种陀螺阵列标定方法及系统
CN106931965B (zh) 一种确定终端姿态的方法及装置
KR20100020387A (ko) 다족보행기구의 자세 측정 장치 및 방법
CN113959464B (zh) 一种陀螺仪辅助的加速度计现场校准方法和系统
US11371848B2 (en) Method for characterising an inertial measurement unit
CN115876225A (zh) 基于二自由度转台的mems imu标定方法及系统
CN114910666A (zh) 一种用于车辆坡道估计的加速度传感器静态补偿校正方法

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination