본문 바로가기

Hacked Brain/embeddedland.net

MSRS VPL [로봇 연결하기 03] 조종하는 버튼 이해하기



[로봇 연결하기 03] 조종하는 버튼 이해하기

 

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

 

이번 강좌에서는 로봇을 조종하기 위한 간단한 버튼에 대해 소개를 합니다. 다행히도 아주 간단하게 전진 및 정지, 좌측 및 우측 명령을 생성해 낼 수 있는 아주 간단한 다이얼로그 액티버티가 MSRS에서 기본적으로 제공이 됩니다.

 

본 강좌에서는 이 다이얼로그를 이전 강자에서 소개하였던 SimulatedGenericDifferentialDrive 액티버티에 연결하여 로봇을 제어하는 과정을 소개하기에 앞서, Direction Dialog의 값을 이용하여 로봇의 방향을 제어하는 값을 만들어 내는 과정을 먼저 소개하도록 하겠습니다.

 

이 번 과정을 이해하신다면, 다음 번 강좌의 내용을 보기 전에 먼저 스스로 SimulatedGenericDifferentialDrive 액티버티와 이번 강좌의 내용을 연결하여 로봇을 조종하는 기능을 구현해 보시기 바랍니다.

 

자 먼저, VPL을 실행 한 후 아래 다이어그램과 같이 Direction Dialog 액티버티와와 Calculate 액티버티를 추가한 후 두 액티버티를 연결합니다.

 

이 때 주의할 점은 Direction Dialog의 출력점이 두 개라는 것입니다. 이 두 개의 점 중에서 아래에 있는 점과 Calculate 액티버티의 입력점을 연결하시면 됩니다. 만약 Direction Dialog의 출력점 중 위에 있는 점과 Calculate 엑티버티를 연결하게 되면, 단지 딱 한번만 값이 전달될 뿐, 그 다음 부터는 값이 전달이 되지 않습니다. 이벤트가 발생할 때 마다 값을 전달하고자 한다면 두 번째 출력점인 Notification 출력 점과 Calculate 액티버티의 입력점을 연결해야 합니다.

 

 

사용자 삽입 이미지

그림 1

 

이 때 아래와 같이 Connections창이 자동으로 실행되며, 이 창에서 아래와 같이 우측의 항목을 ButtonPress로 선택합니다.

 

사용자 삽입 이미지

그림 2

 

이번에는 Calculate 액티버티의 입력창에 마우스를 클릭합니다. 클릭한 후에는 아래와 같이 입력 가능한 값이 표시되는 것을 볼 수 있으며, 이 항목들 중에서 Name 항목을 선택합니다.

 

 

사용자 삽입 이미지

그림 3

 

위의 작업 후에는 Simple Dialog 액티버티를 Calculate 액티버티 우측에 추가한 후, Calculate 액티버티와 Simple Dialog 액티버티를 연결합니다.

 

연결할 때, Connections 창과 Data Connection 창에서의 설정은 아래의 그림에서와 같이 설정하시기 바랍니다.

 

사용자 삽입 이미지

그림 4

 

Data Connection 창에서는 반드시 value 항목으로 선택해 주어야 값이 전달됩니다.

 

사용자 삽입 이미지

그림 5

 

자 이제 최종적인 다이어그램은 아래와 같으며, 아래의 다이어그램을 저장하고 실행시켜 봅니다.

 

 

사용자 삽입 이미지

그림 6

 

위의 다이어그램을 실행시키면 아래와 같은 방향 버튼이 있는 창이 실행됩니다.

 

 

사용자 삽입 이미지

그림 7

 

위에서 전진 방향의 버튼을 클릭하면 아래와 같이 해당 버튼의 이름이 출력되는 것을 볼 수 있습니다.

 

 

사용자 삽입 이미지

그림 8

 

나머지 버튼에 대해서도 한번씩 클릭해 보시기 바랍니다.

 

결과적으로 각 버튼의 클릭은 아래와 같은 이름을 출력하게 됨을 알게 될 것입니다.

 

전진버튼: Forwards

Stop 버튼: Stop

좌측버튼: Left

우측버튼: Right

 

자 이제 Direction Dialog가 각 버튼에 따라 위의 이름을 출력함을 알아 냈음으로, 위의 값을 이용하여 모터에 전달되는 값을 만들어 보도록 하겠습니다.

 

이전 다이어그램에서 Simple Dialog 액티버티를 제거한 후에 Switch 액티버티를 추가하고 아래와 같이 위에서 알아낸 값을 추가하여 등록해 놓습니다. Switch 조건의 추가하기 위해서는 Switch 액티버티의 아래에 있는 + 아이콘을 클릭하면 됩니다.

 

 

사용자 삽입 이미지

그림 9

 

위에서 Switch 값을 입력할 때, 반드시 “…“으로 값을 감사주어야 합니다.

 

이에 다음 작업으로 두 개의 Data 액티버티와 하나의 Join 액티버티를 추가한 후 “Forwards” 값의 출력점에 아래와 같이 연결합니다.

 

 

사용자 삽입 이미지

그림 10

 

위의 연결 작업을 수행 한 후에는 이번에는 Join 안에 있는 변수 이름의 값을 아래와 같이 변경합니다.

           msg -> Left

           msg0 -> Right

변경된 결과는 아래와 같습니다.

 

 

사용자 삽입 이미지

그림 11

 

이제는 나머지 항목들에 대해서도 동일하게 작업을 진행합니다. 아래 그림을 살펴 보기 전에 먼저 각자 스스로 Stop, Left, Right 항목에 대해 해당되는 Data Join의 액티버티 조합을 추가해 보기 바랍니다.

 

나머지 항목들에 대해서도 동일한 작업을 적용한 결과는 아래와 같습니다.

 

사용자 삽입 이미지

그림 12

 

이제 남아 있는 작업은 이러한 결과를 로봇에 연결하는 작업들입니다. 이 작업은 다음 강좌에서 계속 이어서 하도록 하겠습니다.