코드론 로킷브릭 Rokit Brick
Drone Software 1. 왜 SW( 소프트웨어 ) 코딩교육이중요할까? 과학기술의시대에머릿속의무언가를세상에보여주는단계에서 SW 는가장 기본적인수단이되며, 이를통해생각과일을처리하는컴퓨팅적사고능력을 함양할수있다. 2. SW 드론제어? SW 코딩을통한알고리즘능력을통해전천후서비스로봇인드론을제어함 으로써드론을활용한다양한아이디어및 HW 제어능력을배양한다. 목표 : SW 코딩학습과알고리즘을통해드론을자유롭게제어하는능력개발 SW 개념과이해 코딩의시작 : Scratch 로킷브릭 코딩의제어 : Arduino 드론제어 SW : Drone Simulator 하드웨어제어 SW : Rokit Simulator 2
로킷브릭으로코드론제어하기 프로그램소개 3
1. Rokit Brick 이란? Rokit Brick은 Snap4Arduino를기반으로기존 Scratch 프로그램에로봇, 드론등다양한제어기능이합쳐져개발된 Scratch 방식의 SW이며, 사용방법도 Scratch와동일하다. 로킷스마트와로킷드론, 코드론같은 HW 들을 Scratch 형식으로제어할수 있다. 4
2. Rokit Brick for CoDrone 실행 Rokit Brick for CoDrone 은프로그램폴더를원하는경로에위치시키고 RBCodrone.exe 실행파일을클릭한다. 5
3. BLE 보드와 PC 의연결 Rokit Brick 프로그램으로코드론을제어하기위해서는 BLE 보드와 PC 를아 래의사진처럼연결한다. 1. USB 케이블로 BLE 보드와 PC 를연결한다. 2. 보드의버튼을눌러통신모드 ( 빨간색 LED) 로바꿔준다. 6
4. Rokit Brick 과 BLE 보드의연결 (1) PC 와인벤터보드를연결한후제일먼저 USB 케이블드라이브설치를확인 하여야한다. (www.robolinksw.com 참조 ) 드라이브설치및 COM 번호를확인한후 Rokit Brick for Codrone(RBCodrone, 로킷브릭코드론 ) 을실행한다. 왼쪽하단의코드론블록을클릭하면하단에보이는두가지버튼으로로킷 브릭프로그램과코드론을연결할수있다. 7
4. Rokit Brick 과 BLE 보드의연결 (2) 가장가까운드론과연결 (Connect to the nearest drone) 이버튼은처음어플리케이션을실행했거나처음코드론을구동하는경우에사용한다. 혹은코드론을다른것으로교체했을때에도사용할수있다. 여러개의코드론이있을때에는 BLE 보드와가장가까이있는드론과페어링된다. 연결했던드론과연결 (Connect to the connected drone) 이버튼은 가장가까운드론과연결 버튼을사용하여한번이상페어링해서사용했던코드론과연결해준다. 여러개의드론이있을때이버튼을사용하여연결하면사용자의코드론이아닌비슷한거리에있는다른드론과페어링되는일을막아줄수있으며더욱간편하게드론을사용할수있다. 8
5. Rokit Brick 의화면구성 기본적인메뉴와화면의레이아웃은 Scratch 와유사하다. Scratch 와비교하 여동작해보면 Rokit Brick 에보다쉽게적응할수있을것이다. 블록팔레트 메뉴 탭목록 무대확대 / 축소 시작 / 중지 무대 (Stage) 스크립트창 스프라이트목록 9
로킷브릭으로코드론제어하기 기본사용법 10
1. 코드론 (CoDrone) 이미지가져오기 메뉴에서모양탭을이용하여원하는이미지를가져올수있다. 경계선을마우스로드래그하여무대의크기를조정할수있다. 11
2. 코드론 (CoDrone) 기본구동예제 1) 드론이동하기 ( 코드론직선이동하기 ) 동작블록군에서를스크립트화면으로가져온다. 스크립트화면에놓인블록을마우스로계속클릭할때마다드론이 10 만큼앞으로 이동하게된다. 12
마우스로클릭하기로바로동작을확인할수있으며, 일반적으로제어블록군에서 이나를이용하여구동을시작하게된다. 블록을와연결하고녹색깃발을클릭하면이동한다. 드론원점이동만약드론이안보이는곳까지사라지게되었을때, [ 동작 ] 블록의 [x:0, y:0 쪽으로이동하기 ] 블록을클릭하면원점으로돌아온다. 13
2) 드론이동하기 ( 무한반복으로드론이동하기 ) 제어블록군에서무한반복하기블록을 [( ) 만큼움직이기 ] 구동해본다. 드론이한번의클릭으로보이지않는곳까지이동하게된다. 와연결하여 드론이화면밖으로사라지지않고, 벽에튕기는동작을반복하게하려면 [ 벽에닿으 면튕기기 ] 블록을이용한다. 14
3) 드론이동하기 ( 이륙및이동착륙하기 ) 그림 1 과같이드론이움직이려면그림 2 와같이좌표값과 이용하여코딩할수있다. (Delay) 를 그림 1 그림 2 그림 1 에서나타난드론의이동거리를바꿔주기위해서는그림 3 에나타난블록들의 x, y 좌표값을변경한다. 마찬가지로기다리는시간도수치를입력하여원하는시간 으로변경할수있다. 그림 3 15
4) 드론이동하기 ( 변수사용하기 ) 변수를이용하여드론의동작을변화시켜보자. 우선아래의그림과같이드론 이회전하는구동을만들어보자. 블록의이동값을변화시키기위하여변수를만든다. 변수블록군 에서변수만들기버튼을누르고 A 라는변수를만든다. 변수란? 특히프로그램에서많이사용하는변수란, 숫자를저장할수있는공간을만들고, 원하는숫자를언제든넣을수있도록하는숫자가아닌문자를뜻한다. 예 ) A = 5, Value = 0 16
A 라는변수를만들면아래와같이변수블록군이생기며, 무대에변수가생성된다. 왼쪽에생성된 A 변수블록을변화하고싶은부분으로아래와같이드래그한다. 무대에나타난변수에서마우스오른쪽클릭을눌러슬라이더를선택해준다. 무대를실행한후, 마우스로무대의 A 변수슬라이더를움직이면실시간으로변수의 값이달라지면서드론의회전반경이커졌다작아졌다하는것을볼수있다. 17
3. 코드론 (CoDrone) 구동연습문제 1) 드론이이동하며벽을반사하여왔다갔다하는동작을만들어보고변수를 이용하여움직이는속도를조절하도록한다. 2) 다음과같은동작을무한반복이아닌 3 회만반복하는프로그램을만들어보자. 사용하는블록개수를최소화하여시도해본다. 3) 새로운스프라이트추가하기를통해착륙장을만든후, 드론이착륙장에 착륙하는동작을다양한방법으로구현해본다. 18
로킷브릭으로코드론제어하기 코드론블록설명 19
1. 코드론 (CoDrone) 블록설명 동작블록 코드론탭에서보드를연결하면코드론을제어할수있는코드론블록들이나오게 된다. 만약드론이멈추지않고이상한방향으로동작할경우, 언제나강제멈춤버튼을눌러드론의동작을멈출수있다. Roll / Pitch / Yaw / Throttle 블록은아래의그림과같이코드론제어동작후에 명령내리기 블록을세트로사용해야한다. 또한코드론구동시맨처음블록은비행동작 ( 이륙하기 ) 혹은 throttle + 명령내리기 로시작하고가장마지막은비행동작 ( 착륙 ) 으로해야안정적이고제대로된코드론제어를할수있다. 그리고원하는지속시간을추가하여원하는동작을만들수있다. 20
1) 코드론의기본동작 모든값은 -100 부터 100 사이의값을갖는다. throttle : 상하수직이동 상승 + yaw : 좌회전, 우회전이동 우회전 + pitch : 전진, 후진이동 전진 + roll : 좌측, 우측이동우측이동 + 2) 블록의각도값클리어하기 스크립트실행전에는반드시각도값들을 클리어하고실행한다. click! 21
2. 코드론 (CoDrone) 블록설명 비행동작블록 아무런동작을하지않는다. 드론을이륙시킨다 드론의모든동작을멈추게한다. 기압센서를이용하여드론을서서히 착륙시킨다. 드론이뒤집어져있을경우다시원상 복귀시킨다. ( 드론이뒤집어져있을 경우에만동작 ) 드론의왼쪽방향에작은원을그리며, 제자리로돌아오는비행을한다. 22
2. 코드론 (CoDrone) 블록설명 비행동작블록 드론의오른쪽방향에작은원을 그리며, 제자리로돌아오는비행을 한다. 드론의방향을오른쪽으로 180 도 회전시킨다. 2. 코드론 (CoDrone) 블록설명 미세조정 (Trim) 호버링시, 왼쪽으로드론이흘러갈 때클릭하여조절한다. 호버링시, 오른쪽으로드론이흘러 갈때클릭하여조절한다. 호버링시, 뒤쪽으로드론이흘러갈 때클릭하여조절한다. 23
2. 코드론 (CoDrone) 블록설명 미세조정 (Trim) 호버링시, 앞쪽으로드론이흘러갈 때클릭하여조절한다. 호버링시, 드론이좌회전할때클릭 하여조절한다. 호버링시, 드론이우회전할때클릭 하여조절한다. 호버링시, 드론이하강할때클릭 하여조절한다. 호버링시, 드론이상승할때클릭 하여조절한다. 24
2. 코드론 (CoDrone) 블록설명 미세조정 (Trim) 1) 호버링마스터하기호버링이란? 드론이공중에가만히떠서일정한높이와본래있던자리를유지하는동작으로서모든드론동작의기초가된다. 자율패턴비행이잘되려면호버링동작부터잘되는지점검해야한다. * 정확한호버링을위한튜닝단계 (a) 드론을이륙시킨다. click! (b) 드론이어느한방향으로흐르지않는지확인한다. - 드론이왼쪽으로흘러갈때 : - 드론이오른쪽으로흘러갈때 : - 드론이뒤쪽으로흘러갈때 : - 드론이앞쪽으로흘러갈때 : click! click! click! click! (c) 드론이높이를안정적으로유지하는지확인한다. - 드론이빠르게위로치솟는경우 : - 드론이자꾸아래로떨어지는경우 : click! click! 25
2. 코드론 (CoDrone) 블록설명 드론모드변경 코드론기체를비행모드로전환한다. 코드론기체를가드없는비행체모드로 전환한다. 코드론기체를로버 ( 드라이브 ) 모드로 전환한다. 드론모드확인하기 29 페이지 [ 요청블록 ] 참조 코드론기체를연결한후 [ 요청하기 - 코드론상태 ] 블록을한번클릭하여표시되는 기체의모드를확인합니다. click! click! click! 26
3. 코드론 (CoDrone) 블록설명 LED 블록 1) 코드론의 LED 명령 - 눈 명령선택색상선택주기입력 드론의눈조명을완전히끈다. 드론의눈조명을켠채로유지한다. 드론의눈조명에모든색을번갈아가며켠다. 드론의눈조명을주기마다한번씩깜빡인다. 드론의눈조명을주기마다두번씩깜빡인다. 드론눈조명의밝기를주기동안증감시킨다. 27
3. 코드론 (CoDrone) 블록설명 LED 블록 2) 코드론의 LED 명령 - 팔 드론의팔조명을완전히끈다. 드론의팔조명을켠채로유지한다. 드론의팔조명에모든색을번갈아가며켠다. 드론의팔조명을주기마다한번씩깜빡인다. 드론의팔조명을주기마다두번씩깜빡인다. 드론의팔조명을앞쪽에서뒤쪽으로이동시키며깜빡인다. 드론의팔조명을뒤쪽에서앞쪽으로이동시키며깜빡인다. 28
3. 코드론 (CoDrone) 블록설명 요청블록 3) 코드론의요청명령 드론의모드를확인한다. ex) FLIGHT, FLIGHT NO GUARD, 드론이 FLIGHT 모드일때, 현재상태 를확인한다. 드론이 DRIVE 모드일때, 현재상태를 확인한다. 드론이뒤집어졌는지확인한다. 드론의좌우기울기를확인한다. 드론의앞뒤기울기를확인한다. 드론의회전각을확인한다. 29
3. 코드론 (CoDrone) 블록설명 요청블록 3) 코드론의요청명령 드론의배터리잔량을퍼센트 (%) 로확인한다. 드론의배터리잔량을전압으로 확인한다. 4) 코드론의밑면거리센서블록 밑면거리센서의값을읽어온다. ( 단위 : mm) 30
로킷브릭으로코드론제어하기 코드론실습예제 코드론실습전아래의사항을꼭확인해주세요. 1) 호버링상태를확인합니다. 2) 기체의모드를확인합니다. 3) 블록의각도값을 0 으로클리어합니다. 25 페이지 26 페이지 21 페이지 31
1. Rokit Brick 으로코드론 (CoDrone) 띄우기예제 CoDrone 탭에는 throttle / yaw / pitch / roll / event / trim / sending / Command 가있다. 이들과기존스크래치블록을조합하여자신만의드론을코딩해보자. 녹색깃발버튼클릭시잠시공중에떴다가멈추는예제 ( 손으로받는다 ) Throttle (50) 1.5 초후 Landing Ready 32
2. Rokit Brick 으로코드론 (CoDrone) 움직이기예제 녹색깃발버튼클릭시잠시공중에뜨면서손으로멈추는예제 ( 손으로받는다 ) 이륙명령 1.5 초후 Pitch(+60) 명령 1 초후 Landing Ready 33
3. 코드론 (CoDrone) 패턴비행하기예제 코드론이이륙후오른쪽으로원을그리며비행하고착륙하는예제 이륙명령 2 초후 회전비행 4 회반복 Landing Ready 이륙명령 2 초후 상승 (0) 만큼 ( 좌 ) 회전 ((-)100) 만큼오른쪽으로 (100) 만큼 1.5초가기 4회반복한후 Landing 34
4. 코드론센서값받기예제 자세제어값 코드론의자세에관련된제어값들을수신하고이를활용하는예제 1) 코드론의자세제어값수신하기코드론의바닥에자성을띄는물체가있을경우 Yaw 각도가지속적으로증감하는현상이생길수있다. 2) 코드론의자세제어값을수신하여스프라이트회전시키기 코딩을하기전, 스프라이 트에코드론이미지를업 로드하여야한다. 3) 코드론의자세제어값수신하기 코드론의센서상태에 따라 Yaw 에서빼야하는 각도가달라질수있다. 35
5. 코드론센서값받기예제 배터리값및드론상태수신 코드론의배터리값및드론의상태를수신하는예제 1) 코드론의배터리값수신하기 코딩을하기전변수탭에서 저장할배터리값의변수를 새로생성해야한다. 2) 코드론의배터리값및드론상태수신하기 Landing Flight 배터리값을수신받고다양한블록을이용하여비행상태를체크할수있다. 36
6. 코드론호버링시키기 코드론을잠시동안호버링시키기 이륙명령 1.5 초후 공중에서 3 초간대기 Landing Ready 이륙명령 1.5 초후 공중에서 3 초간대기 Landing 배터리가없거나드론이가라앉을때에는 3 번째단계에서 값을 32 이상부터조금씩올려준다. 드론의이륙은수치 32 이상부터순조롭게 구동된다. 37
7. PC 로코드론조종하기예제 드론시뮬레이터와유사한방식으로코드론을조종할수있도록블록을 조합하는예제 (1-1) 1) 코드론조종하기 키보드로 드론조종하기 스페이스바로 멈추기 A W S D Space Bar 이동명령증가량지정 Pitch +5 ( 전진 ) Pitch 의최대치제한 * Inc( 증가량 ) 을지정하는값에따라드론의비행변화량이달라진다. 38
7. PC 로코드론조종하기예제 드론시뮬레이터와유사한방식으로코드론을조종할수있도록블록을 조합하는예제 (1-2) Pitch -5 ( 후진 ) Pitch 의최소치제한 Roll -5 ( 좌측이동 ) Roll 의최소치제한 Roll +5 ( 우측이동 ) Roll 의최대치제한 Throttle +5 ( 상승 ) Throttle 의최대치제한 39
7. PC 로코드론조종하기예제 드론시뮬레이터와유사한방식으로코드론을조종할수있도록블록을 조합하는예제 (1-3) Throttle -5 ( 상승 ) Throttle 의최소치제한 Yaw +5 ( 우회전 ) Yaw 의최대치제한 Yaw -5 ( 좌회전 ) Yaw 의최소치제한 40
7. PC 로코드론조종하기예제 드론시뮬레이터와유사한방식으로코드론을조종할수있도록블록을 조합하는예제 (1-4) 호버링유지 41
7. PC 로코드론조종하기예제 드론시뮬레이터와유사한방식으로코드론을조종할수있도록블록을조합하는예제 2) 코드론조종하면서상태값수신하기조종블록아래쪽에다음블록들을배치한다. 42
8. 밑면거리센서예제 드론밑면의센서를이용하여거리를측정하는예제 밑면거리센서값을계속읽어와서 말한다. ( 단위 : mm) 드론을손으로바닥에서들었다 놓았다하며거리변화를확인한다. 드론이 1m 위로상승했다가 50cm 아래로하강한후정지하는예제 바닥에서 1m 높아질때까지 Throttle 50 ( 상승 ) 명령내리기 바닥에서 50cm 보다낮아질때까지 Throttle -50 ( 하강 ) 명령내리기 드론정지 43
www.robolinksw.com Youtube.com/CoDrone 온라인사이트에서매뉴얼과프로그램다운로드, 교육자료등을확인해주세요.. 로보링크 SW / Arduino 등이오픈소스로제공 됩니다.