임베디드랜드




[로봇 연결하기 02] 간단히 로봇 움직여 보기

 

작성자: Microsoft Robotics Group 김영준 수석 (yjoonkim@microsoft.com)

 

이번 강좌에서는 SimpleDashboard를 사용하지 않고 간단한 VPL 프로그램을 통해 로봇을 움직여 보는 방법을 소개합니다.

 

이번 강좌에서 소개하는 내용을 이해하면 다음 번 강좌에서 소개하는 Direction Dialog 액티버티와 결합하여 버튼으로 로봇을 조종하는 VPL 애플리케이션을 쉽게 완성할 수 있습니다. 따라서 이번 강좌에서는 실제 로봇의 움직임을 어떠한 원리로 제어하는 지에 대해 이해를 하시면 될 것 같습니다.

 

VPL 프로그램을 실행한 후, 이전 강좌에서 사용되었던 SimulatedGenericDifferentialDrive 액티버티를 추가합니다. 그리고 두 개의 Data 액티버티와 한 개의 Join 액티버티를 추가한 후 아래와 같이 연결하고 값을 설정합니다.

 

 

사용자 삽입 이미지

그림 1

 

자 이때, Join 액티버티와 SimulatedGenericDifferentialDrive 액티버티를 연결하면 아래와 같이 Connections 창이 실행되며, 이 창에서 아래와 같이 SetDrivePower 항목을 선택합니다.

 

 

사용자 삽입 이미지

그림 2

 

뒤 이어서 실행되는 Data Connections 창에서는 아래와 같이 각각 msg msg0 항목을 선택합니다.

 

 

사용자 삽입 이미지

그림 3

 

그 다음로는 이제 SimulatedGenericDifferentialDrive에 시뮬레이션 로봇을 지정하는 것입니다. 이 방법은 이전 강좌에서 소개하였으므로 이번에는 별도로 설명을 하지 않도록 하겠습니다. 여러분들이 LEGO 또는 P3DX 로봇 중 한 가지를 선택해서 연결하시면 됩니다.

 

SimulatedGenericDifferentialDrive 액티버티를 마우스로 클릭한 후 화면 우측의 Properties 창에서LEGO 시뮬레이션 로봇을 선택 한 결과는 아래와 같습니다.

 

 

사용자 삽입 이미지

그림 4

 

자 이제 위의 다이어그램을 저장한 후 실행시켜 봅니다. 어떤 가요?

 

실행시키자 마자 시뮬레이션 상의 로봇이 빠르게 앞으로 전진해 가는 것을 볼 수 있을 것입니다.

 

 

사용자 삽입 이미지

그림 5

 

혹시라도 로봇이 너무 빨리 움직여서 로봇이 금방 사라져 버릴 수 있으므로 아래와 같이 다이어그램을 수정해서 실행후 5초가 지나면 로봇이 움직이도록 수정해 봅니다. 물론 로봇에 전달되는 값도 1.0에서 0.5로 수정하여 속도도 더 줄여 봅니다.

 

 

사용자 삽입 이미지

그림 6

 

위의 다이어그램을 수행하면, 실행 후 5초 후에 로봇이 움직이기 시작하며, 이전 경우보다 좀 더 느리게 시뮬레이션 상의 로봇이 움직이는 것을 볼 수 있을 것입니다.

 

위의 예에서 사용된 타이머는 그저 좀 느리게 결과를 확인하기 위해 추가한 것일 뿐, 항상 필요한 액티버티는 아니므로 그냥 참고적으로만 이해하시면 될 것 같습니다.

 

MSRS를 지원하는 로봇들은 모두 SetDrivePower 라는 인터페이스를 지원하도록 되어 있으며, 이 인터페이스에서는 왼쪽 모터의 파워값과 오른쪽 모터의 파워값을 입력받도록 되어 있습니다.

 

따라서 double 형태의 타입을 가지는 값을 왼쪽과 오른쪽 모터의 값으로 해서 지정하면 로봇을 움직이게 되는 것입니다. 지정하는 값은 통상 -1.0 ~ +1.0 사이의 값을 지정하며, 해당 로봇에 따라 값이 달라질 수 있습니다. 통상 MSRS에서 제공되는 시뮬레이션 로봇들은 위의 값의 범위로 제어가 됩니다.

 

위의 예에서는 왼쪽 바퀴와 오른쪽 바퀴의 모터의 값을 동일하게 0.5로 주었기 때문에 로봇이 앞으로 전진하게 되는 결과가 만들어 졌습니다.

 

만약 로봇을 뒤로 이동시키려면 어떻게 값을 주어야 할까요?

 

. 값을 모두 -0.5로 지정하면 로봇이 뒤로 이동하는 것을 보실 수 있을 겁니다.

 

 

사용자 삽입 이미지

그림 7

 

이번에는 로봇을 왼쪽으로 돌게 하려면 어떻게 해야 할까요?

 

. 왼쪽 모터의 값을 -0.5로 하고 오른쪽 모터의 값을 +0.5로 하면 로봇이 왼쪽으로 이동을 하게 될 겁니다. 아래와 값을 수정한 후에 한번 실행시켜 보시기 바랍니다.

 

 

사용자 삽입 이미지

그림 8

 

로봇을 오른쪽으로 돌게 하는 것은 굳이 설명을 드리지 않겠습니다.

 

이번에는 제자리에서 회전하지 않고 앞으로 전진하면서 오른쪽 방향으로 로봇이 나아가게 하려면 어떻게 해야 할까요?

 

, 아래와 같이 왼쪽 바퀴의 값을 0.5, 그리고 오른쪽 바퀴의 값을 0.3으로 설정한 후 한번 실행시켜 보시기 바랍니다.

 

 

사용자 삽입 이미지

그림 9

 

위의 다이어그램을 실행시키면 로봇이 오른 쪽 방향으로 원을 그리면 움직이게 되는 것을 확인할 수 있을 것입니다.

 

다시 한번 설명을 드리는 부분이지만, 위의 예에서 사용된 타이머는 그저 좀 느리게 결과를 확인하기 위해 추가한 것일 뿐, 항상 필요한 액티버티는 아니므로 그냥 참고적으로만 이해하시면 될 것 같습니다.

Posted by suvisor