SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
SkyRover 펌웨어 및 자세제어
조한철(Baram)
2014. 12. 20.
목차
 펌웨어 History
 펌웨어 구조
 자세 및 모터 방향
 비행모드
 자세제어
펌웨어 History – Flexbot
Multiwii 2.3
Arduino
AVR
Flexbot+
FlexBot 통신
I/F
<Flexbot App><History>
 Flexbot 펌웨어
• AVR을 사용한 Arduino개발환경을 사용하는 Multiwii 2.3기반으로 Flexbot App으로 조종을 위
한 통신 I/F 추가함
• AVR에 Arduino기반으로 구현되어 있어서 ARM용으로 포팅하기에는 어려움
펌웨어 History – SkyRover Nano
Multiwii 2.3
Arduino
AVR
SkyRover
Nano
+
Flexbot 통신
I/F
Afroflight32
GCC
STM32F103 부트로더 추가
+ +
FreeRTOS 적용
USB 통신
+
LCD Lib
(u8glib)
+
 SkyRover Nano 펌웨어
• Multiwii를 ARM용으로 포팅한 Afroflight32 코드를 기반으로 Flexbot app을 사용하기 위한 통
신 I/F를 추가하여 성능은 높이면서 기존의 플랫폼을 그대로 사용함
펌웨어 History – 개발과정
 [나노콥터] 펌웨어 포팅 계획 : http://cafe.naver.com/openrt/4371
 [나노콥터] AfroFlight32 펌웨어를 스마트로봇 보드로 시험 : http://cafe.naver.com/openrt/4401
 [나노콥터] PWM 동작 시험 : http://cafe.naver.com/openrt/4443
 [나노콥터] 센서 방향 및 모터 위치 : http://cafe.naver.com/openrt/4467
 [나노콥터] 펌웨어 시험용 기체 만들기 : http://cafe.naver.com/openrt/4472
 [나노콥터] 펌웨어 개발환경 및 부트로더 : http://cafe.naver.com/openrt/4483
 [나노콥터] HexAirBot 통신 인터페이스 추가 : http://cafe.naver.com/openrt/4490
 [나노콥터] 모터 시험 : http://cafe.naver.com/openrt/4491
 [나노콥터] 블루투스 통신 시험 : http://cafe.naver.com/openrt/4518
 [나노콥터] 멀티위콘피그 프로그램 : http://cafe.naver.com/openrt/4605
 [나노콥터] SkyRover 조립 및 구동 시험 : http://cafe.naver.com/openrt/4726
 [나노콥터] Hex 콥터 변경 펌웨어 : http://cafe.naver.com/openrt/5107
 SkyRover nano Hex 비행영상 : http://cafe.naver.com/openrt/5158
 SkyRover 펌웨어 계획 : http://cafe.naver.com/openrt/5383
 SkyRover 펌웨어에 FreeRTOS 적용 : http://cafe.naver.com/openrt/5455
 SkyRover 부트로더/펌웨어 USB통신 추가 : http://cafe.naver.com/openrt/5548
 SkyRover 윈도우용 GUI 다운로더(STM32LD_GUI) : http://cafe.naver.com/openrt/5943
 SkyRover Nano PCB 첫 비행 : http://cafe.naver.com/openrt/6651
 SkyRover Nano 최종 PCB 버전 비행 시험 : http://cafe.naver.com/openrt/6744
 SkyRover Nano OLED 시험 : http://cafe.naver.com/openrt/6760
 SkyRover Nano Cup(컵) 버전 시험 비행 : http://cafe.naver.com/openrt/6844
펌웨어 History – Open Source
SkyRover
Nano
Multiwii
Afroflight32
Flexbot
FreeRTOS
STM32LD
u8glib
 Why?
• 기술 진입 장벽 낮아짐
• 플랫폼 다양화
• 정보 공유를 통한 발전
• 열린 커뮤니티 활성화
펌웨어 History – Open Source
구 분 설 명 링크
Mulitiwii 멀티콥터 오픈소스 https://code.google.com/p/multiwii/
Afroflight32 Mulitiwii를 STM32F103용으로 포팅한 버전 https://github.com/multiwii/baseflight
HexAirBot Mulitiwii에 Flexbot app을 이용한 제어가 가능하도록 변경함 https://github.com/HexAirbot
FreeRTOS 멀티태스킹을 위한 리얼타임 OS http://www.freertos.org/
STM32Cube ST사에서 STM32시리즈 활용을 위한 펌웨어 라이브러리 http://www.st.com/stm32cube-pr
stm32ld
STM32의 시리얼 부트로더 프로토콜을 사용한 Flash 다운로
드
https://github.com/jsnyder/stm32ld
https://github.com/chcbaram/stm32ld
https://github.com/chcbaram/stm32ld_gu
i
u8glib 그래픽 LCD 라이브러리 https://code.google.com/p/u8glib/
 Open Source List
