Post on 15-Jul-2015
Sky Rover Nano
마을이야기 - 1. 우리는왜 GCS 를만들었는가...
쿼드콥터기체제작정보를공유하는이는많다…그라운드스테이션은누가 ?
GCS(Ground Controller Station) 란 ?지상 또는 해상의 공간에서 무인차량을 제어 및 관측 할 수 있도록 지원하는 제어 솔류션
- Wiki GCS 중 ..
1. 제어부(Controller)
멀티제어 RC 카 중
o USB 및 wireless 무선 통신 컨
트롤 소스를 응용 SkyRover
Nano 시리얼 통신 제어부 구현
2. 관측부(Station)
멀티제어 RC 카 중
o WebIOPi 기반으로 TCP/IP 통신을 이용한 멀티디바이스 형태로
관측센터를 기초 디자인 및 구현 결정
마을이야기 - 1. 우리는왜 GCS 를만들었는가...
마을이야기 - 2. 시작은이렇게 – 스마트폰제어테스트
1. 골드베이스가드디어쿼드콥터를갖게 되었다.
2. 아이폰(안드로이드폰)을가지고스카이나노를조종하였다.
데이터 전송 요청
• 통신포트 : 블루투스
• 앱 기능 :
- 통신 연결
- 모터 회전- 센서를 이용한 스카이나노 제어
데이터 응답데이터 응답
마을이야기 - 2. 시작은이렇게 – 멀티 위 콘피그테스트
1. Multi-Wii Config 에연결.
데이터 전송 요청
데이터 응답
• 통신포트 : uart
(nano uart u2s(usb to serial) PC USBN)
• Multi-Wii Config : 통신 연결- 모터 회전- 센서들의 현재 값 모니터링- 센서들의 환경설정
마을이야기 - 2. 시작은이렇게 – 부트로더및펌웨어업로드테스트
1. 부트로더와 펌웨어를 올려보았다.
• 부트로더 통신포트 : uart 또는 usb(PC USB usb to serial nano serial )
• 펌웨어 통신포트 : uart(PC USB usb to serial nano serial )
STM32 GUI Upload APP
마을이야기 - 2. 시작은이렇게 – 모니터링테스트
1. MultiWii Config 는 설정/개발용프로그램.
2. 사용자가모니터링하는 프로그램은없을까 ?
통신연결, 모터제어
모터속도 ???센서 값 ???
마을이야기 - 3. 구글링선생님께질문하다
1. Multi-GCS
① HUD ( Head-Up Display )
② Live Moving Map
③ Multi Wii Config
MavLink, OpenPilot
④ Video Player
⑤ Web-Server 독일 오픈 프로젝트 팀으로 추정됨
1. 이제 나노와연결 해 보자
고려사항 비고
기능 적인 측면 Wonderful
성능적인 측면(speed, freezing) Overclock 후 사용할만 함
Source 해석가능 여부 C, make 로 가능성이 있음
통신 방식 블루투스가 없다
① Multi GCS의 통신 부분만 수정할 것인가?
② 처음부터 개발할 것인가?
마을이야기 - 3. 구글링선생님께질문하다 – 시험에들다
2. Bluetooth 통신의부재 ( 택1 )
시험의길
• 제어부개발• 통신부(블투) 개발• Cross Device 지원
• Multi GCS 분석• 통신부개발
라즈베리파이
Wifi Network
localhost
blue.py
receive
sendudp
webiopi
Joystick.py
PC phone
마을이야기 - 3. 구글링선생님께질문하다 – 無名프로그램설계
BLE Sensor DATA
BLE Control DATA
USB , wirelessJoystick
1. 무명프로그램의 구조
마을이야기 - 3. 구글링선생님께질문하다 – MSP 분석
2. MSP (MultiWii Serial Protocol) 분석
1) Data 구조① Header : “$M<“ + length② Data : Data Structure③ Checksum
2) [제어명령] rpi nano 조이스틱 컨트롤① Joystick 입력② Rpi nano 로 pitch, roll, yaw, throttle, aux 값 적용 요청
• ( MSP_SET_RAW_RC_TINY 로 간단히 nano를 제어할 수 있다. ) ③ Nano rpi 적용 완료 응답
3) [Data명령] nano rpi 센서 데이터① Rpi nano 센서 데이터 요청② nano rpi 데이터 응답
마을이야기 - 4. 새로운것을접할때마나만나는불청객
1. 산딸기 마을 강좌에 bluez package 사용법이 있었다.
① rfcomm device pairing 시오류발생
② Bluepy Opensource
o 테스트 프로그램을 이용한 Pairing 구현
발생원인 :
o Linux Kernel Version 문제리눅스 커널 변경o Sky Nano BLE rfcomm protocol 미지원 문제
Bluepy
https://github.com/IanHarvey/bluepy
마을이야기 - 4. 새로운것을접할때마나만나는불청객
2. rpi-mw ( 라즈베리파이 MSP 통신 example )
① Aldo Vargas
② MSP 센서 데이터 수신
③ https://github.com/alduxvm/rpi-mw
④ Python
⑤ BLE가 아닌 Serial 통신을 이용
⑥ 개발자가 라즈베리파이, osx로 테스트 한 소스
⑦ struct.pack 함수가 다르게 동작하는 것인지, osx는 동작하는데 rpi에서 동작 안함
마을이야기 - 4. 새로운것을접할때마나만나는불청객
3. rpi-mw ( [제어명령] rpi nano 조이스틱 컨트롤 )
1) Serial 통신 bluepy 적용
2) Motor run 이 안된다.
① 어디까지 통신이 되고 있는지 알기 위해 firmware source를 분석
② 분석에서도 그렇다할 진전이 없어 firmware에 print문은 남발하여 디버깅( usb port 사용 )
③ Data의 Header부 “$M<“는 잘 들어옴.
④ Length가 맞지 않음
⑤ uint8_t (1byte), uint16_t(2byte) 의 type
마을이야기 - 4. 새로운것을접할때마나만나는불청객
4. rpi-mw ([Data명령] nano rpi 센서 데이터 )
1) 센서 데이터 수신2) Serial 통신 bluepy 적용3) Data 수신시 Error ( Notify ) 발생.
① rpi에서 수신 Data Print 해보니 Data가 잘려서 수신됨
Nano 송신
Rpi 수신 1.
Rpi 수신 2.
Rpi 수신 3.
② Library를 수정(Notify 무시, Notify 발생 Data 는 합침)③ 수신 성공
$ M < 0 6 1 2 3 4 1
$ M < 0
6 1 2
3 4 1
Notify
Notify
Notify
마을이야기 - 4. 새로운것을접할때마나만나는불청객
5. 모든 Data를 받아보자.
① MSP는 Data의 종류별로 명령어가 다름 (MSP_RC, MSP_MOTOR)• https://github.com/alduxvm/rpi-mw/blob/master/rpi-mw.py
② 데이터를 모두 받고 싶다.• 5-6 개의 명령어 송신• 1개의 명령어 실행시 0.02sec 대기• update 주기가 길어짐
③ Delay를 0.01로 줄이면 ?• Data 수신 에러 발생
④ Firmware에 allDataSend() 함수 추가• Data Size가 늘어나지만, 그에 따른 문제는 없음
마을이야기 - 5. 디자인은언제?
1. 웹 모니터링 페이지