라즈베리파이 와 스카이로버 나노에 만남

17
Sky Rover Nano

Upload: jae-sang-lee

Post on 15-Jul-2015

535 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: 라즈베리파이 와 스카이로버 나노에 만남

Sky Rover Nano

Page 2: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 1. 우리는왜 GCS 를만들었는가...

쿼드콥터기체제작정보를공유하는이는많다…그라운드스테이션은누가 ?

GCS(Ground Controller Station) 란 ?지상 또는 해상의 공간에서 무인차량을 제어 및 관측 할 수 있도록 지원하는 제어 솔류션

- Wiki GCS 중 ..

Page 3: 라즈베리파이 와 스카이로버 나노에 만남

1. 제어부(Controller)

멀티제어 RC 카 중

o USB 및 wireless 무선 통신 컨

트롤 소스를 응용 SkyRover

Nano 시리얼 통신 제어부 구현

2. 관측부(Station)

멀티제어 RC 카 중

o WebIOPi 기반으로 TCP/IP 통신을 이용한 멀티디바이스 형태로

관측센터를 기초 디자인 및 구현 결정

마을이야기 - 1. 우리는왜 GCS 를만들었는가...

Page 4: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 2. 시작은이렇게 – 스마트폰제어테스트

1. 골드베이스가드디어쿼드콥터를갖게 되었다.

2. 아이폰(안드로이드폰)을가지고스카이나노를조종하였다.

데이터 전송 요청

• 통신포트 : 블루투스

• 앱 기능 :

- 통신 연결

- 모터 회전- 센서를 이용한 스카이나노 제어

데이터 응답데이터 응답

Page 5: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 2. 시작은이렇게 – 멀티 위 콘피그테스트

1. Multi-Wii Config 에연결.

데이터 전송 요청

데이터 응답

• 통신포트 : uart

(nano uart u2s(usb to serial) PC USBN)

• Multi-Wii Config : 통신 연결- 모터 회전- 센서들의 현재 값 모니터링- 센서들의 환경설정

Page 6: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 2. 시작은이렇게 – 부트로더및펌웨어업로드테스트

1. 부트로더와 펌웨어를 올려보았다.

• 부트로더 통신포트 : uart 또는 usb(PC USB usb to serial nano serial )

• 펌웨어 통신포트 : uart(PC USB usb to serial nano serial )

STM32 GUI Upload APP

Page 7: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 2. 시작은이렇게 – 모니터링테스트

1. MultiWii Config 는 설정/개발용프로그램.

2. 사용자가모니터링하는 프로그램은없을까 ?

통신연결, 모터제어

모터속도 ???센서 값 ???

Page 8: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 3. 구글링선생님께질문하다

1. Multi-GCS

① HUD ( Head-Up Display )

② Live Moving Map

③ Multi Wii Config

MavLink, OpenPilot

④ Video Player

⑤ Web-Server 독일 오픈 프로젝트 팀으로 추정됨

Page 9: 라즈베리파이 와 스카이로버 나노에 만남

1. 이제 나노와연결 해 보자

고려사항 비고

기능 적인 측면 Wonderful

성능적인 측면(speed, freezing) Overclock 후 사용할만 함

Source 해석가능 여부 C, make 로 가능성이 있음

통신 방식 블루투스가 없다

① Multi GCS의 통신 부분만 수정할 것인가?

② 처음부터 개발할 것인가?

마을이야기 - 3. 구글링선생님께질문하다 – 시험에들다

2. Bluetooth 통신의부재 ( 택1 )

시험의길

• 제어부개발• 통신부(블투) 개발• Cross Device 지원

• Multi GCS 분석• 통신부개발

Page 10: 라즈베리파이 와 스카이로버 나노에 만남

라즈베리파이

Wifi Network

localhost

blue.py

receive

sendudp

webiopi

Joystick.py

PC phone

마을이야기 - 3. 구글링선생님께질문하다 – 無名프로그램설계

BLE Sensor DATA

BLE Control DATA

USB , wirelessJoystick

1. 무명프로그램의 구조

Page 11: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 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 데이터 응답

Page 12: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 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

Page 13: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 4. 새로운것을접할때마나만나는불청객

2. rpi-mw ( 라즈베리파이 MSP 통신 example )

① Aldo Vargas

② MSP 센서 데이터 수신

③ https://github.com/alduxvm/rpi-mw

④ Python

⑤ BLE가 아닌 Serial 통신을 이용

⑥ 개발자가 라즈베리파이, osx로 테스트 한 소스

⑦ struct.pack 함수가 다르게 동작하는 것인지, osx는 동작하는데 rpi에서 동작 안함

Page 14: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 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

Page 15: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 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

Page 16: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 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가 늘어나지만, 그에 따른 문제는 없음

Page 17: 라즈베리파이 와 스카이로버 나노에 만남

마을이야기 - 5. 디자인은언제?

1. 웹 모니터링 페이지