4. 4 제3회 오픈 로보틱스 세미나
1. 개발환경 overview 1) 개발환경 review (1)
Development Environment Elements (v0.0.5)
• JDK v1.6.0_45 (included)
• Eclipse CDT + ADT (kepler SR2)
• Eclipse plug-in
• GNU tools for ARMEmbedded Processors (tool chain) v4.9
• Build Tools (make, rm, echo)
• MultiWii Config v2.4
• stm32ld command line & GUI Tool
• OpenCM IDE v1.0.2
• arduino v1.6.4 (+skyrover lib.)
• zadig v2.1.2
• Pre-built banaries
Phone Device Requirements
• Android
Bluetooth LE (4.3 OS later)
OTG enabled device
• iPhone (SkyRover Nano 2.0 only)
iPhone 4s later & iOS 7.1 later
Connect with Bluetooth LE
5. 5 제3회 오픈 로보틱스 세미나
1. 개발환경 overview 1) 개발환경 review (2)
Why use eclipse?
• 펌웨어 개발과 android 앱 개발 공통 tool
• 범용 툴로서 많은 개발자 사용 (무료)
• 다양한 OS 지원과 plug-in
• CVS, SVN, Git 등 SCM 연결 및 협업에 적합
• 비설치 형태. 배포 편리
• source trace, code suggetion
Firmware
Development
Android App.
Development
8. 8 제3회 오픈 로보틱스 세미나
1. 개발환경 overview 2) 개발환경 update details
Eclipse IDE & plug-in
GNU Tools for ARM
Embedded Processors
MultiWii Config
Zadig
Update
Add
• Eclipse IDE
• ADT plug-in
• GNU ARM plug-in
• 설치 경고, 시스템 재부팅 없이 crazyradio 드
라이버 설치를 도와주는 툴 (Windows 8 불필요)
• 참고 URL :
https://wiki.bitcraze.io/doc:crazyradio:install_win
dows_zadig
• 4.8 - 2014Q2 → 4.9 – 2015Q1
• bug fixed, optimized
• GCC 4.9 feature. Cortex-m7 support
• 2.3 → 2.4
• GPS navigate throught multiple WPs
• MSP message added
- ACC TRIM, Cell voltage, GPS nav
OpenOCD
• ST-LINK V2 장비를 이용한 펌웨어 다운로드 및
펌웨어 디버깅
9. 제3회 오픈 로보틱스 세미나9
02
SkyRover Nano 1.0과 2.0 App 비교
1) App UI 및 기능
2) 기능 추가 (안)
10. 10 제3회 오픈 로보틱스 세미나
2. SkyRover Nano 비교 1) App UI 및 기능 (1)
설정
• LOCK/UNLOCK 기능 없음
• 설정 진입시 기체와 연결 끊어짐 주의
연결
11. 11 제3회 오픈 로보틱스 세미나
2. SkyRover Nano 비교 1) App UI 및 기능 (2)
12. 12 제3회 오픈 로보틱스 세미나
2. SkyRover Nano 비교 1) App UI 및 기능 (3)
SkyRover Nano 1.0 App 설정 화면
13. 13 제3회 오픈 로보틱스 세미나
2. SkyRover Nano 비교 1) App UI 및 기능 (4)
Normal Mode
14. 14 제3회 오픈 로보틱스 세미나
2. SkyRover Nano 비교 1) App UI 및 기능 (5)
조종 이상시
check 해제
checked not checked
15. 15 제3회 오픈 로보틱스 세미나
2. SkyRover Nano 비교 2) 기능 추가 (안)
MultiWii Config 의 PID 설정 기능을 App에 추가
16. 16 제3회 오픈 로보틱스 세미나
2. SkyRover Nano 비교 2) 기능 추가 (안)
MultiWii Config 의 PID 설정 기능을 App에 추가
17. 17 제3회 오픈 로보틱스 세미나
2. SkyRover Nano 비교 2) 기능 추가 (안)
MultiWii Config 의 PID 설정 기능을 App에 추가
18. 제3회 오픈 로보틱스 세미나18
03
App 통신 프로토콜 분석
1) 프로토콜 분석
19. 제3회 오픈 로보틱스 세미나19
3. App통신 프로토콜 1) 프로토콜 분석 (1)
SkyRover Nano 1.0 프로토콜 형식
MSP (Multiwii Serial Protocol)
Multiwii 에서 사용되는 시리얼 통신 프로토콜
• App → SkyRover Nano 1.0 전송 packet format
preamble direction size command data CRC
0 1 2 3 4 5 + DataSize 5+DataSize+1
‘$’ ‘M’ ‘<‘ (Data Size) MAP Command Max 64bytes checksum
• SkyRover Nano 1.0 → App 전송 packet format
preamble direction size command data CRC
0 1 2 3 4 5 + DataSize 5+DataSize+1
‘$’ ‘M’ ‘!‘ or ‘>’ (Data Size) MAP Command Max 64bytes checksum
20. 제3회 오픈 로보틱스 세미나20
3. App통신 프로토콜 1) 프로토콜 분석 (2)
SkyRover Nano 1.0 주요 로토콜
명령어 기능
MSP_SET_RAW_RC_TINY
기체 움직임 조정
(Roll/Yaw/Throttle 및 AUX 정보)
MSP_ARM 기체 동작 시작
MSP_DISARM 기체 동작 종료
MSP_TRIM_UP 기체 수평 조정
MSP_TRIM_DOWN 기체 수평 조정
MSP_TRIM_LEFT 기체 수평 조정
MSP_TRIM_RIGHT 기체 수평 조정
Index
0 0 ~ 250 Roll 값
1 0 ~ 250 Pitch 값
2 0 ~ 250 Yaw 값
3 0 ~ 250 Throttle 값
4 0 ~ 255 Aux 값
21. 제3회 오픈 로보틱스 세미나21
3. App통신 프로토콜 1) 프로토콜 분석 (3)
SkyRover Nano 2.0 프로토콜 형식
CRTP (Crazy RealTime Protocol)
crazyfile 에서 사용되는 통신 프로토콜
• CRTP layer
Application/ports • 메시지를 송수신 하는 하위 시스템
CRTP packets handling • 기체와 조종기 내에서 하위 시스템으로 패킷 전달
CRTP Link
• 기체와 조종기 사이의 패킷 전송 책임
• 패킷 크기와 에러 검출 처리
• 구현된 link driver : UART, USB, radio
22. 제3회 오픈 로보틱스 세미나22
3. App통신 프로토콜 1) 프로토콜 분석 (4)
SkyRover Nano 2.0 프로토콜 형식
7 6 5 4 3 2 1 0
Poprt Link Channel
Header (1 bytes)
• Port : 해당 패킷에 관련된 기능 또는 태스크 식별
• Link : 예약
• Channel : 하위 태스크와 기능 구별
Commander (15 bytes)
Roll/pitch/yaw/thrust 제어 정보 전송시 사용되며 다음 패킷이 수신 될때 까지 유효
구분 ROLL PITCH YAW THRUST
길이 (bytes) 4 4 4 3
24. 24 제3회 오픈 로보틱스 세미나
1) App 컴파일 (android)4. 컴파일/디버깅/배포
Build
• Java Perspective 사용
• Git에서 다운로드한 소스 컴파일이 안되는 경우 ADT 환경 설정 확인
• AVD 사용시 ‘Intel x86 Emulator Accelerator’ 설치 권장. (단말 > VirtualBox > AVD)
25. 25 제3회 오픈 로보틱스 세미나
4. 컴파일/디버깅/배포 2) App 디버깅 (android)
Debugging
• Windows OS 사용시 단말 제조사 제공 USB Driver 설치
• 단말의 환경설정에서 USB디버깅 on
26. 26 제3회 오픈 로보틱스 세미나
4. 컴파일/디버깅/배포 3) App 배포 (android)
apk 배포
• google 마켓에 등록하지 않고 내부적으로 apk 파일 자체 배포
• 빌드 완료시 ‘bin’ 디렉토리에 생성되는 ‘프로젝트명.apk’ 파일 사용
Google 마켓 배포
① 개발자 등록 (https://play.google.com/apps/publish/) 및 등록 수수료 결제 (1회 25$)
② 개발자 프로필 작성
③ ‘새 애플리케이션 추가’ 선택
④ ‘스토어 등록정보’ 기입
⑤ Apk 등록을 위해 ‘signed Application Package’ 생성 진행
27. 27 제3회 오픈 로보틱스 세미나
4. 컴파일/디버깅/배포 3) App 배포 (android)
⑥ Keystore 생성 (암호 및 keystore 파일은 보관)
28. 28 제3회 오픈 로보틱스 세미나
4. 컴파일/디버깅/배포 3) App 배포 (android)
⑦ Signed Apk 파일 생성 및 스토어 등록
⑧ 1시간여 뒤 배포 혹은 반려 확인
29. 제3회 오픈 로보틱스 세미나29
05
라즈베리파이를 활용한 휴대용 조종기 DIY
1) Controller 종류
2) Motive
3) Hardware/Software 구성
30. 30 제3회 오픈 로보틱스 세미나
5. RPI 휴대용 조종기 DIY
Android ∙ App
▷ Bluetooth (android version 4.4↑)
▷ crazyradio + OTG
OS ConnectPOC
1) Controller 종류
iOS
Windows
OSX
Linux
∙ crazyfile PC client (python based)
▷ USB cable
▷ crazyradio
31. 31 제3회 오픈 로보틱스 세미나
2) Motive5. RPI 휴대용 조종기 DIY
2000년 개봉 영화 ‘6번째날 (The 6th Day)’
이미지 참고
• NAVER movie
32. 32 제3회 오픈 로보틱스 세미나
2) Motive5. RPI 휴대용 조종기 DIY
영화 내 헬리콥터 (whispercraft) 조종기
이미지 참고
• NAVER movie, Google Image Search
• https://www.screenused.com/?sectionID=item-detail&subsectionID=index.cfm&item_id=1680
• http://www.ketzer.com/original_movie_props/6thday_helicopter_remote_control.html
33. 33 제3회 오픈 로보틱스 세미나
5. RPI 휴대용 조종기 DIY 3) 구성
Hardware
• Raspberry Pi
• crazyradio
• Portable battery (2A↑)
• Joystick
• LCD (optional)
Software
• raspbian
• crazyfile pc client
Tested Joystick
• Logitech extream 3D pro
• Saitek Cyborg evo
34. 34 제3회 오픈 로보틱스 세미나
5. RPI 휴대용 조종기 DIY 3) 구성
설치 방법
• PyQT4 not found 오류 발생시
• SD-Card image
Raspbian based. 4GB 이상 공간 필요
‘Win32DiskImager’ 등으로 ‘cfpi-xxxx.xx.img’ 파일을 SD 메모리로 저장
• Installing in an existing Raspbian sdcard command
curl https://raw.githubusercontent.com/bitcraze/bitcraze-raspberry-
pi/2015.3/bitcraze_raspberrypi.sh | sh
• PyQT4 not found 오류 발생시
$ sudo apt-get install python-qt4
• 참고 URL
https://wiki.bitcraze.io/projects:crazyflie:binaries:raspberrypi
Crazyradio
2.4 GHz radio USB dongle
125 radio channels, 2Mbps, 1Mbps and 250Kps communication data-rate, Tested up to ~80m range at 250Kbps
Crazyradio: Up to about 100 meters range in the 250 Kbit mode. (The uplink, Crazyradio, is the limiting the range)
Crazyradio PA: Up to about 1000 meters range in the 250 Kbit mode. (The downlink, Crazyflie 2.0, is the limiting the range)
Mobile device: Up to about 20 meters range. (The uplink, mobile device is limiting the range)
참고 URL : https://www.bitcraze.io/crazyradio/