다운로드 교육자료 문제해결 레퍼런스 구입방법

교육 자료 : 스크래치 : 가속도 센서로 스프라이트 움직이기

개요
가속도 센서를 사용하여 스크래치의 스프라이트를 움직이는 예제입니다.
필터 만들기
기초 과정에서 가속도 센서를 사용하여 스프라이트를 움직일 때 스프라이트의 움직임이 흔들리는 것을 관찰할 수 있었는데 좀 더 부드럽게 움직이도록 만들어 봅시다.
원리는 간단한데 가속도 센서의 값이 민감하게 변하기 때문에 평균 값을 구하여 사용하는 것입니다. 하지만 가속도 센서 값을 어느 정도 모아서, 예를 들어 100개를 모아서 평균 값을 계산하면 100개가 모여졌을 때만 스프라이트를 움직일 수 있기 때문에 움직임이 뚝뚝 끊어져 보일 수가 있습니다.
따라서 예전의 값은 버리고 새로운 값을 넣어서 매번 평균 값을 구하는 방법을 사용합니다. 이를 이동 평균(Moving Average)이라고 합니다. 이동 평균을 구하는 방법은 여러 가지가 있는데 가장 간단한 방법으로 해보겠습니다.
우선 가속도 센서 값을 모을 수 있는 장소가 필요합니다. 스크래치의 리스트를 하나 만들어 봅시다. X축 가속도 센서의 값들을 가지고 있는 리스트의 이름은 x-values라고 하겠습니다.

x-sum은 X축 가속도 센서 값의 평균을 구하기 위해 합을 저장하는 변수입니다. 프로그램을 시작하면 x-sum 값은 0으로 하고, x-values 리스트의 내용을 모두 비웁니다. X축 가속도 센서 값 하나를 얻어서 리스트에 추가하고 x-sum에 더합니다. 센서 값 20개로 평균을 구할 것이어서 리스트의 항목 수가 20개보다 많으면 제일 먼저 리스트에 넣었던 값을 x-sum에서 빼고 리스트에서도 삭제합니다. 이렇게 하면 매번 가장 최근의 가속도 센서 값 20개가 리스트에 들어 있습니다. 평균을 구하기 위해 x-sum을 리스트의 항목 수로 나눕니다. 가속도 센서 값의 범위 16000 ~ -16000을 화면에서 세로 방향으로 스프라이트가 움직일 수 있는 범위 -180 ~ 180으로 변환하기 위해 -89로 나눕니다.
프로그램을 실행해 보면 스프라이트의 움직임에 약간 지연이 있습니다. 평균을 구하기 때문에 이전의 가속도 센서 값이 영향을 미치기 때문입니다. 리스트에 가지고 있는 항목 수를 줄이면 지연 시간은 줄어 들지만 적은 개수의 센서 값으로 평균을 구하기 때문에 민감한 센서 값의 변화를 덜 둔감하게 합니다. 반대로 리스트에 가지고 있는 항목 수를 많게 하면 센서 값의 변화는 둔감하게 만들지만 지연 시간이 증가합니다. 리스트의 항목 수를 적절하게 조정해야겠습니다.
센서 값 좀 더 보정하기
기초 과정에서 사용한 방법을 같이 사용해 보도록 합시다. 지연 시간을 줄이기 위해 리스트의 항목 수는 10개로 하겠습니다. 평균 값을 5로 나눈 후 반올림하여 소수점 아래를 없애고 5를 곱하도록 합시다.

가로 방향의 움직임에 대해서도 똑같이 적용해 봅시다.
목차
수업 준비
  1. 하드웨어 살펴보기
  2. 햄스터 · 햄스터S · USB 동글 PDF · PPT
  3. 소프트웨어 설치
  4. 윈도우 · 맥OS · 리눅스 PDF · PPT
  5. 로봇과 컴퓨터 연결
  6. PDF · PPT
  7. 소프트웨어 실행
  8. 윈도우 · 맥OS · 리눅스 PDF · PPT
기초
  1. 물구나무 서서 노래하기
  2. 내 소중한 엉덩이
  3. 가속도 센서로 스프라이트 움직이기
심화
  1. 가속도 센서로 스프라이트 움직이기
  2. 센서 한 개를 이용한 라인 트레이서
예전 것들
  1. 순서대로 명령하기 (순차)
  2. 횟수 반복
  3. 디버깅
  4. 손 찾을 때까지 반복
  5. 로봇 움직이기
  6. 센서 사용하기
  7. 기본 보드판 사용
  8. 브레이튼버그의 로봇
Copyright 로봇SW교육원 All rights reserved.
어려운 일이 있으면 광운대학교 로봇학부 박광현 교수(akaii@kw.ac.kr)에게 연락하세요.