Similar documents
이보고서는 년도정부 교육부 의재원으로 한국과학창의재단의지원을받아수행된성과물임


Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

고급 프로그래밍 설계

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

PowerPoint Presentation

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

Windows 8에서 BioStar 1 설치하기

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

Microsoft PowerPoint - chap01-C언어개요.pptx

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

PowerPoint 프레젠테이션

ISP and CodeVisionAVR C Compiler.hwp

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

PowerPoint 프레젠테이션

1

슬라이드 1

01장

Web Scraper in 30 Minutes 강철

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

System Recovery 사용자 매뉴얼

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

목차 1부. 보드 운영체제와 MCU 보드의 포트 2부. 전압과 전류 그리고 모터 드라이버 3부. 초음파 센서 4부. BOS Script 프로그래밍 5부. W2R -1 소개

Install stm32cubemx and st-link utility

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

벤처연구사업(전동휠체어) 평가

윈도우즈프로그래밍(1)

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

PowerPoint Template

PowerPoint 프레젠테이션

Microsoft PowerPoint - gnu-w06-python_[실습]_day13-turtle-shape

Microsoft Word - src.doc

PowerPoint 프레젠테이션

Microsoft PowerPoint - es-arduino-lecture-03

untitled

4S 1차년도 평가 발표자료

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

PowerPoint 프레젠테이션

Microsoft PowerPoint - e pptx

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

게임 기획서 표준양식 연구보고서

데이터 시각화

*Revision History 날짜 내용 최초작성 Tel Fax [2] page

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

Microsoft Word _mentor_conf_output5.docx

<3635B1E8C1F8C7D02E485750>

Studuino소프트웨어 설치

Mango-E-Toi Board Developer Manual

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

CAN-fly Quick Manual

PowerPoint 프레젠테이션

RVC Robot Vaccum Cleaner

<4D F736F F D20C0CCBEBEC1A6BEEE5FC3A5BCD2B0B35F >

Endpoint Protector - Active Directory Deployment Guide

Report Designer V3.0 사용설명서 2장

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft PowerPoint - logo_2-미해답.ppt [호환 모드]

Microsoft PowerPoint - Java7.pptx

슬라이드 1

Microsoft Word - Armjtag_문서1.doc

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

PowerPoint 프레젠테이션

Microsoft Word - codevision사용법_pdf버전.docx

PowerPoint Template

untitled

슬라이드 1

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

IRISCard Anywhere 5

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

로봇SW교육원 강의자료

PowerPoint 프레젠테이션

라즈베리파이 프로그래밍_130912(최종).indd

Microsoft Word - PLC제어응용-2차시.doc

MF5900 Series MF Driver Installation Guide

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

<4F B8A620C0CCBFEBC7D120C8B8B7CE20C0DBBCBAC0C720B1E2C3CA2E687770>

Microsoft Word - PEB08_USER_GUIDE.doc

tut_modelsim(student).hwp

_USB JTAG Ver1.0 User's Manual.hwp

<C6F7C6AEB6F5B1B3C0E72E687770>

쉽게 풀어쓴 C 프로그래밍

작동 원리

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt)

PowerPoint 프레젠테이션

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

SIGIL 완벽입문

OM2M 기반의 OHP-M2M 오픈소스설치가이드 2015 년 8 월 경북대학교통신프로토콜연구실 최예찬, 강형우 요약 사물인터넷 (Internet of Things: IoT) 이이슈가되면서다양한사

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Chapter 1

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Transcription:

이보고서는 2017 년도정부 ( 교육부 ) 의재원으로 한국과학창의재단의지원을받아수행된성과물임

목차 덕성여자대학교융합인재교육 (STEAM) 아웃리치프로그램개요 1. 자율주행차와미래사회 3 2. 싱글보드컴퓨터로자율주행차제작 7 3. 파이썬프로그래밍기초 19 4. 자율주행알고리즘과프로그래밍 41 5. 컴퓨터공학과진학과진로 52