펌웨어 구조
펌웨어
부트로더
0x08000000
0x08003000
설정 저장
12KB
114KB
2KB
0x0801F800
0x08020000
 Memory 구조
• 부트로더는 전원 On/Reset시 처음 실행됨
• STM32F103은 EEPROM이 없기때문에 마지막 2KB영역을
저장용 메모리로 사용
• 펌웨어 다운로드시 설정값은 유지됨
펌웨어 구조
 부트로더
• 기능
 통신으로 펌웨어를 MCU의 플래시 메모리에 Write하고 펌웨어를 실행
• 통신 프로토콜
 STM32의 내장 부트로더 통신 프로토콜
• 다운로드 Tool
 오픈소스인 stm32ld를 수정하여 사용하고 윈도우용으로 포팅(stm32ld_gui)
• 통신 포트
 Uart1 시리얼 포트
 USB의 Virtual 시리얼 포트
• 소스코드
 https://github.com/oroca/SkyRover_Nano_Boot
펌웨어 구조
 펌웨어 Thread
• FreeRTOS를 적용하여 총 3개의 Thread를 구동함
• 각 스레드는 독립적으로 동시에 실행되기에 멀티콥터 기능을 수행하면서 LCD표시나 메뉴를 통
한 모니터링등이 가능함
• 멀티콥터 제어 Loop는 RTOS가 고려되지 않고 작성되었기 때문에 Thread의 우선순위를 동일
하게 설정함
• 향후 RTOS를 고려하여 멀티콥터 제어 Loop를 다시 작성 필요(RTOS의 효율적 사용)
thread_mw() thread_menu() thread_lcd()
• 멀티콥터 제어 Loop
• 통신/모터/센서 관리
• USB통신을 이용한 메뉴 기
능
• 블루투스 설정
• 센서 모니터링
• 기능 설정
• U8glib를 사용한 LCD 표시
펌웨어 구조
 멀티콥터 제어 Loop
rcReady = hexairbotFrameComplete();
computeRC();
• 블루투스로 조종 데이터가 수신되었는지 검사
• 수신된 조종값(롤,피치,요,스로틀,AUX1,AUX2,AUX3,AUX4)을 rcData[] 배
열에 저장
50Hz
computeIMU(); • 가속도/자이로/지자계 센서로 부터 자세값 계산
annexCode(); • 수신된 조종값 rcData[]의 범위는 1000~2000이며(중립은 1500), 제어범위
값 rcCommand[]에 0~500 값으로 변환
pid_controller();
mixTable();
writeServos();
writeMotors();
• rcCommnad[]값을 기준으로 PID제어에 따른 제어량값 계산
• 기체 종류에 따라 PID제어를 통해 나온 제어량은 모터 PWM으로 변환
• PWM값에 따른 모터 구동
280Hz
자세 - Roll
 Roll
• 멀티콥터가 좌/우로 회전하는 방향
(-)방
향
(+)방
향
<뒤에서 본모
습>
0도 -90
도
+90
도
+180
도
자세 - Pitch
 Pitch
• 멀티콥터가 상/하로 회전하는 방향
(-)방
향
(+)방
향
<옆에서 본모
습>
0도 -90
도
+90
도
자세 - Yaw
 Yaw
• 멀티콥터의 수평 움직임으로 우측으로 회전시 +방향만 있음
• 지자계 센서가 활성화 되어 있으면 북쪽이 0도이고 그렇지 않은경우 가속도 센서의 X축방향이
0도
0도
<위에서 본모
습>
북
동
남
서
360도
모터 방향 - Hex
 Hex 구성
• 6개의 모터로 구성되며 모터의 방향은 기체의 타입에 따라 결정됨
• SkyRover Nano는 Multiwii에서 사용되는 모터 방향이 사용됨
<Hex 모터 구 <SkyRover
Nano>
모터 방향 - QuadX
 QuadX 구성
• 4개의 모터가 크로스 형태로 구성됨
• 대표적인 쿼드콥터 형태
<Hex 모터 구 <SkyRover
Nano>
비행모드
Mode 자이로 센서 가속도 센서 기압 센서 지자계 센서
Acro/Gyro ●
Angle/Stable ● ●
Horizon ● ●
HeadFree ● ● ●
Altitude Hold ● ● ●
 비행 모드별 사용 센서
비행모드 – Acro/Gyro
<조종기> <멀티콥터> <조종기> <멀티콥터>
 Roll/Pitch/Yaw 축에 자이로 센서로만 자세제어
비행모드 – Angle/Stable
<조종기> <멀티콥터> <조종기> <멀티콥터>
 SkyRover Nano의 비행 모드
 Roll/Pitch는 가속도/자이로에서 구해진 각도값으로 자세제어
 Yaw는 자이로 센서값으로만 제어
자세제어
멀티콥터는 어떻게 수평을 유지할까?
자세제어
 멀티콥터 움직임
