- 다양한 환경에 반응하고 명령 수행하기
- 벽을 따라가며 미로 탐색하기
- 다이얼의 입력을 그림 형태로 화면에 출력하거나, 센서와 데이터 값을 화면에 보여 주기
- 간단한 게임을 통해 프로그램에서 배열을 사용하는 방법, 예를 들어 점수 기록하기 등의 기법을 경험해 보기
- 산업 현장에서도 사용되는 알고리즘인 PID 제어 개념을 이용하여 선 따라가기
화려한 블록 기반 인터페이스를 갖춘 레고 마인드스톰 EV3 프로그래밍 언어는, 익숙해지면 누구나 지능형 로봇을 손쉽게 프로그래밍할 수 있지만, 처음 접하는 사람은 프로그래밍 언어가 갖고 있는 복잡함과 어려움 때문에 두려움에 빠질 수 있다. 이 책은 이러한 두려움을 해결해 주기 위해 초보자 친화적인 내용과 상세한 이미지로 구성되어 있다.
이 책을 통해 프로그래밍 블록과 데이터 와이어, EV3 프로그램이 다루는 함수와 변수 및 파일을 내부에서 유기적으로 연결하는 방법을 배우게 되며, 이 과정에서 프로그래밍 언어에서 중요하게 생각되는 여러 가지 개념들과 습관, 메모리 관리와 디버깅 기법 등 많은 것을 경험하게 될 것이다. 이 책에서 배우는 내용은 레고 마인드스톰뿐만 아니라 다른 프로그래밍 언어와 제어 시스템에도 적용되는 개념들이므로 프로그래밍에 관심을 두고 있다면 큰 도움이 될 것다. 이 책은 로봇 모형을 제작하는 데 시간을 소모하지 않도록 기본 로봇을 최대한 활용하는 형태로 장과 예제가 구성되어 있으며, 단계별로 예제를 실습하며 다음과 같은 내용을 배울 수 있다.
Contents
1장 레고 그리고 로봇: 굉장한 조합
레고 마인드스톰 EV3
레고 마인드스톰 EV3 세트
레고 마인드스톰 EV3 소프트웨어
소프트웨어, 펌웨어, 하드웨어
예술 그리고 공학
좋은 프로그램이란?
이 책에서 배울 점
레고 마인드스톰 온라인 커뮤니티
다음 장에서 다룰 내용
2장 EV3 프로그래밍 환경
마인드스톰 소프트웨어 살펴보기
EV3 프로그램 만들기
블록의 일반적인 구조
우리의 첫 프로그램
프로그램 실행하기
프로젝트 속성
우리의 두 번째 프로그램
주석
컨텍스트 도움말
마무리
3장 트라이봇: 테스트용 로봇
트라이봇의 구성 부품
모터와 바퀴 구동부 조립하기
캐스터 바퀴 조립하기
EV3 브릭 장착하기
적외선 또는 초음파 센서 장착하기
컬러 센서 장착하기
자이로 센서 장착하기
터치 센서 범퍼 만들기
케이블 연결하기
컬러 센서의 응용 배치
적외선 센서/초음파 센서의 응용 배치
리프트 암 조립하기
마무리
4장 움직이기
EV3 모터
조향모드 주행 블록
포트 보기
EV3 인텔리전트 브릭의 보기 메뉴
ThereAndBack(갔다 오기) 프로그램
AroundTheBlock(사각형으로 움직이기) 프로그램
탱크모드 주행 블록
라지 모터 블록과 미디엄 모터 블록
리프트 암
모터 반전 블록
CoastTest(미끄러짐 테스트)
추가적인 탐구
마무리
5장 센서
센서의 활용
터치 센서
BumperBot(범퍼봇) 프로그램
컬러 센서
IsItBlue(파란색 판별) 프로그램
LineFinder(선 찾기) 프로그램
적외선 센서와 리모컨
BumperBotWithButtons 프로그램
초음파 센서
DoorChime(초인종) 프로그램
자이로 센서
GyroTurn(자이로 회전) 프로그램
모터 회전 센서
추가적인 탐구
마무리
6장 프로그램의 흐름
스위치 블록
LineFollower(길 따라가기) 프로그램
RedOrBlue(색상 감지) 프로그램
루프 블록
루프 인터럽트 블록
추가적인 탐구
마무리
7장 WallFollower 프로그램: 미로 탐색
의사코드
미로를 풀고 나가는 방법
프로그램 요구사항
가정
초기 디자인
직선 벽 따라가기
모퉁이 돌기
뚫린 방향으로 이동하기
최종 테스트
추가적인 탐구
마무리
8장 데이터 와이어
데이터 와이어란 무엇인가?
GentleStop(부드럽게 멈추기) 프로그램
데이터 와이어 사용 팁
SoundMachine(소리출력장치) 프로그램
데이터의 유형 이해
주파수와 음량 표시
추가적인 탐구
마무리
9장 데이터 와이어와 스위치 블록
스위치 블록의 값 모드
GentleStop 프로그램의 재구성
데이터를 스위치 블록에 전달하기
센서 블록을 사용할 때의 장점
스위치 블록 밖으로 데이터 전달
LineFollower 프로그램의 단순화
추가적인 탐구
마무리
10장 데이터 와이어와 루프 블록
논리 모드
루프 인덱스
SpiralLineFinder(나선형 길 따라가기) 프로그램
향상된 회전을 위해 자이로 센서 활용
추가적인 탐구
마무리
11장 변수
변수 블록
RedOrBlueCount(색상을 검사하고 횟수 보여 주기) 프로그램
프로젝트 속성 페이지에서 변수 관리하기
비교 블록
LightPointer(광원 가리키기) 프로그램
상수 블록
추가적인 탐구
마무리
12장 마이 블록
마이 블록 만들기
마이 블록 팔레트
마이 블록 수정하기
LogicToText 마이 블록
DisplayNumber(숫자값 출력) 마이 블록
마이 블록의 파라미터 바꾸기
변수와 마이 블록
추가적인 탐구
마무리
13장 수학과 논리
수학 블록의 고급 모드
비례식 LineFollower
EV3 타이머
DisplayTimer(타이머 출력) 프로그램
올림/내림 블록
랜덤 블록
BumperBot에 임의의 회전 추가하기
논리 연산 블록
BumperBot에 논리 기능 추가하기
범위 블록
TagAlong(거리 유지) 프로그램
GyroPointer(방향 유지) 프로그램
추가적인 탐구
마무리
14장 EV3 브릭 상태 표시등, 브릭 버튼, 디스플레이
EV3 브릭 버튼
PowerSetting(파워 설정) 프로그램
브릭 상태 표시등
ColorCopy(색 따라하기) 프로그램
디스플레이 블록
Eyes(왕눈이) 프로그램
EV3 화면에 모양 그리기
EV3Sketch(EV3 그림 그리기) 프로그램
추가적인 탐구
마무리
15장 배열
배열에 대한 개념 및 용어
배열 만들기
배열 연산 블록
ArrayTest(배열 테스트) 프로그램
ButtonCommand(버튼 조종기) 프로그램
ColorCount(색상 개수) 프로그램
MemoryGame(기억력 게임) 프로그램
추가적인 탐구
마무리
16장 파일
파일 접속 블록
MemoryGame 최고 점수 저장하기
FileReader(파일 읽기) 프로그램
ColorCount 프로그램에 메뉴 추가하기
메모리 관리
추가적인 탐구
마무리
17장 데이터 로깅
데이터 수집과 EV3
현재 파워값 조사하기
SteeringTest(조향 테스트) 프로그램
VerifyLightPointer(광원 가리키기 검증) 프로그램
데이터의 양 조절
추가적인 탐구
마무리
18장 멀티태스킹(다중작업)
여러 개의 시작 블록
프로그램 중지 블록
바쁜 루프 예방하기
DoorChime 프로그램에 표시등 추가하기
프로그램 흐름의 규칙 이해하기
두 개의 시퀀스 동기화
문제 상황 예방하기
추가적인 탐구
마무리
19장 PID 제어를 이용한 LineFollower 프로그램
PID 제어기
비례 제어
센서값의 최솟값과 최댓값 수집
센서값과 목표값의 정규화
비례 제어 LineFollower 개선하기
PID 제어 적용하기
추가적인 탐구
마무리
부록 A NXT와 EV3의 호환성
부록 B EV3 웹사이트
부록 C PID 제어에 대한 수학적 고찰
Author
테리 그리핀,공민식,정재호
다양한 시스템 제어 소프트웨어를 만드는 데 20년 이상 몸담아 온 전문적인 소프트웨어 엔지니어다. 매사추세츠 대학교에서 컴퓨터공학으로 석사학위를 받았으며, 대학생 및 성인을 대상으로 한 프로그래밍 교육 경험도 있다. 오랫동안 레고를 사랑해 온 그는 중학교에서 수학과 과학을 가르치는 그의 부인이 교실에서 흥미로운 로봇들을 활용하는 데 도움을 주기 위해 《The Art of LEGO MINDSTORMS NXT Programming》을 저술하였다. 현재는 칼 자이스(Carl Zeiss)의 이온 현미경 혁신센터에서 하전입자 현미경을 제어하는 소프트웨어 개발에 힘쓰고 있다.
다양한 시스템 제어 소프트웨어를 만드는 데 20년 이상 몸담아 온 전문적인 소프트웨어 엔지니어다. 매사추세츠 대학교에서 컴퓨터공학으로 석사학위를 받았으며, 대학생 및 성인을 대상으로 한 프로그래밍 교육 경험도 있다. 오랫동안 레고를 사랑해 온 그는 중학교에서 수학과 과학을 가르치는 그의 부인이 교실에서 흥미로운 로봇들을 활용하는 데 도움을 주기 위해 《The Art of LEGO MINDSTORMS NXT Programming》을 저술하였다. 현재는 칼 자이스(Carl Zeiss)의 이온 현미경 혁신센터에서 하전입자 현미경을 제어하는 소프트웨어 개발에 힘쓰고 있다.