덕성여자대학교융합인재교육 (STEAM) 아웃리치프로그램개요 STEAM 프로그램개요 프로그램명 SBC(Single-Board Computer) 로자율주행자동차만들기 학습주제학습목표교육대상수업시수관련교과 자율주행차가가져올우리삶의변화를생각해보고자율주행차의개념, 작동원리와기술등을알아본다. 그리고싱글보드컴퓨터와센서를이용하여자율주행차제작하고창의적인자율주행알고리즘을생각해보며최신과학기술에대한이해도를고취시킨다. 자율주행차를이용하여자율주행원리를이해하고, 효율적인자율주행알고리즘아이디어를도출한다. 고등학교 1~2학년 4차시물리 / 기술 / 미술 STEAM 단계요소 구분 상황제시 학습준거 Ÿ 다가올 4차산업혁명이일상생활에미칠영향은무엇일까? Ÿ 자율주행자동차가보편화되면인간은운전에서해방될까? Ÿ 만약자율주행차가있다면나의등굣길은어떻게바뀔까? 창의적설계 감성적체험 Ÿ Ÿ Ÿ Ÿ Ÿ 자율주행자동차에필요한기능구상하기자율주행알고리즘설계하기주어진센서모듈을활용한자동차디자인하기자신이만든자동차로자율주행테스트하기미래의자율주행자동차가해결해야할문제점제안하기

주제 SBC(Single-Board Computer) 로자율주행자동차만들기 차시교육주제교수 학습활동관련교과 상황제시 미래의자동차는어떤모습일까? 10 분 인공지능을이용하여스스로움직이는자율주행자동차소개 1 자율주행차와 실생활의변화 창의적설계 25분 하드웨어와소프트웨어융합관계알아보기 인공지능과자율주행의관계알아보기 과학 기술 예술 감성적체험 10분 내가생각하는미래의자동차발표하기 자율주행 상황제시 10분 자율주행에필요한기술은무엇이있을까? 2 알고리즘및센서데이터처리 ( 소프트웨어 창의적설계 25분 Python 기초프로그래밍 Python으로센서감지프로그래밍 Python으로자동차주행프로그래밍 과학기술공학예술 프로그래밍 ) 감성적체험 10분 SSH 원격접속으로자동차제어하기 충돌없는자율주행확인하기 3 자동차차체와전자회로구성 ( 하드웨어설계, 제작 ) 상황제시 10분창의적설계 25분 안전한자동차를제작하는데필요한기능은무엇일까? 자동차디자인설계와제작하기 센서와모터작동시키기 과학 공학 수학 감성적체험 10분 자동차디자인설계과정발표 상황제시 10 분 우리생활과밀접한컴퓨터공학소개 4 직업진로탐색 ( 전자공학 ) 창의적설계 25 분 컴퓨터공학세부전공분야체험 과학 공학 감성적체험 10 분 컴퓨터공학전공관련직업탐색

자율주행차가가져올미래사회와우리삶의긍정적인변화와부정적인사례를생각해본다. 자율주행차와우리삶의변화 운전자가차량을조작하지않아도설정한목적지까지주변환경을인식하고스스로주행하 는자동차를뜻한다. 자동차가스스로운전한다면우리의삶은어떻게변화할지생각해보자. 자율주행자동차 * 출처 : digitaldealer.com [ 참고자료 ] Ÿ 자율주행차, 미래를달리다 / YTN 사이언스 https://youtu.be/6za6otfwdhg Ÿ 미래형자율주행자동차벤츠달리는거실인가? https://youtu.be/e5bqwuornji Ÿ 구글이계획하는자율주행자동차의문제점 https://youtu.be/iobsdwriznm 3

생각해보기 : 자율주행차가있다는나의삶은어떻게바뀔까? 오전 7 시 30 분. 잠이덜깬나는무거운가방을들고밖으로향한다. 현관문을열고나갔 더니자율주행차가미리문을열고기다리고있다. 피곤했던등굣길을편안하게바꿔줄자 율주행차가생긴다면나의삶은어떻게변할까? 자율주행차가우리의실생활에어떤영향을미칠지생각해보고아래에적어봅시다. 나에게미래의자율주행자는 이다. 4