• Roll/Pitch/Yaw/상하 움직임의 전체 합 방향으로 이동
• 각 이동방향에 대해 제어가 되면 원하는 방향으로 기체 이동이 가
능
+ + +
<Roll> <Pitch> <Yaw> <상/하>
자세제어
 6개의 모터 구동으로 Roll/Pitch/Yaw/상하 이동
Roll
Pitch
Yaw
상/하
모터속도 빠르게
모터속도 느리게
자세제어
 멀티콥터의 움직임에 대한 모터 영향
(-)방
향
(+)방
향
모터속
도 느리
게
모터속
도 빠르
게
모터속
도 빠르
게
모터속
도 느리
게<Roll 움직임>
자세제어
모터
Roll Pitch Yaw 상/하
(+) (-) (+) (-) (+) (-) (+) (-)
FRONT_L + - - + - + + -
REAR_L + - + - + - + -
FRONT_R - + - + - + + -
REAR_R - + + - + - + -
FRONT 0 0 - + + - + -
REAR 0 0 + - - + + -
 움직임 방향 vs 모터속도 방향
자세제어
 모터 제어속도 구성요소
PWM1 = FRONT_L = 제어량xRoll방향 + 제어량xPitch방향 + 제어량xYaw방향 + 제어량x상/하방향
Roll, Pitch, Yaw, 상/하
PWM1
PWM2
PWM3
PWM4
PWM5
PWM6
=
Roll
Pitch
Yaw
상/하
제어량 방향 모터속도
Mixer
자세제어
THROTTLE
ROLL
PITCH
YAW
ROLL측정값
PITCH측정값
YAW측정값
ROLL 오차값
PITCH 오차값
YAW 오차값
PID 제어기
PID 제어기
PID 제어기
ROLL 제어량
PITCH 제어량
YAW 제어량
Mixer
PWM1
PWM2
PWM3
PWM4
PWM5
PWM6
목표치 입력 제어기 출력
computeRC( )
annexCode( ) computeIMU( )
pidMultiWii( )
mixTable( ) writeMotors( )
자세제어
 Feedback 제어
Roll
Pitch
Yaw
상/하
모터속도 빠르게
모터속도 느리게
자세측정
-+
오차
제어기
목표값

Contenu connexe

Tendances

강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요chcbaram
 
Smart rover 통신 분석
Smart rover 통신 분석Smart rover 통신 분석
Smart rover 통신 분석Jang Suk Jung
 
라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남Jae Sang Lee
 
강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍chcbaram
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계chcbaram
 
강좌 03 개발환경 구축
강좌 03 개발환경 구축강좌 03 개발환경 구축
강좌 03 개발환경 구축chcbaram
 
강좌 개요
강좌 개요강좌 개요
강좌 개요chcbaram
 
OROCABOY3 제작기
OROCABOY3 제작기OROCABOY3 제작기
OROCABOY3 제작기chcbaram
 
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신WooSangHwang
 
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌종인 전
 
망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17종인 전
 
