News Download Tutorial FAQ Reference Buy

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

개요
가속도 센서를 사용하여 스크래치의 스프라이트를 움직이는 예제입니다.
기속도 센서 알아보기
햄스터 로봇에는 다음 그림과 같이 3축 가속도 센서가 있습니다. 가속도 센서의 X축은 로봇의 정면 방향이 양수 값이고 뒷면 방향이 음수 값입니다. Y축은 왼쪽 방향이 양수 값, 오른쪽 방향이 음수 값이며, Z축은 위쪽 방향이 양수 값, 아래쪽 방향이 음수 값입니다.

각 축에 대한 가속도 값은 'x축 가속도', 'y축 가속도', 'z축 가속도' 블록을 사용하여 알 수 있습니다. 프로그램을 구현하기 전에 우선 가속도 센서의 값을 관찰해 보도록 합시다.

우선 햄스터 로봇의 앞을 위로 들면 X축 가속도 값이 음수 값을 가지며 위로 들수록 값의 크기는 커집니다. 반대로 앞을 아래로 내리면 X축 가속도 값이 양수 값을 가지며 아래로 내릴수록 값의 크기는 커집니다. 중력이 땅쪽으로 향하기 때문입니다. 이를 이용하여 우선 스프라이트를 위아래로 움직여 보도록 합시다.
단순하게 움직이기
햄스터 로봇의 앞을 위로 들거나 아래로 내리면서 X축 가속도 값을 관찰해 보면 위로 들었을 때는 0부터 시작해서 -15000 ~ -16000까지 값이 변하고 아래로 내렸을 때는 0부터 시작해서 16000 ~ 18000까지 값이 변함을 알 수 있습니다.
스크래치 화면에서 스프라이트가 세로 방향으로 움직일 수 있는 범위는 -180 ~ 180인데 X축 가속도 값을 -16000 ~ 16000 범위로 생각하고 16000을 -180으로, -16000을 180으로 변환하려면 X축 가속도 값을 약 -89 정도로 나누어주면 됩니다.

프로그램을 실행해 보면 햄스터 로봇의 앞을 위로 들거나 아래로 내렸을 때 스프라이트가 위아래로 잘 움직이기는 하지만 발발 떨면서 움직이는 것을 관찰할 수 있습니다. 왜 그럴까요?
가속도 센서의 값은 굉장히 민감하게 반응하기 때문에 햄스터 로봇을 가만히 두어도 값이 계속 바뀌는 것을 관찰할 수 있습니다.
센서 값 보정하기
가속도 센서 값의 변화를 좀 둔감하게 조정할 필요가 있습니다. 햄스터 로봇을 가만히 두었을 때에도 가속도 값이 500 정도까지 왔다갔다 하는데 16000에 대해 500이면 180에 대해서는 5.625가 됩니다. 즉, 스크래치 화면에서 스프라이트가 6 만큼 움직인다는 뜻입니다.
스크래치 화면에서 대략적으로 10정도의 변화는 무시하도록 합시다. 10으로 나눈 다음 반올림하여 소수점 아래를 버리고 다시 10을 곱하면 됩니다.

가로 방향의 움직임에 대해서도 똑같이 적용해 봅시다. 스크래치 화면에서 스프라이트가 가로 방향으로 움직일 수 있는 범위는 -240 ~ 240이기 때문에 16000을 -240으로, -16000을 240으로 변환하려면 Y축 가속도 값을 약 -67 정도로 나누어주면 됩니다. 마찬가지로 10으로 나눈 다음 반올림하여 소수점 아래를 버리고 다시 10을 곱해주도록 합시다.

햄스터 로봇을 가만히 두었을 때 스프라이트의 움직임이 가끔 튀기도 하고 햄스터 로봇을 위아래, 좌우로 움직일 때 스프라이트가 흔들리는 것을 관찰할 수 있는데 심화 과정에서 좀 더 움직임을 부드럽게 만들어 보도록 하겠습니다.
목차
Hardware
  1. Hamster robot
  2. USB dongle
Preparation for Class
  1. Software installation   Windows · MacOS · Linux
  2. Robot to PC connection
  3. Software execution   Windows · MacOS · Linux
Basic
  1. Standing and singing
  2. My precious ass
  3. Moving an object with the accelerometer
Advanced
  1. Moving an object with the accelerometer
  2. Line follower with one sensor
Previous Lectures
  1. Ordering in sequence
  2. Repeat
  3. Debugging
  4. Repeat until hand found
  5. Move a robot
  6. Use sensors
  7. Use the default board
  8. Braitenberg's robot
Copyright Robot Software Education Institute. All rights reserved.
Please contact prof. Kwang-Hyun Park (akaii@kw.ac.kr) if you have any problem.