생각해보기 : 자율주행차의작동원리는무엇일까? 자율주행차의작동원리는인지, 판단, 제어등크게세가지로나뉜다. 인지기술을통해 도로의상황과현재의위치, 지형지물을감지하고수집된정보를판단, 분석하여목적지까 지안전하게도착할수있도록제어하는것이자율주행의기본원리다. * 출처 : phoneworld.com.pk 자율주행에필요한기술은어떤것들이있는지조사한후작성해보자. 5

[ 참고자료 ] Ÿ 자율주행차가도로를지배하는미래사회 http://www.kama.or.kr/jsp/webzine/201605/pages/issue_02.jsp Ÿ 자율주행자동차가가져올 10가지변화들 http://global-autonews.com/bbs/board.php?bo_table=bd_026&wr_id=261 Ÿ 자율주행자동차 - 컴퓨터와자동차가만나다! 미래의스마트카자율주행자동차 http://blog.skhynix.com/1590 Ÿ 자율주행자동차의세계! http://blog.lginnotek.com/549 자율주행차탑승사진 * 출처 : Yanfeng 6

싱글보드컴퓨터를이용하여주변상황을판단하고자율주행하는자동차설계와제작을진 행한다. 비글본블랙소개 비글본블랙은미국의비글보드재단이만든싱글보드컴퓨터로아두이노, 라즈베리파이등과함께오픈소스하드웨어를대표하는제품이다. 해외오픈소스하드웨어커뮤니티를통해비글본블랙을이용한프로젝트들이많이생겨나고있다. 그러나국내에서는비글본블랙에대한인지도가해외만큼높지않다. 아두이노와라즈베리파이는커뮤니티와블로그등이활발하게이뤄지고있는반면비글본블랙은최근에들어서야관심을받고있다. 비글본블랙하드웨어 2013년 4월, 미국의비글보드재단이비글보드의최신모델인비글본블랙이라는제품을출시했다. 비글본블랙은 45달러라는저렴한가격에놀라운성능을가지고있다. ARMv7 아키텍처의 1GHz AM335x ARM 코어텍스 (Cortex) A8 프로세서를탑재했고, 46핀이있는헤더가 2개있어서총연결가능한핀이 92개나존재한다. 뿐만아니라 GPIO, SPI, I2C 등다양한인터페이스를지원한다. 또한, 2GB 내장스토리지와옹스트롬OS, 클라우드9 IDE가미리설치돼있어제품수령 7

후곧바로개발이가능하다. 비글본블랙은 Node.js 개발이가능하고, 내장라이브러리인 BoneScript 를이용해자바스크립트로센서와액추에이터를제어할수있다. 기존의보드형 PC는성능에대한만족도가낮았지만, 비글본블랙은저렴한가격에도만족스런성능을보여준다. 예로 3D 프린터를개발하는경우리소스가많이드는작업이어서 3D 프린터관련작업만수행하는컴퓨터를따로두어야만했다. 하지만비글본블랙은프로세서와램의성능이충분하기때문에비글본블랙 1개만으로도 3D 프린터를충분히제어할수있다. [ 참고자료 ] DBguide.net http://m.dbguide.net/about.db?cmd=view&boardconfiguid=19&boarduid=177510 비글본블랙홈페이지 https://beagleboard.org/black 8

