"스콜라/드론 매뉴얼"의 두 판 사이의 차이

통진고위키
(새 문서: ''본 문서는 융합탐구동아리 스콜라 부원들을 위한 드론에 관한 전반적인 매뉴얼입니다. 스콜라 1기 멤버 안중원이 처음 작성했으며...)
 
1번째 줄: 1번째 줄:
''본 문서는 융합탐구동아리 [[스콜라]] 부원들을 위한 드론에 관한 전반적인 매뉴얼입니다. 스콜라 1기 멤버 [[안중원]]이 처음 작성했으며, 이후 추가 및 개선할 내용이 있다면 통진고 재학생 여러분이 지속적으로 반영해주시기 바랍니다.''
''본 문서는 융합탐구동아리 [[스콜라]] 부원들을 위한 드론에 관한 전반적인 매뉴얼입니다. 스콜라 1기 멤버 [[안중원]]이 처음 작성했으며, 이후 추가 및 개선할 내용이 있다면 통진고 재학생 여러분이 지속적으로 반영해주시기 바랍니다.''


== 개요 ==
==개요==
2020년 12월 현재 [[골방|과학실 교무실]]에 구비된 드론은 중국의 드론 스타트업 기업 [https://www.ryzerobotics.com/kr Ryze]의 [https://www.ryzerobotics.com/kr/tello Tello]와 [https://www.ryzerobotics.com/kr/tello-edu Tello EDU]이다. Tello와 Tello EDU는 모두 프로그래밍이 가능하지만 Tello EDU에는 미션패드, 군집비행, SDK 2.0 등의 기능이 추가/개선되었다.
2020년 12월 현재 [[골방|과학실 교무실]]에 구비된 드론은 중국의 드론 스타트업 기업 [https://www.ryzerobotics.com/kr Ryze]의 [https://www.ryzerobotics.com/kr/tello Tello]와 [https://www.ryzerobotics.com/kr/tello-edu Tello EDU]이다. Tello와 Tello EDU는 모두 프로그래밍이 가능하지만 Tello EDU에는 미션패드, 군집비행, SDK 2.0 등의 기능이 추가/개선되었다.


== 조종 ==
==조종==
Tello 및 Tello EDU 드론을 조종하기 위한 '''TELLO''' 앱은 [https://apps.apple.com/us/app/tello/id1330559633 앱스토어]와 [https://play.google.com/store/apps/details?id=com.ryzerobotics.tello&hl=ko 플레이스토어]를 통해 다운로드 가능하다. 자세한 연결 및 조종 방법 추가예정.
Tello 및 Tello EDU 드론을 조종하기 위한 '''TELLO''' 앱은 [https://apps.apple.com/us/app/tello/id1330559633 앱스토어]와 [https://play.google.com/store/apps/details?id=com.ryzerobotics.tello&hl=ko 플레이스토어]를 통해 다운로드 가능하다. 자세한 연결 및 조종 방법 추가예정.


== 코딩 ==
==코딩==
''본 문단에서는 Tello 및 Tello EDU 드론의 기본적인 비행동작(이륙, 착륙, 이동, 뒤집기 등)을 설명합니다. [[스콜라/드론 매뉴얼#군집비행|군집비행]], [[스콜라/드론 매뉴얼#미션패드|미션패드]] 등은 해당 문단을 참고하십시오.''


Tello 및 Tello EDU 드론의 비행 동작을 코딩하려면 스크래치 및 관련 플러그인을 설치해야 한다. 자세한 설치 방법 추가예정.
* ''본 문단에서는 Windows 운영체제에서 Tello 및 Tello EDU 드론의 기본적인 비행동작(이륙, 착륙, 이동, 뒤집기 등)을 스크래치로 프로그래밍하는 방법을 설명합니다.''
* ''Ryze에서 제공하는 최신 버전의 설명서는 [https://www.ryzerobotics.com/kr/tello-edu/downloads Tello EDU 다운로드 페이지]의 '''Scratch README''' 문서를 참조하십시오.''
* ''[[스콜라/드론 매뉴얼#군집비행|군집비행]], [[스콜라/드론 매뉴얼#미션패드|미션패드]] 등을 활용한 코딩은 해당 문단을 참조하십시오.''
* ''Python 등 다른 언어로 프로그래밍하는 방법은 [[스콜라/드론 매뉴얼#SDK|SDK]] 문단을 참조하십시오.''


== 미션패드 ==
=== 설치 ===
Tello 및 Tello EDU 드론의 비행 동작을 스크래치로 코딩하려면 스크래치와 Node.js, Tello 스크래치 확장기능을 설치해야 한다. 이를 위해 다음 항목들을 내려받는다.
 
* [https://scratch.mit.edu/download/scratch2 스크래치 2.0 오프라인 에디터]: 블록 코딩 기반의 교육용 프로그래밍 언어 '스크래치'를 사용하기 위한 프로그램이다.
* [https://get.adobe.com/kr/air/ 어도비 에어]: 스크래치를 실행하기 위해 필요한 프로그램이다.
* [https://nodejs.org/en/ Node.js]: 스크래치 추가기능을 사용하기 위해 필요한 프로그램이다. 다운로드 버튼이 2개가 나타나는데, 그중 LTS 버전 설치를 권장한다.
* Tello 스크래치 추가기능 압축파일: 최신 버전을  [https://www.ryzerobotics.com/kr/tello-edu/downloads Tello EDU 다운로드 페이지]의 '''Scratch README''' 문서의 링크에서 받을 수 있다.
 
어도비 에어, 스크래치, Node.js를 순서대로 설치하고 추가기능 압축파일을 압축해제한다. 압축해제한 폴더에는 Tello.js, Tello.s2e, TelloChs.s2e,ㅊrun_Tellojs.bat 파일이 들어있다.
 
run_Tellojs.bat과 TelloChs.s2e 파일은 본 매뉴얼에서는 사용하지 않는다. 참고로 run_Tellojs.bat은 콘솔을 여는 과정 없이 바로 명령어를 실행하기 위한 배치 스크립트이지만 돌발상황에 대처할 때에는 사용이 불편하다. TelloChs.s2e는 Tello.s2e와 같이 스크래치 확장기능 파일이지만 중국어로 되어있다는 차이점이 있다.
 
=== 코딩 준비 ===
다음 사항들을 서술된 순서대로 준비한다.
 
* [[스콜라/드론 매뉴얼#조종|조종]]할 때와 마찬가지로 노트북 와이파이를 코딩하려는 드론에 연결한다.
 
# 전원 버튼을 눌러 드론을 켠다.
# 노트북 와이파이를 드론에 연결한다. 와이파이 이름은
 
* Tello.js를 실행한다. 가장 간단한 방법은 다음과 같다.
 
# Tello.js 파일이 저장된 폴더(일반적으로 압축해제된 폴더)를 열고 shift 키를 누른 채로 마우스 오른쪽 버튼을 누른다.
# 메뉴에서 "여기서 명령 창 열기" 또는 "여기서 PowerShell 창 열기"를 누르면 콘솔 창이 뜬다.
# 콘솔에서 "node Tello.js"를 입력하고 엔터를 누르면 Tello 확장기능 서버가 실행된다.
# 이 콘솔 창을 그대로 켜놔야 스크래치에서 확장기능을 사용할 수 있다. Tello.js를 종료할 때에는 콘솔 창을 닫거나 콘솔에서 Ctrl+C를 누른다.
 
* 스크래치(Scratch 2.0)를 실행해 확장기능을 불러온다.
 
# shift 키를 누른 채로 메뉴에서 "파일"(또는 "File")을 누르고 "Import Experimental HTTP Extension" 메뉴를 누른다.
# Tello.s2e 파일을 열어 확장기능을 불러온다.
# 성공적으로 불러왔다면 "추가 블록" 탭에 Tello Control이라는 메뉴와 그 아래 여러 블록들이 추가된다.
# 앞서 실행된 Tello.js가 문제없이 돌아가고 있다면 Tello Control이라는 글씨 옆에 초록불이 들어올 것이다. 빨간불이 들어온다면 Tello.js를 다시 실행해야 한다.
 
=== 코딩 가이드 ===
스크래치 드론 코딩을 시작하기 위한 몇 가지 안내 사항이다.
 
* 코딩에 사용되는 명령 블록들은 다음과 같다:
 
{| class="wikitable mw-collapsible mw-collapsed"
!블록
!동작
!SDK 명령어
|-
|takeoff
|이륙
|takeoff
|-
|land
|착륙
|land
|-
|fly up/down/left/right/forward/backward [N] cm
|상/하/좌/우/전/후로 주어진 거리만큼 이동.
|up~backward
|-
|rotate [N] degrees clockwise/counter clockwise
|주어진 각도만큼 시계방향/반시계방향 회전.
|cw/ccw
|-
|flip [f/b/l/r]
|전/후/좌/우로 뒤집기
|flip
|-
|set speed to [N] cm/s
|속도 설정.
|speed
|-
|fly to ~
|현재 위치로부터 (x, y, z)만큼 주어진 속도로 이동.
|go
|-
|reset
|아직 드론에 전송하지 않은 명령 모두 취소.
|없음
|-
|fly a curve via ~
|현위치에서 (x1,y1,z1)를 지나 (x2,y2,z2)까지
호(arc) 궤도로 주어진 속도로 이동.
|curve
|-
|emergency stop
|프로펠러를 즉시 멈춘다.
|emergency
|-
|stop and hover
|제자리에 떠있는다. Tello EDU에서만 사용가능
|stop
|-
|fly to MissionPad ~
| rowspan="3" |[[스콜라/드론 매뉴얼#미션패드|미션패드]] 문단에서 상술. Tello EDU에서만 사용가능
|go
|-
|fly a curve in MissionPad via ~
|curve
|-
|jump in MissionPad along ~
|jump
|}
 
* 코딩에 사용되는 읽기 전용 블록들은 다음과 같다:
 
{| class="wikitable mw-collapsible mw-collapsed"
!블록
!값
!SDK 변수명
|-
|height
|출발지점을 원점(0)으로 한 높이
|h
|-
|barometer
|대기압. 단위는 cmHg
|baro
|-
|tof distance
|현재 지면으로부터의 높이
|tof
|-
|min/max temperature
|기온. 측정 오차에 의한 최솟값/최댓값이 따로 저장된다.
|templ/temph
|-
|attitude pitch/roll/yaw
|드론 방향
|pitch/roll/yaw
|-
|acceleration x/y/z
|가속도. 단위는 0.001g(중력가속도의 1000분의 1)
|agx/agy/agz
|-
|speed x/y/z
|속도
|vgx/vgy/vgz
|-
|battery
|배터리 잔량
|bat
|-
|MissionPad
| rowspan="2" |[[스콜라/드론 매뉴얼#미션패드|미션패드]] 문단에서 상술. Tello EDU에서만 사용 가능
|mid
|-
|Mx/y/z
|x/y/z
|-
|command response
|드론 응답 메시지. ok 또는 오류 메시지 등이 저장된다.
Tello EDU에서만 사용 가능
|없음
|}
 
* 코드 시작점은 "Events" 또는 "이벤트" 탭의 한 블록을 사용한다.
* 드론 비행 코드는 "takeoff"로 시작해서 "land"로 끝내는 것을 권장한다.
* 비상시를 대비해 특정 키를 눌렀을 때 "emergency stop"이 실행되도록 코딩해놓는 것이 좋다.
* 미션패드 관련 명령어와 "stop and hover", "command response" 명령어는 Tello 드론에서는 사용할 수 없으며 Tello EDU에서만 사용할 수 있으니 유의한다.
* (x, y, z) 좌표와 이동거리는 모두 ±20~500cm로 제한된다. 특정 축만 이동하지 않는 경우 (50,0,0)과 같이 좌표에 0을 사용할 수 있지만, (0, 0, 0)은 사용할 수 없다.
* 속도는 10~100cm/s로 제한된다.
* 각도는 1~360°로 제한된다.
* fly a curve ~ 명령어에서 호의 반지름은 0.5~10m로 제한된다.
* 명령어 간에 시간 간격을 두지 않아도 비행 자체에는 문제가 없지만, 명령어 전송과 명령어 실행 간에 시간차가 생기게 된다. 실제 명령 실행하는 데 걸리는 예상 시간 정도의 시간 간격을 두는 것을 권장한다. "제어" 탭의 "~초 기다리기" 또는 "Control" 탭의 "wait ~ seconds" 명령어를 통해 시간 간격을 둘 수 있다.
 
==미션패드==
추가예정
추가예정


== 군집비행 ==
==군집비행==
추가예정
추가예정

2020년 12월 10일 (목) 22:00 판

본 문서는 융합탐구동아리 스콜라 부원들을 위한 드론에 관한 전반적인 매뉴얼입니다. 스콜라 1기 멤버 안중원이 처음 작성했으며, 이후 추가 및 개선할 내용이 있다면 통진고 재학생 여러분이 지속적으로 반영해주시기 바랍니다.

개요

2020년 12월 현재 과학실 교무실에 구비된 드론은 중국의 드론 스타트업 기업 RyzeTelloTello EDU이다. Tello와 Tello EDU는 모두 프로그래밍이 가능하지만 Tello EDU에는 미션패드, 군집비행, SDK 2.0 등의 기능이 추가/개선되었다.

조종

Tello 및 Tello EDU 드론을 조종하기 위한 TELLO 앱은 앱스토어플레이스토어를 통해 다운로드 가능하다. 자세한 연결 및 조종 방법 추가예정.

코딩

  • 본 문단에서는 Windows 운영체제에서 Tello 및 Tello EDU 드론의 기본적인 비행동작(이륙, 착륙, 이동, 뒤집기 등)을 스크래치로 프로그래밍하는 방법을 설명합니다.
  • Ryze에서 제공하는 최신 버전의 설명서는 Tello EDU 다운로드 페이지Scratch README 문서를 참조하십시오.
  • 군집비행, 미션패드 등을 활용한 코딩은 해당 문단을 참조하십시오.
  • Python 등 다른 언어로 프로그래밍하는 방법은 SDK 문단을 참조하십시오.

설치

Tello 및 Tello EDU 드론의 비행 동작을 스크래치로 코딩하려면 스크래치와 Node.js, Tello 스크래치 확장기능을 설치해야 한다. 이를 위해 다음 항목들을 내려받는다.

  • 스크래치 2.0 오프라인 에디터: 블록 코딩 기반의 교육용 프로그래밍 언어 '스크래치'를 사용하기 위한 프로그램이다.
  • 어도비 에어: 스크래치를 실행하기 위해 필요한 프로그램이다.
  • Node.js: 스크래치 추가기능을 사용하기 위해 필요한 프로그램이다. 다운로드 버튼이 2개가 나타나는데, 그중 LTS 버전 설치를 권장한다.
  • Tello 스크래치 추가기능 압축파일: 최신 버전을 Tello EDU 다운로드 페이지Scratch README 문서의 링크에서 받을 수 있다.

어도비 에어, 스크래치, Node.js를 순서대로 설치하고 추가기능 압축파일을 압축해제한다. 압축해제한 폴더에는 Tello.js, Tello.s2e, TelloChs.s2e,ㅊrun_Tellojs.bat 파일이 들어있다.

run_Tellojs.bat과 TelloChs.s2e 파일은 본 매뉴얼에서는 사용하지 않는다. 참고로 run_Tellojs.bat은 콘솔을 여는 과정 없이 바로 명령어를 실행하기 위한 배치 스크립트이지만 돌발상황에 대처할 때에는 사용이 불편하다. TelloChs.s2e는 Tello.s2e와 같이 스크래치 확장기능 파일이지만 중국어로 되어있다는 차이점이 있다.

코딩 준비

다음 사항들을 서술된 순서대로 준비한다.

  • 조종할 때와 마찬가지로 노트북 와이파이를 코딩하려는 드론에 연결한다.
  1. 전원 버튼을 눌러 드론을 켠다.
  2. 노트북 와이파이를 드론에 연결한다. 와이파이 이름은
  • Tello.js를 실행한다. 가장 간단한 방법은 다음과 같다.
  1. Tello.js 파일이 저장된 폴더(일반적으로 압축해제된 폴더)를 열고 shift 키를 누른 채로 마우스 오른쪽 버튼을 누른다.
  2. 메뉴에서 "여기서 명령 창 열기" 또는 "여기서 PowerShell 창 열기"를 누르면 콘솔 창이 뜬다.
  3. 콘솔에서 "node Tello.js"를 입력하고 엔터를 누르면 Tello 확장기능 서버가 실행된다.
  4. 이 콘솔 창을 그대로 켜놔야 스크래치에서 확장기능을 사용할 수 있다. Tello.js를 종료할 때에는 콘솔 창을 닫거나 콘솔에서 Ctrl+C를 누른다.
  • 스크래치(Scratch 2.0)를 실행해 확장기능을 불러온다.
  1. shift 키를 누른 채로 메뉴에서 "파일"(또는 "File")을 누르고 "Import Experimental HTTP Extension" 메뉴를 누른다.
  2. Tello.s2e 파일을 열어 확장기능을 불러온다.
  3. 성공적으로 불러왔다면 "추가 블록" 탭에 Tello Control이라는 메뉴와 그 아래 여러 블록들이 추가된다.
  4. 앞서 실행된 Tello.js가 문제없이 돌아가고 있다면 Tello Control이라는 글씨 옆에 초록불이 들어올 것이다. 빨간불이 들어온다면 Tello.js를 다시 실행해야 한다.

코딩 가이드

스크래치 드론 코딩을 시작하기 위한 몇 가지 안내 사항이다.

  • 코딩에 사용되는 명령 블록들은 다음과 같다:
블록 동작 SDK 명령어
takeoff 이륙 takeoff
land 착륙 land
fly up/down/left/right/forward/backward [N] cm 상/하/좌/우/전/후로 주어진 거리만큼 이동. up~backward
rotate [N] degrees clockwise/counter clockwise 주어진 각도만큼 시계방향/반시계방향 회전. cw/ccw
flip [f/b/l/r] 전/후/좌/우로 뒤집기 flip
set speed to [N] cm/s 속도 설정. speed
fly to ~ 현재 위치로부터 (x, y, z)만큼 주어진 속도로 이동. go
reset 아직 드론에 전송하지 않은 명령 모두 취소. 없음
fly a curve via ~ 현위치에서 (x1,y1,z1)를 지나 (x2,y2,z2)까지

호(arc) 궤도로 주어진 속도로 이동.

curve
emergency stop 프로펠러를 즉시 멈춘다. emergency
stop and hover 제자리에 떠있는다. Tello EDU에서만 사용가능 stop
fly to MissionPad ~ 미션패드 문단에서 상술. Tello EDU에서만 사용가능 go
fly a curve in MissionPad via ~ curve
jump in MissionPad along ~ jump
  • 코딩에 사용되는 읽기 전용 블록들은 다음과 같다:
블록 SDK 변수명
height 출발지점을 원점(0)으로 한 높이 h
barometer 대기압. 단위는 cmHg baro
tof distance 현재 지면으로부터의 높이 tof
min/max temperature 기온. 측정 오차에 의한 최솟값/최댓값이 따로 저장된다. templ/temph
attitude pitch/roll/yaw 드론 방향 pitch/roll/yaw
acceleration x/y/z 가속도. 단위는 0.001g(중력가속도의 1000분의 1) agx/agy/agz
speed x/y/z 속도 vgx/vgy/vgz
battery 배터리 잔량 bat
MissionPad 미션패드 문단에서 상술. Tello EDU에서만 사용 가능 mid
Mx/y/z x/y/z
command response 드론 응답 메시지. ok 또는 오류 메시지 등이 저장된다.

Tello EDU에서만 사용 가능

없음
  • 코드 시작점은 "Events" 또는 "이벤트" 탭의 한 블록을 사용한다.
  • 드론 비행 코드는 "takeoff"로 시작해서 "land"로 끝내는 것을 권장한다.
  • 비상시를 대비해 특정 키를 눌렀을 때 "emergency stop"이 실행되도록 코딩해놓는 것이 좋다.
  • 미션패드 관련 명령어와 "stop and hover", "command response" 명령어는 Tello 드론에서는 사용할 수 없으며 Tello EDU에서만 사용할 수 있으니 유의한다.
  • (x, y, z) 좌표와 이동거리는 모두 ±20~500cm로 제한된다. 특정 축만 이동하지 않는 경우 (50,0,0)과 같이 좌표에 0을 사용할 수 있지만, (0, 0, 0)은 사용할 수 없다.
  • 속도는 10~100cm/s로 제한된다.
  • 각도는 1~360°로 제한된다.
  • fly a curve ~ 명령어에서 호의 반지름은 0.5~10m로 제한된다.
  • 명령어 간에 시간 간격을 두지 않아도 비행 자체에는 문제가 없지만, 명령어 전송과 명령어 실행 간에 시간차가 생기게 된다. 실제 명령 실행하는 데 걸리는 예상 시간 정도의 시간 간격을 두는 것을 권장한다. "제어" 탭의 "~초 기다리기" 또는 "Control" 탭의 "wait ~ seconds" 명령어를 통해 시간 간격을 둘 수 있다.

미션패드

추가예정

군집비행

추가예정