(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드종인 전
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324종인 전
 
가상머신 환경에서 리눅스 및 큐브리드 설치 가이드 20150714
가상머신 환경에서 리눅스 및 큐브리드 설치 가이드 20150714가상머신 환경에서 리눅스 및 큐브리드 설치 가이드 20150714
가상머신 환경에서 리눅스 및 큐브리드 설치 가이드 20150714경오 이
 
CentOS 5.3에 Cubrid 설치 방법
CentOS 5.3에 Cubrid 설치 방법CentOS 5.3에 Cubrid 설치 방법
CentOS 5.3에 Cubrid 설치 방법phpkorea
 
망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6종인 전
 
사물인터넷 노트4_라즈베리파이기본
사물인터넷 노트4_라즈베리파이기본사물인터넷 노트4_라즈베리파이기본
사물인터넷 노트4_라즈베리파이기본Dong Hwa Jeong
 
MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치ymtech
 
Ubuntu Host AP Setting
Ubuntu Host AP SettingUbuntu Host AP Setting
Ubuntu Host AP Settingymtech
 
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안GangSeok Lee
 

Tendances (20)

강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요
 
Smart rover 통신 분석
Smart rover 통신 분석Smart rover 통신 분석
Smart rover 통신 분석
 
라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남
 
강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계
 
강좌 03 개발환경 구축
강좌 03 개발환경 구축강좌 03 개발환경 구축
강좌 03 개발환경 구축
 
강좌 개요
강좌 개요강좌 개요
강좌 개요
 
OROCABOY3 제작기
OROCABOY3 제작기OROCABOY3 제작기
OROCABOY3 제작기
 
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
 
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
 
망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17
 
(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324
 
가상머신 환경에서 리눅스 및 큐브리드 설치 가이드 20150714
가상머신 환경에서 리눅스 및 큐브리드 설치 가이드 20150714가상머신 환경에서 리눅스 및 큐브리드 설치 가이드 20150714
가상머신 환경에서 리눅스 및 큐브리드 설치 가이드 20150714
 
CentOS 5.3에 Cubrid 설치 방법
CentOS 5.3에 Cubrid 설치 방법CentOS 5.3에 Cubrid 설치 방법
CentOS 5.3에 Cubrid 설치 방법
 
망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6
 
사물인터넷 노트4_라즈베리파이기본
사물인터넷 노트4_라즈베리파이기본사물인터넷 노트4_라즈베리파이기본
사물인터넷 노트4_라즈베리파이기본
 
MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치
 
Ubuntu Host AP Setting
Ubuntu Host AP SettingUbuntu Host AP Setting
Ubuntu Host AP Setting
 
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
 

En vedette

[E3]deview 2012 스마트폰 내장 센서를 이용한 체감형 게임제작
[E3]deview 2012 스마트폰 내장 센서를 이용한 체감형 게임제작[E3]deview 2012 스마트폰 내장 센서를 이용한 체감형 게임제작
[E3]deview 2012 스마트폰 내장 센서를 이용한 체감형 게임제작NAVER D2
 
안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법chon2010
 
Android ndk jni 설치및 연동
Android ndk jni 설치및 연동Android ndk jni 설치및 연동
Android ndk jni 설치및 연동Sangon Lee
 
Qt on Real Time Operating Systems
Qt on Real Time Operating SystemsQt on Real Time Operating Systems
Qt on Real Time Operating Systemsaccount inactive
 
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310JongEun Lee
 
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminarCho Daniel
 
Native vs. Web vs. Hybrid: Mobile Development Choices
Native vs. Web vs. Hybrid: Mobile Development ChoicesNative vs. Web vs. Hybrid: Mobile Development Choices
Native vs. Web vs. Hybrid: Mobile Development ChoicesJason Grigsby
 
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
[한국의SNS 컨퍼런스]N스크린 기반 스마트UXBosnag-Kim
 
S블로거가 본 스마트tv
S블로거가 본 스마트tvS블로거가 본 스마트tv
S블로거가 본 스마트tvTaehyun Brad Kim
 
제안서N School(영상교육영상회의)[1]
제안서N School(영상교육영상회의)[1]제안서N School(영상교육영상회의)[1]
제안서N School(영상교육영상회의)[1]kisu kim
 
HTML5를 활용한 하이브리드 앱개발하기
HTML5를 활용한 하이브리드 앱개발하기HTML5를 활용한 하이브리드 앱개발하기
HTML5를 활용한 하이브리드 앱개발하기정현 황
 
RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.Devgear
 
비즈니스 Application 솔루션 구조 기술 진화 모델 ②
비즈니스 Application 솔루션 구조 기술 진화 모델 ②비즈니스 Application 솔루션 구조 기술 진화 모델 ②
비즈니스 Application 솔루션 구조 기술 진화 모델 ②Yongkyoo Park
 
하이브리드앱 아키텍쳐 및 개발 사례
하이브리드앱 아키텍쳐 및 개발 사례하이브리드앱 아키텍쳐 및 개발 사례
하이브리드앱 아키텍쳐 및 개발 사례동수 장
 
리눅스 보안 모듈을 이용한 안드로이드 장치 제어
리눅스 보안 모듈을 이용한 안드로이드 장치 제어리눅스 보안 모듈을 이용한 안드로이드 장치 제어
리눅스 보안 모듈을 이용한 안드로이드 장치 제어Jea-Min Lim 임재민
 
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!Seho Yoon
 

En vedette (20)

FreeRTOS
FreeRTOSFreeRTOS
FreeRTOS
 
[E3]deview 2012 스마트폰 내장 센서를 이용한 체감형 게임제작
[E3]deview 2012 스마트폰 내장 센서를 이용한 체감형 게임제작[E3]deview 2012 스마트폰 내장 센서를 이용한 체감형 게임제작
[E3]deview 2012 스마트폰 내장 센서를 이용한 체감형 게임제작
 
안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법
 
Android ndk jni 설치및 연동
Android ndk jni 설치및 연동Android ndk jni 설치및 연동
Android ndk jni 설치및 연동
 
Qt on Real Time Operating Systems
Qt on Real Time Operating SystemsQt on Real Time Operating Systems
Qt on Real Time Operating Systems
 
Ffmpeg for android
Ffmpeg for androidFfmpeg for android
Ffmpeg for android
 
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310
 
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminar
 
Native vs. Web vs. Hybrid: Mobile Development Choices
Native vs. Web vs. Hybrid: Mobile Development ChoicesNative vs. Web vs. Hybrid: Mobile Development Choices
Native vs. Web vs. Hybrid: Mobile Development Choices
 
영화정보기술
영화정보기술영화정보기술
영화정보기술
 
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
 
S블로거가 본 스마트tv
S블로거가 본 스마트tvS블로거가 본 스마트tv
S블로거가 본 스마트tv
 
제안서N School(영상교육영상회의)[1]
제안서N School(영상교육영상회의)[1]제안서N School(영상교육영상회의)[1]
제안서N School(영상교육영상회의)[1]
 
HTML5를 활용한 하이브리드 앱개발하기
HTML5를 활용한 하이브리드 앱개발하기HTML5를 활용한 하이브리드 앱개발하기
HTML5를 활용한 하이브리드 앱개발하기
 
RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.
 
비즈니스 Application 솔루션 구조 기술 진화 모델 ②
비즈니스 Application 솔루션 구조 기술 진화 모델 ②비즈니스 Application 솔루션 구조 기술 진화 모델 ②
비즈니스 Application 솔루션 구조 기술 진화 모델 ②
 
하이브리드앱 아키텍쳐 및 개발 사례
하이브리드앱 아키텍쳐 및 개발 사례하이브리드앱 아키텍쳐 및 개발 사례
하이브리드앱 아키텍쳐 및 개발 사례
 
리눅스 보안 모듈을 이용한 안드로이드 장치 제어
리눅스 보안 모듈을 이용한 안드로이드 장치 제어리눅스 보안 모듈을 이용한 안드로이드 장치 제어
리눅스 보안 모듈을 이용한 안드로이드 장치 제어
 
Smart TV UX
Smart TV UXSmart TV UX
Smart TV UX
 
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
 

Similaire à SkyRover Firmware

I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회
I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회
I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회SeungWook Choi
 
I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회
I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회
I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회SeungWook Choi
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
Python on Android
Python on AndroidPython on Android
Python on Android용 최
 
드론 분야의 기술 트렌드 및 발전 방향 - 김태호 실장
드론 분야의 기술 트렌드 및 발전 방향 - 김태호 실장드론 분야의 기술 트렌드 및 발전 방향 - 김태호 실장
드론 분야의 기술 트렌드 및 발전 방향 - 김태호 실장brainerymakers
 
[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것NAVER Engineering
 
Smart Camera UAV를 이용한 오픈소스 기반의 자동촬용 및 UAV image 처리시스템 개발
Smart Camera UAV를 이용한 오픈소스 기반의 자동촬용 및 UAV image 처리시스템 개발Smart Camera UAV를 이용한 오픈소스 기반의 자동촬용 및 UAV image 처리시스템 개발
Smart Camera UAV를 이용한 오픈소스 기반의 자동촬용 및 UAV image 처리시스템 개발park jinwoo
 
[FOSS4G Korea 2016] Smart Camera UAV를 이용한 오픈소스 기반의 자동촬영 및 UAV Image 처리시스템 개발
[FOSS4G Korea 2016]  Smart Camera UAV를 이용한 오픈소스 기반의 자동촬영 및 UAV Image 처리시스템 개발[FOSS4G Korea 2016]  Smart Camera UAV를 이용한 오픈소스 기반의 자동촬영 및 UAV Image 처리시스템 개발
[FOSS4G Korea 2016] Smart Camera UAV를 이용한 오픈소스 기반의 자동촬영 및 UAV Image 처리시스템 개발Jinwoo Park
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02정출 김
 
G rover 프로젝트
G rover 프로젝트G rover 프로젝트
G rover 프로젝트박 형일
 
드론 관제 기술동향
드론 관제 기술동향 드론 관제 기술동향
드론 관제 기술동향 SeungWook Choi
 
웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화NAVER D2
 
어려웠다, WebRTC를 활용한 360º 영상통화 트러블 슈팅
어려웠다, WebRTC를 활용한 360º 영상통화 트러블 슈팅어려웠다, WebRTC를 활용한 360º 영상통화 트러블 슈팅
어려웠다, WebRTC를 활용한 360º 영상통화 트러블 슈팅ksdc2019
 
텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축I Goo Lee
 
오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개SungTae Moon
 
Nutch Homepage Search Engine
Nutch Homepage Search EngineNutch Homepage Search Engine
Nutch Homepage Search EngineKay Kim
 
Vr cctv 제작 ver1
Vr cctv 제작 ver1Vr cctv 제작 ver1
Vr cctv 제작 ver1병재 김
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기Jaeseung Ha
 
숭실대 프로젝트 아나키 워크샵 part1
숭실대 프로젝트 아나키 워크샵 part1숭실대 프로젝트 아나키 워크샵 part1
숭실대 프로젝트 아나키 워크샵 part1Alex Kang
 

Similaire à SkyRover Firmware (20)

I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회
I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회
I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회
 
I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회
I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회
I pac 특허기술전략연구회-드론_화인특허_발표자료_최승욱_2회
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
Python on Android
Python on AndroidPython on Android
Python on Android
 
드론 분야의 기술 트렌드 및 발전 방향 - 김태호 실장
드론 분야의 기술 트렌드 및 발전 방향 - 김태호 실장드론 분야의 기술 트렌드 및 발전 방향 - 김태호 실장
드론 분야의 기술 트렌드 및 발전 방향 - 김태호 실장
 
[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것
 
Smart Camera UAV를 이용한 오픈소스 기반의 자동촬용 및 UAV image 처리시스템 개발
Smart Camera UAV를 이용한 오픈소스 기반의 자동촬용 및 UAV image 처리시스템 개발Smart Camera UAV를 이용한 오픈소스 기반의 자동촬용 및 UAV image 처리시스템 개발
Smart Camera UAV를 이용한 오픈소스 기반의 자동촬용 및 UAV image 처리시스템 개발
 
[FOSS4G Korea 2016] Smart Camera UAV를 이용한 오픈소스 기반의 자동촬영 및 UAV Image 처리시스템 개발
[FOSS4G Korea 2016]  Smart Camera UAV를 이용한 오픈소스 기반의 자동촬영 및 UAV Image 처리시스템 개발[FOSS4G Korea 2016]  Smart Camera UAV를 이용한 오픈소스 기반의 자동촬영 및 UAV Image 처리시스템 개발
[FOSS4G Korea 2016] Smart Camera UAV를 이용한 오픈소스 기반의 자동촬영 및 UAV Image 처리시스템 개발
 
Designing Apps for Motorla Xoom Tablet
Designing Apps for Motorla Xoom TabletDesigning Apps for Motorla Xoom Tablet
Designing Apps for Motorla Xoom Tablet
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02
 
G rover 프로젝트
G rover 프로젝트G rover 프로젝트
G rover 프로젝트
 
드론 관제 기술동향
드론 관제 기술동향 드론 관제 기술동향
드론 관제 기술동향
 
웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화
 
어려웠다, WebRTC를 활용한 360º 영상통화 트러블 슈팅
어려웠다, WebRTC를 활용한 360º 영상통화 트러블 슈팅어려웠다, WebRTC를 활용한 360º 영상통화 트러블 슈팅
어려웠다, WebRTC를 활용한 360º 영상통화 트러블 슈팅
 
텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축
 
오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개
 
Nutch Homepage Search Engine
Nutch Homepage Search EngineNutch Homepage Search Engine
Nutch Homepage Search Engine
 
Vr cctv 제작 ver1
Vr cctv 제작 ver1Vr cctv 제작 ver1
Vr cctv 제작 ver1
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
숭실대 프로젝트 아나키 워크샵 part1
숭실대 프로젝트 아나키 워크샵 part1숭실대 프로젝트 아나키 워크샵 part1
숭실대 프로젝트 아나키 워크샵 part1
 

SkyRover Firmware

  • 1. SkyRover 펌웨어 및 자세제어 조한철(Baram) 2014. 12. 20.
  • 2. 목차  펌웨어 History  펌웨어 구조  자세 및 모터 방향  비행모드  자세제어
  • 3. 펌웨어 History – Flexbot Multiwii 2.3 Arduino AVR Flexbot+ FlexBot 통신 I/F <Flexbot App><History>  Flexbot 펌웨어 • AVR을 사용한 Arduino개발환경을 사용하는 Multiwii 2.3기반으로 Flexbot App으로 조종을 위 한 통신 I/F 추가함 • AVR에 Arduino기반으로 구현되어 있어서 ARM용으로 포팅하기에는 어려움
  • 4. 펌웨어 History – SkyRover Nano Multiwii 2.3 Arduino AVR SkyRover Nano + Flexbot 통신 I/F Afroflight32 GCC STM32F103 부트로더 추가 + + FreeRTOS 적용 USB 통신 + LCD Lib (u8glib) +  SkyRover Nano 펌웨어 • Multiwii를 ARM용으로 포팅한 Afroflight32 코드를 기반으로 Flexbot app을 사용하기 위한 통 신 I/F를 추가하여 성능은 높이면서 기존의 플랫폼을 그대로 사용함
  • 5. 펌웨어 History – 개발과정  [나노콥터] 펌웨어 포팅 계획 : http://cafe.naver.com/openrt/4371  [나노콥터] AfroFlight32 펌웨어를 스마트로봇 보드로 시험 : http://cafe.naver.com/openrt/4401  [나노콥터] PWM 동작 시험 : http://cafe.naver.com/openrt/4443  [나노콥터] 센서 방향 및 모터 위치 : http://cafe.naver.com/openrt/4467  [나노콥터] 펌웨어 시험용 기체 만들기 : http://cafe.naver.com/openrt/4472  [나노콥터] 펌웨어 개발환경 및 부트로더 : http://cafe.naver.com/openrt/4483  [나노콥터] HexAirBot 통신 인터페이스 추가 : http://cafe.naver.com/openrt/4490  [나노콥터] 모터 시험 : http://cafe.naver.com/openrt/4491  [나노콥터] 블루투스 통신 시험 : http://cafe.naver.com/openrt/4518  [나노콥터] 멀티위콘피그 프로그램 : http://cafe.naver.com/openrt/4605  [나노콥터] SkyRover 조립 및 구동 시험 : http://cafe.naver.com/openrt/4726  [나노콥터] Hex 콥터 변경 펌웨어 : http://cafe.naver.com/openrt/5107  SkyRover nano Hex 비행영상 : http://cafe.naver.com/openrt/5158  SkyRover 펌웨어 계획 : http://cafe.naver.com/openrt/5383  SkyRover 펌웨어에 FreeRTOS 적용 : http://cafe.naver.com/openrt/5455  SkyRover 부트로더/펌웨어 USB통신 추가 : http://cafe.naver.com/openrt/5548  SkyRover 윈도우용 GUI 다운로더(STM32LD_GUI) : http://cafe.naver.com/openrt/5943  SkyRover Nano PCB 첫 비행 : http://cafe.naver.com/openrt/6651  SkyRover Nano 최종 PCB 버전 비행 시험 : http://cafe.naver.com/openrt/6744  SkyRover Nano OLED 시험 : http://cafe.naver.com/openrt/6760  SkyRover Nano Cup(컵) 버전 시험 비행 : http://cafe.naver.com/openrt/6844
  • 6. 펌웨어 History – Open Source SkyRover Nano Multiwii Afroflight32 Flexbot FreeRTOS STM32LD u8glib  Why? • 기술 진입 장벽 낮아짐 • 플랫폼 다양화 • 정보 공유를 통한 발전 • 열린 커뮤니티 활성화
  • 7. 펌웨어 History – Open Source 구 분 설 명 링크 Mulitiwii 멀티콥터 오픈소스 https://code.google.com/p/multiwii/ Afroflight32 Mulitiwii를 STM32F103용으로 포팅한 버전 https://github.com/multiwii/baseflight HexAirBot Mulitiwii에 Flexbot app을 이용한 제어가 가능하도록 변경함 https://github.com/HexAirbot FreeRTOS 멀티태스킹을 위한 리얼타임 OS http://www.freertos.org/ STM32Cube ST사에서 STM32시리즈 활용을 위한 펌웨어 라이브러리 http://www.st.com/stm32cube-pr stm32ld STM32의 시리얼 부트로더 프로토콜을 사용한 Flash 다운로 드 https://github.com/jsnyder/stm32ld https://github.com/chcbaram/stm32ld https://github.com/chcbaram/stm32ld_gu i u8glib 그래픽 LCD 라이브러리 https://code.google.com/p/u8glib/  Open Source List
  • 8. 펌웨어 구조 펌웨어 부트로더 0x08000000 0x08003000 설정 저장 12KB 114KB 2KB 0x0801F800 0x08020000  Memory 구조 • 부트로더는 전원 On/Reset시 처음 실행됨 • STM32F103은 EEPROM이 없기때문에 마지막 2KB영역을 저장용 메모리로 사용 • 펌웨어 다운로드시 설정값은 유지됨
  • 9. 펌웨어 구조  부트로더 • 기능  통신으로 펌웨어를 MCU의 플래시 메모리에 Write하고 펌웨어를 실행 • 통신 프로토콜  STM32의 내장 부트로더 통신 프로토콜 • 다운로드 Tool  오픈소스인 stm32ld를 수정하여 사용하고 윈도우용으로 포팅(stm32ld_gui) • 통신 포트  Uart1 시리얼 포트  USB의 Virtual 시리얼 포트 • 소스코드  https://github.com/oroca/SkyRover_Nano_Boot
  • 10. 펌웨어 구조  펌웨어 Thread • FreeRTOS를 적용하여 총 3개의 Thread를 구동함 • 각 스레드는 독립적으로 동시에 실행되기에 멀티콥터 기능을 수행하면서 LCD표시나 메뉴를 통 한 모니터링등이 가능함 • 멀티콥터 제어 Loop는 RTOS가 고려되지 않고 작성되었기 때문에 Thread의 우선순위를 동일 하게 설정함 • 향후 RTOS를 고려하여 멀티콥터 제어 Loop를 다시 작성 필요(RTOS의 효율적 사용) thread_mw() thread_menu() thread_lcd() • 멀티콥터 제어 Loop • 통신/모터/센서 관리 • USB통신을 이용한 메뉴 기 능 • 블루투스 설정 • 센서 모니터링 • 기능 설정 • U8glib를 사용한 LCD 표시
  • 11. 펌웨어 구조  멀티콥터 제어 Loop rcReady = hexairbotFrameComplete(); computeRC(); • 블루투스로 조종 데이터가 수신되었는지 검사 • 수신된 조종값(롤,피치,요,스로틀,AUX1,AUX2,AUX3,AUX4)을 rcData[] 배 열에 저장 50Hz computeIMU(); • 가속도/자이로/지자계 센서로 부터 자세값 계산 annexCode(); • 수신된 조종값 rcData[]의 범위는 1000~2000이며(중립은 1500), 제어범위 값 rcCommand[]에 0~500 값으로 변환 pid_controller(); mixTable(); writeServos(); writeMotors(); • rcCommnad[]값을 기준으로 PID제어에 따른 제어량값 계산 • 기체 종류에 따라 PID제어를 통해 나온 제어량은 모터 PWM으로 변환 • PWM값에 따른 모터 구동 280Hz
  • 12. 자세 - Roll  Roll • 멀티콥터가 좌/우로 회전하는 방향 (-)방 향 (+)방 향 <뒤에서 본모 습> 0도 -90 도 +90 도 +180 도
  • 13. 자세 - Pitch  Pitch • 멀티콥터가 상/하로 회전하는 방향 (-)방 향 (+)방 향 <옆에서 본모 습> 0도 -90 도 +90 도
  • 14. 자세 - Yaw  Yaw • 멀티콥터의 수평 움직임으로 우측으로 회전시 +방향만 있음 • 지자계 센서가 활성화 되어 있으면 북쪽이 0도이고 그렇지 않은경우 가속도 센서의 X축방향이 0도 0도 <위에서 본모 습> 북 동 남 서 360도
  • 15. 모터 방향 - Hex  Hex 구성 • 6개의 모터로 구성되며 모터의 방향은 기체의 타입에 따라 결정됨 • SkyRover Nano는 Multiwii에서 사용되는 모터 방향이 사용됨 <Hex 모터 구 <SkyRover Nano>
  • 16. 모터 방향 - QuadX  QuadX 구성 • 4개의 모터가 크로스 형태로 구성됨 • 대표적인 쿼드콥터 형태 <Hex 모터 구 <SkyRover Nano>
  • 17. 비행모드 Mode 자이로 센서 가속도 센서 기압 센서 지자계 센서 Acro/Gyro ● Angle/Stable ● ● Horizon ● ● HeadFree ● ● ● Altitude Hold ● ● ●  비행 모드별 사용 센서
  • 18. 비행모드 – Acro/Gyro <조종기> <멀티콥터> <조종기> <멀티콥터>  Roll/Pitch/Yaw 축에 자이로 센서로만 자세제어
  • 19. 비행모드 – Angle/Stable <조종기> <멀티콥터> <조종기> <멀티콥터>  SkyRover Nano의 비행 모드  Roll/Pitch는 가속도/자이로에서 구해진 각도값으로 자세제어  Yaw는 자이로 센서값으로만 제어
  • 21. 자세제어  멀티콥터 움직임 • Roll/Pitch/Yaw/상하 움직임의 전체 합 방향으로 이동 • 각 이동방향에 대해 제어가 되면 원하는 방향으로 기체 이동이 가 능 + + + <Roll> <Pitch> <Yaw> <상/하>
  • 22. 자세제어  6개의 모터 구동으로 Roll/Pitch/Yaw/상하 이동 Roll Pitch Yaw 상/하 모터속도 빠르게 모터속도 느리게
  • 23. 자세제어  멀티콥터의 움직임에 대한 모터 영향 (-)방 향 (+)방 향 모터속 도 느리 게 모터속 도 빠르 게 모터속 도 빠르 게 모터속 도 느리 게<Roll 움직임>
  • 24. 자세제어 모터 Roll Pitch Yaw 상/하 (+) (-) (+) (-) (+) (-) (+) (-) FRONT_L + - - + - + + - REAR_L + - + - + - + - FRONT_R - + - + - + + - REAR_R - + + - + - + - FRONT 0 0 - + + - + - REAR 0 0 + - - + + -  움직임 방향 vs 모터속도 방향
  • 25. 자세제어  모터 제어속도 구성요소 PWM1 = FRONT_L = 제어량xRoll방향 + 제어량xPitch방향 + 제어량xYaw방향 + 제어량x상/하방향 Roll, Pitch, Yaw, 상/하 PWM1 PWM2 PWM3 PWM4 PWM5 PWM6 = Roll Pitch Yaw 상/하 제어량 방향 모터속도 Mixer
  • 26. 자세제어 THROTTLE ROLL PITCH YAW ROLL측정값 PITCH측정값 YAW측정값 ROLL 오차값 PITCH 오차값 YAW 오차값 PID 제어기 PID 제어기 PID 제어기 ROLL 제어량 PITCH 제어량 YAW 제어량 Mixer PWM1 PWM2 PWM3 PWM4 PWM5 PWM6 목표치 입력 제어기 출력 computeRC( ) annexCode( ) computeIMU( ) pidMultiWii( ) mixTable( ) writeMotors( )
  • 27. 자세제어  Feedback 제어 Roll Pitch Yaw 상/하 모터속도 빠르게 모터속도 느리게 자세측정 -+ 오차 제어기 목표값