비글본블랙프로젝트소개 1 Open ROV( 무인수중탐사로봇 ) Open ROV는비글본블랙으로만든오픈소스무인수중탐사로봇프로젝트이다. 무선리모컨조종이가능하고카메라를통해심해속영상을실시간으로확인할수있다. 또한어두운심해를비추기위해조명을제어할수도있다. Open ROV (http://openrov.com) 2 BuddyBot BuddyBot은 Swift 언어로프로그래밍한첫번째무인자동차프로젝트이다. 초음파거리센서를활용하여장애물을피해서자율주행하며버튼, LED 등을 GPIO로제어도록프로그래밍한오픈소스프로젝트이다. BuddyBot (https://github.com/hoffmanjon/swiftybones_buddybot) http://myroboticadventure.blogspot.kr/2016/05/buddybot-gets-obstacle-avoidance.html 9

생각해보기 : 미래의자율주행차는어떻게생겼을까? 국내외에서많은회사들이자율주행차개발에뛰어들고있다. 기존의완성차제조업체 ( 벤 츠, 아우디, 현대등 ) 뿐만아니라 IT 업체 ( 구글, 애플등 ) 에서다양한디자인으로자율주행 차를선보이고있다. * 출처 : Google, Mercedes-Benz F015 내가생각하는미래의자율주행차디자인을상상하고자동차의외부또는내부를 그려보자. 10

설계하기 : 자율주행차를원하는모양으로조립해봅시다. SBC 로자율주행자동차만들기재료목록 구분부품명규격개수 자동차본체키트아크릴 1 자동차 본체 부분 바퀴 2 볼캐스터 1 모터전선 2 개납땜 2 볼트, 너트, 지지대세트 1 비글본블랙 부분 비글본블랙 1 5mm 지지대 M3 2 너트 M3 2 모터드라이버 L298N 모터드라이버 1 초음파 거리센서 부분 초음파거리센서 HC-SR04 1 초음파거리센서브라켓 1 12mm 렌치볼트 M3 2 너트 M3 2 점퍼케이블 (M-F) 4 pin 2 점퍼케이블 (F-F) 1 pin 1 기타 AA 건전지홀더 ( 스위치 ) 4 구 1 AA 건전지 4 휴대용충전배터리 1 미니 USB 연장케이블 1 구분추가준비목록규격개수 조별 1 개씩 드라이버세트 1 양면폼테이프 1 순간접착제 1 11

자율주행자부품사진 1 볼트와너트, 모터브라켓을이용하여자동체본체와모터를조립한다. 12

2 자동차본체에지지대를먼저연결한후볼캐스터를조립한다. 3 초음파거리센서를자동차본체에조립하고 4 핀점퍼케이블을연결한다. 13

4 본체에비글본블랙을너트로고정시킨다. 5 4 구 AA 배터리홀더와휴대용보조배터리를본체에부착한다. 14

모터와모터드라이버전선연결방법 드라이버를이용하여모터와모터드라이버를아래와같이연결한다. 15

아래그림과같이 4 구 AA 배터리홀더의전원선과비글본블랙의 GND 선을모터드라이버 연결한다. 16

비글본블랙 GPIO 연결방법 초음파거리센서의연결핀 4 개 (VCC, Trig, Echo, GND) 를아래그림과같이비글본블랙 의 P8, P9 핀헤더에맞게연결한다. 모터드라이버의입력핀 4 개 (IN1, IN2, IN3, IN4) 와 GND 핀을아래그림과같이비글본 블랙의 P8 핀헤더에맞게연결한다. 17

비글본블랙자율주행차완성 [ 참고자료 ] Ÿ 덕성여자대학교와이즈센터카페 (SBC로자율주행차만들기관련자료 ) http://cafe.naver.com/dswise/36 Ÿ 구글의자율주행차 WAYMO https://waymo.com/ Ÿ 벤츠의자율주행차 F015 https://www.mercedes-benz.com/en/mercedes-benz/innovation/research-ve hicle-f-015-luxury-in-motion/ Ÿ 자율주행기술로인한디자인의변화는? http://magazine.kakao.com/pincar/57d239dbe787d00001302f79 18

거북이그래픽모듈을사용하여파이썬언어사용법에대해서배우고순차, 반복, 선택구조 에대해서알아본다. Python 으로만든자율주행프로그램을업로드하고주행테스트를통 해프로그램을수정, 보완한다. 프로그래밍언어파이썬 파이썬 (Python) 은 1990년암스테르담의귀도반로섬 (Guido Van Rossum) 이개발한인터프리터언어이다. 귀도는파이썬이라는이름을자신이좋아하는코미디쇼인 " 몬티파이썬의날아다니는서커스 (Monty Python s Flying Circus)" 에서따왔다고한다. 파이썬의사전적인의미는고대신화에나오는파르나소스산의동굴에살던큰뱀을뜻하며, 아폴로신이델파이에서파이썬을퇴치했다는이야기가전해지고있다. 대부분의파이썬책표지와아이콘이뱀모양으로그려져있는이유가여기에있다. 파이썬은전세계적으로가장많이사용하는프로그래밍언어중하나이며, 공동작업과유지보수가매우쉽고편하다. 국내외로많은프로그래머가파이썬으로다양한프로젝트를진행하고있으며, 깃허브 (http://github.com/) 에서여러가지프로젝트를찾아볼수있다. 19

파이썬의특징 이세상에프로그래밍언어는 C, C++, Java, Ruby 등다양하다. 각언어마다장단점이 있고사용목적에따라선택해서사용해야한다. 언어마다문법과규칙이정해져있으며 유사하지만조금씩다르다. 파이썬은문법이쉬워빠르게배우기쉽고활용하기편하다. 프로그래밍경험이있는사람이라면파이썬사용법을단기간에배울수있다. 또한, 파이썬은오픈소스라서무료로사용할수있다. 매우복잡하고반복연산이많은시스템프로그램을제외하면시스템유틸리티, GUI 프로그래밍, 웹프로그래밍등다양한분야에적용할수있는언어이다. [ 참고링크 ] 점프투파이썬 https://wikidocs.net/4307 20

파이썬설치하기 1 파이썬홈페이지 (https://www.python.org/downloads/) 에서 Download Python 3.x.x 를내려받는다. 또는, http://cafe.naver.com/dswise/36 에서다운로드. 2 python-3.6.2.exe 파일을실행하면파이썬설치마법사의 Add Python 3.6 to PATH 를체크하고 Install Now 를눌러서설치를시작한다. 21

3 설치화면 4 프로그램이모두설치되면 Setup was successful 이나타난다. Close 버튼을눌러설 치마법사창을닫는다. 22

5 자주사용하는실행파일명은 IDLE(Python 3.6 32-bit 또는 64-bit) 이다. 클릭해서파이썬 IDLE 를실행한다. 6 IDLE 프로그램이화면에나타난다. 테스트로 IDLE 화면에 print( Hello Python ) 을입력하고 Enter 를누른다. 23

프로그램의기본제어구조 기본제어구조는다음과같이 3 가지가있다. 1 순차 (concatenation) 는구문순서에따라서순서대로수행한다. 2 선택 (selection) 은프로그램의상태에따라서여러구문들중에서하나를수행한다. (if, else, elif와같은키워드로표현 ) 3 반복 (repetition) 은프로그램이특정상태에도달할때까지구문을반복하여수행하거나, 집합체의각각의원소들에대해어떤구문을반복수행한다. (while, for와같은키워드로표현 ) 24

거북이그래픽프로그래밍 파이썬은초보자들이쉽고재미있게프로그래밍을배울수있도록 거북이그래픽 이라는 모듈을제공한다. 모듈이란파이썬에서사용하는프로그램의작은단위를말한다. 거북이 그래픽모듈을사용하여순차구조로프로그램을작성해보자. 1 Python IDLE 에다음과같은코드를입력하고실행해보자. >>> import turtle >>> turtle.forward(50) 다음과같이화살표가오른쪽으로이동한화면이나타난다. 25

2 다음은화면에거북이가나오도록코드를작성해보자. >>> turtle.shape( turtle ) 3 이제거북이를좌회전, 우회전을시켜보자. >>> turtle.right(90) >>> turtle.forward(50) >>> turtle.left(90) >>> turtle.forward(50) >>> turtle.exitonclick() # 화면을클릭하면창이닫힌다 26

연습문제 1 거북이그래픽모듈로사각형을만들어보자. >>> import turtle >>> turtle.shape( turtle )... 27

파이썬파일만들기 1 IDLE 을실행하고 File -> New File 을실행하고 Save 를눌러서파일명을 turtle_test 라고적은후저장한다. 2 파이썬에디터에아래코드를입력한다. import turtle turtle.shape( turtle ) 28

3 File -> Save 선택한후경로는바탕화면을선택한후파일명을 turtle_test 라고이 름을적고파일을저장한다. 29

4 Run -> Run Module 을선택하거나 F5 를눌러서프로그램을실행한다. 거북이그래픽모듈로도형그리기 1 원그리기 에디터에아래와같이코드를작성하고 F5 를눌러서실행한다. import turtle turtle.shape("turtle") # 원그리기 turtle.circle(100) 2 삼각형그리기 30

에디터에아래와같이코드를추가하고 F5를눌러서실행한다. # 삼각형그리기 turtle.forward(100) turtle.left(120) turtle.forward(100) turtle.left(120) turtle.forward(100) turtle.left(120) 3 사각형그리기에디터에아래와같이코드를추가하고 F5를눌러서실행한다. # 사각형그리기 turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) 31

32 전체코드

연습문제 2 거북이그래픽모듈로더많은사각형을만들어보자. 파일명은 turtle_ex02.py 로저장한다. import turtle turtle.shape( turtle )... 33

while 반복문 컴퓨터에게같은일을반복해서시키고싶을때반복문을사용한다. 반복문에는 while 과 for 명령어가있으며앞서배운거북이프로그램을응용하여반복구조프로그램을작성해 보자. while 반복문의기본구조는다음과같다. while [ 조건식 ]: 실행할문장1 실행할문장2... 1 Python 에디터에다음과같은코드를입력하고실행해보자. import turtle turtle.shape("turtle") while 1: # 아래문장이무한반복된다. # 사각형그리기 turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(60) 34

다음과같은결과화면이나타난다. for 반복문 for 반복문의기본구조는다음과같다. for 변수 in 리스트 : 실행할문장1 실행할문장2... 2 Python 에디터에다음과같은코드를입력하고실행해보자. import turtle turtle.shape("turtle") for i in range(3): # 아래문장이 3번반복된다. # 사각형그리기 turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(60) 35

다음과같은결과화면이나타난다. if 조건문 앞서배운거북이프로그램을응용하여선택구조프로그램을작성해보자. if 조건문의기본구조는다음과같다. if 조건식 : else: 실행할문장1 # 참 (True) 일때실행할문장 ( 들여쓰기 ) 실행할문장2 # 참 (True) 일때실행할문장 ( 들여쓰기 ) 실행할문장1 # 거짓 (Fasle) 일때실행할문장 ( 들여쓰기 ) 실행할문장2 # 거짓 (Fasle) 일때실행할문장 ( 들여쓰기 ) 3 Python 에디터에다음과같은코드를입력하고실행해보자. 36

import turtle turtle.shape("turtle") angle = 60 for i in range(3): # 아래문장이 3번반복된다. # 사각형그리기 turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) if i == 0: turtle.forward(100) if i == 1: angle = -30 turtle.left(angle) 다음과같은결과화면이나타난다. 37

연습문제 3 더많은거북이그래픽모듈을이용하여코딩을해보자. import turtle turtle.shape("turtle") turtle.color( red ) # 빨간색펜선택 turtle.pensize(5) # 펜굵기를 5로설정 angle = 60 for i in range(3): # 아래문장이 3번반복된다. # 사각형그리기 turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) import turtle turtle.shape("turtle") turtle.color("blue") # 파란색펜선택 # 삼각형그리고색칠하기 turtle.begin_fill() # 색칠하기시작 turtle.forward(100) turtle.left(120) turtle.forward(100) turtle.left(120) turtle.forward(100) turtle.left(120) turtle.end_fill() # 색칠하기종료 38

생각다지기 : 파이썬프로그래밍결과물 자신이만든파이썬프로그래밍결과물을정리해봅시다. 예제와연습문제를통해나온결과물은무엇인가요? 실습중에발생한오류를어떻게해결했나요? 39

[ 참고자료 ] Ÿ 파이썬거북이공식문서 https://docs.python.org/3/library/turtle.html#methods-of-rawturtle-turtle-an d-corresponding-functions Ÿ 파이썬거북이그래픽모듈사용하기 http://naver.me/xxp93cwi Ÿ Python for Beginners https://opentechschool.github.io/python-beginners/ko/simple_drawing.html Ÿ Hello, little turtles! http://openbookproject.net/thinkcs/python/english3e/hello_little_turtles.html 40

자율주행차를작동시킬소프트웨어를파이썬으로개발한다. 초음파거리센서를이용하여자동 차주변에물체가접근하면자동으로피해가는알고리즘을프로그래밍한다. 생각해보기 : 운행중자동차주변에누군가접근한다면어떻게피해갈까? * 출처 : digitaltrends.com 자율주행차앞에물체가나타났다. 이때어떻게물체를인식해서물체를피해갈수 있을지생각해보고그순서를작성해보자. 41

1 비글본블랙개발환경설정방법 putty 터미널에다음과같이입력한다. nano setup.sh 아래내용을복사 (Ctrl+C) 후 putty 터미널에마우스오른쪽을클릭해서붙여넣는다. # Title: Setup for BeagleBone Black Car # Author: Duksung Women s University WISE Center # Creation Date: Oct 19, 2017 # Cafe: http://cafe.naver.com/dswise # Free and open for all to use. But put credit where credit is due. echo "Asia/Seoul" > /etc/timezone cp /usr/share/zoneinfo/rok /etc/localtime echo "TimeZone (Asia/Seoul) Setup Complete." sleep 1 apt-get update && apt-get install python-pip python-setuptools python-smbus -y pip install --upgrade pip pip install Adafruit_BBIO echo "Python & Adafruit BBIO Setup Complete." sleep 1 저장 (Ctrl+O), 엔터, 나가기 (Ctrl+X) 를차례대로눌러서파일을저장한다. 다음명령어를실행시켜서개발환경설정을시작한다. chmod 755 setup.sh./setup.sh 모든설치가끝났으면간단한 LED 예제를실행해보자. 화면에다음과같이 led.py 를작성 한다. 42

nano led.py 아래내용을복사 (Ctrl+C) 후 putty 터미널에마우스오른쪽을클릭해서붙여넣는다. import Adafruit_BBIO.GPIO as GPIO import time GPIO.setup("USR2", GPIO.OUT) while 1: GPIO.output("USR2", GPIO.HIGH) time.sleep(0.5) GPIO.output("USR2", GPIO.LOW) time.sleep(0.5) led.py 를실행시킨다. python led.py PUTTY 에서사용하는리눅스명령어 단축키의미단축키의미 nano [ 파일명 ].py [ 파일명 ] 의파이썬파일생성 Ctrl + C 작업취소 Ctrl + X 나가기 Ctrl + X, y 파일저장 Ctrl + Z 작업종료 shutdown h now 시스템종료 Python [ 파일명 ].py [ 파일명 ].py 프로그램실행 43

자율주행차예제코드 [ 참고자료 ] 소프트웨어관련자료는덕성여자대학교와이즈센터카페에서내려받을수있습니다. http://cafe.naver.com/dswise/36 1 Python 에디터에다음과같은코드를입력하고실행해보자. nano bbcar.py """ * reference: https://github.com/graycatlabs/pybbio * millis(), micros(), delay(ms), delaymicroseconds(us) """ # Import the library: import Adafruit_BBIO.GPIO as GPIO import time # L298N(Motor Driver)4 PIN IN1 = "P8_13" IN2 = "P8_15" IN3 = "P8_14" IN4 = "P8_16" # HC-SR04(Ultrasonic ranging module) 2PIN TrigPin = "P8_12" EchoPin = "P8_11" # GPIO Setup GPIO.setup(IN1, GPIO.OUT) GPIO.setup(IN2, GPIO.OUT) GPIO.setup(IN3, GPIO.OUT) GPIO.setup(IN4, GPIO.OUT) 44

GPIO.setup(TrigPin, GPIO.OUT) GPIO.setup(EchoPin, GPIO.IN) START_TIME_MS = time.time()*1000 def millis(): """ Returns roughly the number of millisoconds since program start. """ return time.time()*1000 - START_TIME_MS def micros(): """ Returns roughly the number of microsoconds since program start. """ return time.time()*1000000 - START_TIME_MS*1000 def delay(ms): """ Sleeps for given number of milliseconds. """ time.sleep(ms/1000.0) def delaymicroseconds(us): """ Sleeps for given number of microseconds > ~30; still working on a more accurate method. """ t = time.time() while (((time.time()-t)*1000000) < us): pass # 모터제어함수 def motor_control(i1, i2, i3, i4): GPIO.output(IN1, i1) GPIO.output(IN2, i2) GPIO.output(IN3, i3) GPIO.output(IN4, i4) # 초음파센서구동을위한펄스신호함수 def pulsein(gpio_pin, value, timeout=400): 45

"""https://community.particle.io/t/pulsein-function-for-hc-sr04-sen sor/27028/2""" now = micros() while GPIO.input(gpio_pin) == GPIO.HIGH: if micros() - now > 38000: return 0 now = micros() while GPIO.input(gpio_pin) == GPIO.LOW: if micros() - now > 38000: return 0 now = micros() while GPIO.input(gpio_pin) == GPIO.HIGH: if micros() - now > 38000: return 0 return micros() - now while True: duration = 0 distance = 0 GPIO.output(TrigPin, GPIO.LOW) delaymicroseconds(3) GPIO.output(TrigPin, GPIO.HIGH) delaymicroseconds(10) GPIO.output(TrigPin, GPIO.LOW) duration = pulsein(echopin, GPIO.HIGH) distance = duration / 58 if distance >= 200 or distance <= 4: print "Out of range" else: print distance, "cm", duration, "us" 46

motor_control(1, 0, 1, 0) # FORWARD # delay(300) # motor_control(0, 1, 0, 1) # BACK # delay(300) # motor_control(1, 0, 0, 0) # RIGHT # delay(300) # motor_control(0, 0, 1, 0) # LEFT # delay(300) # 전방 10cm 이내에물체를감지하면자율주행하도록프로그래밍한다. if distance < 10: print "stop", distance, "cm" motor_control(0, 0, 0, 0) # STOP delay(1000) motor_control(0, 1, 1, 0) # LEFT delay(230) motor_control(0, 0, 0, 0) # STOP delay(500) delay(100) 47

비글본블랙이부팅할때 bbcar.py 를휴대용보조배터리전원을비글본블랙에연결해 nano /lib/systemd/system/bbcar.service 아래내용을복사 (Ctrl+C) 후 putty 터미널에마우스오른쪽을클릭해서붙여넣는다. [Unit] Description=Python Service After=multi-user.target [Service] Type=idle ExecStart=/usr/bin/python /root/bbcar.py [Install] WantedBy=multi-user.target bbcar 서비스를자동실행하도록다음명령어를실행한다. systemctl start bbcar.service systemctl daemon-reload systemctl enable bbcar.service shutdown 명령어를이용하여비글본블랙을종료시킨다. shutdown h now 비글본블랙의외부파란색 LED 가모두꺼졌으면보조배터리를비글본블랙에연결하여전 원을입력한뒤자율주행차주행테스트를시작한다. 48

생각해보기 : 자율주행차주행테스트하기 제작한자율주행차는설계한대로작동하나요? 만약자율주행차가정상적으로작동하지않는다면이유를찾아봅시다. Ÿ 배터리를연결하고전원을켰나요? Ÿ 점퍼케이블을비글본블랙 GPIO에잘연결했나요? Ÿ 프로그래밍에오류는없나요? Ÿ 초음파거리센서가작동하고있나요? 49

정리하기 : 평가및발표 프로젝트진행후성공이나실패에대한자신의생각과의견을나누고발표해봅시다. 1. 어떤싱글보드컴퓨터를사용했나요? 추가로사용해보고싶은개발보드가있나 요? 2. 하드웨어를조립할때어려운점이나개선할점이있나요? 3. 비글본블랙과모터드라이버에인가한전압은몇 V( 볼트 ) 였나요? 50

4. 자율주행알고리즘의수정 보완할사항을적어봅시다. 5. 자율주행차를제작하면서느낀점을적어봅시다. 51

컴퓨터공학과와관련된다양한직업에대해알아봅시다. 생각해보기 : 컴퓨터공학과진학과진로 1. 수업시간에소개되었던컴퓨터공학관련직업들을적어봅시다. 2. 소개된직업중가장관심이가는직업은무엇인가요? 3. 원하는직업을가지기위해서어떻게준비를해야할까요? 52

4. 원하는직업을가지기위해서어떻게준비를해야할까요? 생각다지기 : 나에게어울리는직업은무엇일까? 1. 오늘한체험을통해나에게가장어울리는직업이무엇인지생각해봅시다. 2. 나에게어울리는직업에가까이가기위한방법에대해서생각해봅시다. 3. 앞으로실현가능한목표를정해봅시다. 53

54 [ 메모 ]

[ 메모 ] 55