로봇 공학 입문: 간단한 센서의 작동 원리 이해하기

로봇이 진짜 로봇 대우를 받으려면, 환경을 감지하고 환경에 영향을 줄 수 있어야 합니다. 그렇기 때문에 센서는 로봇 공학에 매우 중요합니다. 로봇 공학자를 꿈꾸는 꿈나무라면, 로봇을 똑똑하게 만드는 방법을 꼭 이해해야 하죠. 저는 최근에 킥스타터 캠페인을 시작했고, 우리가 판매하는 모든 키트와 함께 무료 센서를 제공하고 있습니다. 캠페인이 끝나기 전에 여기에서 확인하세요!

이 포스트에서는 로봇의 작동을 감각 > 사고> 행동 3가지로 나눠서 안내하겠습니다. 로봇 공학에서 널리 사용되는 분류이며, 로봇을 프로그래밍하는 방법을 이해하기에도 좋은 방식입니다. 이제 시작해 볼까요?

센서 고르기

감지할 대상에 따라 수많은 센서가 있지만, HC-SR04 초음파 거리 센서는 저렴하고 간단하면서도 로봇에 널리 사용되기 때문에 추천할 만 합니다(아두이노 라이브러리도 매우 편리하게 준비되어 있어요).

로봇 모델 정의하기

이 초음파 센서는 거리를 감지할 수 있으니, 충돌을 피하는 간단한 로봇부터 시작해 볼까요? 이 로봇은 앞뒤로 움직일 수 있고, 제자리에서 양쪽으로 회전할 수 있습니다. 로봇의 전면에는 거리 센서가 있구요. 이제 어떤 로봇을 만들지 정의했으니, 어떻게 행동하게 할지 생각해 봅시다.

 

감지, 사고, 행동이란?

감지, 사고, 행동은 많은 로봇 문제를 해결하는 데 사용할 수 있는 의사 결정 루프입니다. 말은 어렵지만 실상 매우 간단합니다. 예를 들어, 지금 만들 로봇은 전방에 장애물이 있는지 감지해야 합니다. 그런 다음 로봇이 앞으로 나아갈 수 있는지, 회전해야 할지, 후진해야 할지를 생각(사고)해야 합니다. 그리고 그 결정에 따라 행동해야 하겠지요. 이와 같은 논리는 모든 로봇에 적용될 수 있으며, 모든 행동과 모든 감지(센서)에 대해서도 적용될 수 있습니다.  

이러한 논리를 로봇 제어를 위한 코드로 바꾸려면, 좀 더 구체적이어야 합니다. 아래와 같이 간단한 로봇 동작을 만들어 봅시다.

  1. 장애물이 3cm 이내에 있는지 감지
  2. 장애물이 없다면 앞으로 전진
  3. 장애물이 있으면 뒤로 후진

이 정도는 코드로 변환하기가 매우 쉽겠지요. 그런데 실제로 이를 코드로 만들어서 돌려 보면, 로봇이 벽을 앞두고 계속 제자리에서 전진, 후진을 반복하게 됩니다. 3cm 앞에 벽이 감지될 때까지 전진하다가, 벽을 감지하면 후진하고, 또 감지될 때까지 전진을 반복하게 되는 것이지요. 그러니, 아래와 같이 행동을 수정합시다.

  1. 장애물이 3cm 이내에 있는지 감지.
  2. 장애물이 없다면 앞으로 전진.
  3. 장애물이 있으면 왼쪽으로 회전한 후, 1단계로 복귀.

이렇게 하면 로봇이 3cm 이내에 벽이 없는 방향을 찾아내서 전진할 수 있게 됩니다.

이제, 로봇이 장애물을 피하도록 돕는 데 실제로 적용할 수 있는 감각, 생각, 행동 모델을 만들었습니다. 물론 아주 정교한 모델은 아니기에, 장애물 회피를 향상시키기 위한 복잡한 요소를 얼마든지 추가할 수 있습니다.  

간단한 로봇이라 할지라도, 매우 복잡한 감지, 사고, 행동 모델을 통해 굉장히 스마트한 행동이 가능하도록 설계할 수 있습니다. 그리고 이것은 로봇의 본질이기도 합니다. 진짜 스마트함은 소프트웨어에 들어있다는 점이지요!

위에서 설계한 논리대로면 로봇이 우회전을 한 번 해도 되는 상황에서 좌회전을 3번 해야 하기 때문에 비효율적입니다. 그럼, 위에서 만든 3단계에 이어 4단계를 더해서 아래와 같이 로봇의 행동을 수정합시다.

  1. 장애물이 있으면 왼쪽으로 회전한 다음 1단계로 복귀.
  1. 장애물이 3cm 이내인지를 로봇이 감지.
  2. 장애물이 없다면 앞으로 전진.
  3. 장애물이 있으면 왼쪽으로 회전한 후 다시 장애물을 감지.
  4. 장애물이 없는 경우 전진하고, 루프를 리셋.
  5. 장애물이 있으면 오른쪽으로 회전한 후 다시 장애물을 감지.
  6. 장애물이 없는 경우 전진하고, 루프를 리셋.
  7. 장애물이 있으면 장애물이 없을 때까지 오른쪽으로 계속 회전.

이제 우리 로봇은 양쪽 방향을 모두 검사하며 벽이 있는지 확인합니다. 즉, 로봇이 더 효율적으로 움직이게 됩니다. 간단한 행동이지만, 설명하기가 점점 복잡해지지요? 하지만, 이러한 행동을 일련의 감각, 사고, 행동 루프로 생각하면 이해가 훨씬 쉬워집니다!

자, 지금까지 감지, 사고, 행동의 아주 간단한 예를 알아보고 장애물 회피 프로그램을 만들어 보았습니다. 이러한 행동을 간단하게 코드로 변환해서 로봇을 가지고 놀 수 있겠지요? 물론, 감지 거리가 더 긴 센서와 다양한 유형의 다른 센서를 추가하여 동작을 더욱 정교하게 만들 수도 있습니다. 감각, 사고, 행동이라는 분류법만 잘 기억하세요. 그럼 정교한 동작도 얼마든지 만들 수 있을 테니까요. 무료 센서가 포함 된 로봇 키트를 찾고 있다면 저희 킥스타터 페이지를 확인하세요!

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.