990 likes | 1.38k Views
ROBOTC 활용하기 - 전국 전문대학교 로봇대회 1 차 기술 세미나 -. 2013. 5. 25. - Index -. • 제 1 장 LEGO MINDSTORMS Education • 제 2 장 ROBOTC 설치 및 기본 로봇 조립 제 3 장 ROBOTC 프로그램의 이해 제 4 장 ROBOTC 기초 프로그래밍 ( 모터 구동 프로그래밍 ) 제 5 장 ROBOTC 제어문 (While, if, if–else) 제 6 장 라인 로봇 (Light Sensor 사용 ).
E N D
ROBOTC 활용하기 - 전국 전문대학교로봇대회 1차 기술 세미나 - 2013. 5. 25.
- Index - • • 제 1장 LEGO MINDSTORMS Education • • 제 2장ROBOTC 설치 및 기본 로봇 조립 • 제 3장 ROBOTC 프로그램의 이해 • 제 4장 ROBOTC 기초 프로그래밍(모터 구동 프로그래밍) • 제 5장 ROBOTC 제어문(While, if, if–else) • 제 6장 라인 로봇 (Light Sensor 사용)
- NXT - • NXT는 LEGO MINDSTORMS Education Set의 컨트롤러 • 프로그래밍이 가능한 인텔리전트 브릭 • 주변환경을 인식하고, 인터페이스 할 수 있는 • 다양한 센서와 전동기를 연결하여 데이터를 수집 • 및 테스트 할 수 있는 최고의 장비
RCX에 이은 LEGO사의 차세대 로봇 컨트롤러 32bit ARM7 Processor / 256k Flash / 64k Ram 입력포트 4 / 출력포트 3 USB / Bluetooth 통신 지원 60*100 Graphic LCD / 스피커 / 충전식 배터리 지원 엔코더 내장 모터 / 초음파 / 사운드 / 터치 / 빛 센서 - NXT-
기존 LEGO RCX용 디바이스 호환 엔코더 내장형 서보 모터 충전식 리튬폴리머 배터리 터치 센서 그래픽 LCD 및 블루투스 무선통신 내장 USB 2.0 지원 사운드 센서 초음파 센서 라이트 센서 - 사용할 수 있는 Sensor/Actuator -
Output USB LCD Speaker Input - NXT의 외형 - 꺼진 상태 : 전원 켜기 켜진 상태 : 가운데 메뉴 실행 좌측의 메뉴로 넘어감 우측의 메뉴로 넘어감 취소 / 최상위 메뉴에서 끄기
- ROBOTC 설치하기 - http://www.robotc.net에 접속하여 RobotC for Lego 프로그램과 드라이버를 download 받는다. 인터넷이 되지 않을 경우 USB 메모리에서 설치파일을 받는다.
- 교육용 로봇 조립 - 대회 공식 사이트에 공지된 이미지를 참조하여, 다음 로봇 조립
- ROBOTC 소개 - • RobotC는 카네기멜론 대학에 서 만든 ROBOT 전용프로그래 밍언어로, LEGO Mindstorms RCX와 NXT를 지원 • C언어를 기반으로 하여 C언어 의 문법 체계를 90% 동일 • C언어를 공부한 학생과 이제 시 작하는 학생들 모두 쉽게 배울 수 있음
- Quick Start Guide- • 홈페이지 주소 http://www.robotc.net/support/nxt/
- ROBOTC 실행하기 - • 바탕화면의 ICON을 클릭하여 실행 • Activate ROBOTC for Mindstorms= 정품 인증 모드(시리얼 키를 입력 후 실행) • Evaluate ROBOTC for Mindstorms = 30일 평가판 모드(시리얼 키 없이 실행)
- 전체적인프로그램 사용법 - • Port A,C에 연결되어 있는 모터를 50의 파워로 1초간 전진하는 프로그램 • main() 함수 : 프로그램 내에 오직 1개만 사용할 수 있는 특별한 함수로서 • 바디({..} )에 작성된 내용을 시작/종료 한다.
- ROBOTC 메뉴[File] - • New File (Ctrl + N) : 새로운 문서 작성 • Open and Compile : 불러오기/컴파일을 동시 실행 • Open Sample Program : 샘플 프로그램을 불러오기 • Save(Ctrl+S) : 작성된 소스를 RobotC파일로 저장 • Save As : 다른 이름으로 저장 • Print(Ctrl+P) : 작성된 프로그램을 인쇄 • Print Preview : 인쇄한 프로그램 미리보기 • Page Setup : 현재 작성된 프로그램의 출력페이지를 • 설정
- ROBOTC 메뉴[Edit] - • Undo Typing (Alt+Backspace/Ctrl+z) • : 실행취소, 되돌리기 기능 • Can’t Redo (Ctrl+Z) • : 실행 취소된 것을 되돌리기 기능 • Cut (Shift+Delete) : 잘라내기 • Copy (Ctrl+C) : 복제하기 • Paste (Ctrl+V) : 붙여넣기
- ROBOTC 메뉴[View] - • • Source : 현재 사용 중인 프로그램 • Function Explorer View : 함수 도움말 창 • 실행 • Compile Errors View : Error 내용 창 • Font Increase (Ctrl +‘ +’) : 폰트 사이즈 • 증가 • • Font Decrease (Ctrl +‘ -’) : 폰트 사이즈 • 감소
- ROBOTC 메뉴[Robot] - • Download Program(F5) : 소스코드 컴파일 후 NXT 로봇으로 프로그램 다운로드 • Compile Program(F7) : 소스코드 컴파일(프로그램 다운로드 안함) • Debugger : 프로그램의 실행 또는 단계적인 실행을 할 수 있다. Refresh Rate를Continuous를 클릭하면 NXT에 있는 모터 및 센서의 값들을 계속적인 모니터링이 • 가능하다.
- ROBOTC 메뉴[Robot]-3 - • Motors and Sensors Setup : 모터와 센서를 어떤 포트에 어떤 별명(Alias)을 사용할 지를 결정하기 위해 Motors and Sensors Setup을 이용한다. 프로그램 작성시 모터 및 센서에 대한 변수 이름을 입력하면 코드를 자동으로 생성한다.
- ROBOTC Firmware download - • Download Firmware : 펌웨어 다운로드 기능을 이용하여 확장자가 “.rfw”인 파일을 다운로드 한다. 다운로드가 완료되면 ”Firmware download completed”라는 메시지가 나타난다.
- ROBOTC 프로그램 규칙 - ▪ ROBOTC는 표준 C언어 프로그램 규칙을 따르는 text기반의 프로그램 언어이다. ▪ 사용자가 프로그램을 작성하면서 파랑색이나 보라색으로 글씨가나오면 ROBOTC가 그 단어를 매우 중요한 단어로 인식한다는 뜻이고 ROBOTC가 인 식하는 키워드(keyword)는 자동으로 색상이 결정되어 표시된다. ▪ ROBOTC 컴파일러는 대문자와 소문자를 엄격하게 구분한다. ▪ 프로그램의 실행 순서는 1번 줄부터 순차적으로 실행된다. ▪ 스페이스(space), 탭(tab)은 프로그램의 실행에 영향을 주지 않지만 프로그램 의 가독성(읽어 낼 수 있는 정도)을 높이기 위해서 적절한 사용을 해야 한다. ▪ 세미콜론(‘;’)은 모든 ROBOTC 프로그램 문장의 끝을 알려준다. ▪ 프로그램을 작성할 때는 반드시 적어도 하나의 main() 함수를 갖고 있어야 한다. Task main() 함수 안에 실행하고자 하는 프로그램을 기록하면 된다
- 변수 선언 유의 사항 - 변수 선언 시 유의 사항 • 대문자(A~Z), 소문자(a~z), 숫자(0~9), 밑줄문자‘ _ ’를 사용한다. • 변수명은 숫자로 시작할 수 없다. • 변수명은 기본 예약어 또는 함수명을 사용할 수 없다. • 변수명은 대·소문자를 다르게 구분한다. • 변수명은 한글로 사용할 수 없다.
- ROBOTC 자료형(데이터형)- • RobotC의 자료형은 프로그램에서 처리하고자 하는 자료의 형태를 의미 • 자료형은 NXT 메로리 영역의 크기를 결정
- ROBOTC 자료형(정수형)- • 정수형 변수 • 정수형 변수는 RobotC프로그램 작성 중 가장 많이 사용하는 데이터형으로서 정수 형태의 자료를 표현하기에 적당하다. 선언 방법은 int라는 키워드(keyword)를 작성하고 뒤에 변수명을 사용하면 된다. %d는 10진수 출력을 의미한다. • nxtDisplayTextLine(LCD 위치, “출력 내용”, 출력 변수명) : • NXT LCD 창에 지정된 형식으로 변수 값을 출력(LCD의 글 위치는 0~7까지) • PlaySound(내장 사운드 명) : 미리 정해져 있는 내장 사운드를 재생
- ROBOTC 자료형(실수형)- • 실수형 변수 • 실수형 변수는 아주 큰 수나 아주 작은 수를 표현해야 하거나, 소수점을 포함하는 실수 자료를 표현 할 때 사용된다. 실수형 변수를 출력할 때“ %f”를 사용한다. 특별히 소수점 아래에 자릿 수를 지정하고 싶을 때는 위의 예처럼“ %.2f”처럼 표현하고 이것은 소수 셋째 자리에서 반올림하여 소수점 2자리로 표현하라는 것이다.
- ROBOTC 자료형(문자형)- • 문자형 변수 • RobotC에서 문자형 변수는 8비트의 영역을 차지하고 있다. 주로 ASCII문자를 표현하기 위해서 사용한다. • 위의 예제는 문자 ‘A’에 해당하는 아스키 코드 값을 출력하고, x변수에 해당하는 문자를 출력하는 프로그램이며, 여기서“ %d”정수형 변수의 값을 출력하고“ %c”는 문자를 표현하는데 사용한다.
- ROBOTC 자료형(지역변수)- • 지역변수(Local Variables) • 함수의 내부에 정의된 변수이다. 지역 변수들은 함수의 실행이 시작될 때 메모리에 만들어지고, 함수가 종료될 때 메모리로부터 소멸된다.
- ROBOTC 연산자(논리연산자)-2- • AND • 조건 값이 참이 아니므로 실행되지 않는다. • 11번 모터가 0.1초 동안 회전한다. • NOT
- 로봇을 2초 동안 전진시켜라 - • NXT 서보 모터 파워는 건전지의 양에 따른 상대적인 비율로 -100 ~ +100%까지 • 파워 레벨을 조정 가능
각 명령에 따른 회전 방식 Swing Turn Point Turn Curve Turn
- 도전 과제 I- • 2초 전진 후 90도 회전하고 2초 전진
if(조건식) 문장1 - if 제어문 함수 설명 - • 조건식이 ‘True’인지 ‘False’ 인지 판정 • ‘False’일 경우에 대한 고려 없이 ‘True’ 일 경우 문장 1을 실행 • 한 조건에 대해 여러 문장 실행 시 문장들을 • { }으로 묶어서 사용
- if 제어문 예제 - • random 함수 이용 난수값 생성(0-99) • if 함수를 이용하여 난수값이50보다 크면 1초간 직진 • 직진 후 사운드 출력
- if-else 제어문 함수 설명- if(조건식) 문장1 else 문장2 • 조건식이 ‘True’인지 ‘False’ 인지 판정 • ‘True’ 일 경우 문장 1 실행 • ‘False’ 일 경우 문장 2 실행 • 한 조건식에 대해 ‘True’ 일 경우와 ‘False’ 일 경우를 나누어 제어할 때 사용
- if-else 제어문 예제 - • random 함수 이용 난수값 생성(0-99) • if 함수 이용 값이 50보다 크면 우회전, 값이 같거나 작으면 좌회전 • 조건 식 동작 후 사운드 출력
- while 제어문 함수 설명- while(조건식) 반복문장 • 조건식이 ‘True’이면 반복문장 계속 실행 • 그 후 검사하여 ‘False’이면 while 제어 문을 빠져 나와 다음 문장 실행 • 조건 식에 ‘True’ 또는 ‘1’ 을 넣으면 무한반복
- while 제어문 예제 - • 0.5초간 전진과 후진을 10번 동안 반복(0-9) • i++ 는 i = i + 1 을 의미 한다. • 단, while 문을 사용 • 동작 후 사운드 출력
- do-while 제어문 함수 설명 - do 반복문장 while(조건식) • 반복 문장을 일단 한번 실행 한 후 while 제어문의조건 식 검사 • 조건 식의 값이 처음부터 거짓이라도 반복 문장은 한번 실행 • 위의 내용을 빼고는 while과 동일
- 빛 센서(Light Sensor) - • 전방에 간접조명용 붉은LED와 Photo Transistor가 내장되어 있으며, 명암을 구분 • 지면과 5mm가 가장 적합 • 조명의 켜짐 유무에 따라 액티브 모드/인액티브 모드를 가지고 있다. • 측정 값은 0~100%으로 표현
- 문턱 값(Threshold) - • 어두운 영역과 밝은 영역을 어떻게 구분할 것인가?
- 빛 센서셀프 테스트 - • 빛 센서를 3번에 연결 • NXT를 켜고 View 를 선택 ( ) • 3. 반사광 측정하기 • - 반사광(Reflected light) 아이콘을 선택 • - 포트 3을 선택 • 주변광 측정하기 • - 주변광(Ambient light) 아이콘을 선택 • - 포트 3을 선택
- 빛 센서 설정하기 - • Port S3의 Name에 light를 입력한다. • (편의상 light라고 입력하였으나 다른 이름도 가능하다.)