• 검색 결과가 없습니다.

(1) XInput Controller 서비스

N/A
N/A
Protected

Academic year: 2022

Share "(1) XInput Controller 서비스 "

Copied!
45
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)
(2)

<용어 설명>

<내레이션>

2

안녕하세요! 지난 시간에는 기본 로봇제어 및 프로그래밍1에 대해 알아 보았습니다. 그럼 이번 회 차를 시작하기 전에 앞서 학습한 주요 내용을 기억하고 있는지 확인해 봅시다.

1. VPL에서 준비된 로봇제어를 위한 여러 서비스

-Generic Differential Drive : 두 개의 바퀴를 가진 로봇을 제어하는데 이용됨

-Generic Articulated Arm : 관절로 연결된 로봇의 각 동작 부분을 제어하기 위한 서비스

-Generic Contact Sensors : 버튼, 범퍼 센서와 같이 On/Off 형태의 출력을 가지고 있는 일반적인 로봇의 접촉센서에 대한 입력을 지원

-Generic Sonar : 초음파 및 기타 거리를 측정하는 센서를 위한 입력을 지원

-Generic Analog Sensor : 조도, 습도, 온도, 압력과 같이 연속적으로 값이 변하는 아날로그 센서 에 대한 입력을 지원

-Generic WebCam Service : 로봇에 장착된 카메라의 영상을 입력 받기 위한 서비스 -Generic Battery : 로봇의 배터리의 상태를 알려 주기 위한 서비스

-Came Controller 및 Desktop Joystick 서비스 : 컴퓨터에 연결되는 게임 컨트롤러나 조이스틱을 입력을 위한 서비스

-Direction Dialog 서비스 : 방향을 지시하는 버튼들을 가진 다이얼로그 서비스, 주로 로봇의 방향 을 지시하는데 사용

2. Generic Differential Drive 서비스를 이용한 로봇 제어

-Drive 서비스의 속도 입력을 위한 두개의 Data 엑티버티를 추가 -Drive 서비스는 double형식의 -1~0~1의 값으로 속도를 입력받음

-두 바퀴의 속도가 다를 경우 Join엑티버티를 이용해 두 개 Data엑티버티 출력을 하나의 연결로 합 친 후 Drive서비스로 연결

3. Direction Dialog 서비스를 통하여 이동로봇의 방향을 제어

-Direction Dialog 서비스는 로봇을 제어하기 위한 버튼이 눌려지면 해당되는 방향버튼의 이름 (Name)을 출력

Switch activity에 분기 조건 3개를 추가하고 각각의 입력 창에 "Forwards", "Left", "Right", "Stop"

을 순서대 기입

각각의 분기에 대한 출력단자에 데이터 형식이 double인 Data activity를 추가한 후, "Forwards"에 는 0.5, "Stop"에는 0, "Left"에는 -0.5과 0.5를, "Right"에도 0.5과 -0.5를 입력

Join activity 2개, Merge activity 2개, Generic Drive 서비스 2개를 추가하여 다이어그램을 완성 위와 같이 3가지에 대해서 알아 보았습니다. 이것들을 잘 기억하고 다음 회로 넘어 가 봅시다.

(3)

<용어 설명>

<내레이션>

3

학습목표

<학습 목표>

1. VPL에서 다양한 시뮬레이션 로봇들을 여러가지 방법으로 제어해 본다.

2. VPL에서 Generic Contact Sensors 서비스를 이용해 접촉센서기반 로봇 제어 방법 을 학습한다.

이번 시간은 지난 시간에 이어서 기본 로봇제어 및 프로그래밍 방법들을 학습해 보겠습 니다.

<주요 학습 내용>

1. 다양한 시뮬레이션 로봇제어

2. Generic Contact Sensors 서비스를 이용한 로봇제어

(4)

<용어 설명>

<내레이션>

4

1. 심플대쉬보드 서비스는 MSRDS에서 제공하는 시뮬레이션 로봇팔을 제어하는데 사용할 수 있다.

2. VPL에서 XBOX용 컨트롤러를 포함해 다양한 조이스틱과 게임패드를 이용해 로봇을 제어할 수 있다.

간단한 퀴즈

학습에 앞서 여러분의 사전지식이 어느 정도인지 알아보는 OX퀴즈입니다.

가벼운 마음으로 아래의 내용을 읽고, OX로 답해보기 바랍니다.

확인

O / X

1번 정답: O

심플대쉬보드 서비스를 이용해 MSRDS 시뮬레이션 환경의 로봇팔을 매우 쉽게 제어할 수 있습니다.

2번 정답 : O

VPL에서는 다양한 조이스틱과 게임패드를 위한 Game Controller 서비스 및 XBOX컨트롤러를 위한 XInput Controller 서비스가 준비되어 있습니다.

이를 이용해 다양한 로봇을 제어할 수 있습니다.

O / X

(5)

<용어 설명>

<내레이션>

5

1. Lesson. 다양한 시뮬레이션 로봇제어

VPL에서 다양한 시뮬레이션 로봇을 제어하는 방법들에 대해 학습해 보겠습니다.

1. Generic Articulated Arm 서비스를 이용한 시뮬레이션 로봇팔 제어 2. XInput Controller 서비스를 이용한 이동로봇 제어

(6)

<용어 설명>

<내레이션>

이전 회차에서 배운 Generic Articulated Arm 서비스를 이용해 로봇팔 시뮬레이션을 VPL에서 실행할 수 있습니다. 이 서비스는 관절로 연결된 로 봇의 각 동작 부분을 제어하기 위한 서비스이며, VPL에서 KUKA.LBR3.simulation.Manifest.xml 매니페스트를 이용해 산업용 로봇팔 시뮬레이션 을 불러올 수 있습니다. 우선 서비스 툴박스에서 Generic Articulated Arm을 선택해 다이어그램에 추가합니다. 그 후 Generic Articulated Arm 을 마우스로 선택한 후 우측의 속성(Properties) 툴 박스의 Congiguration에서 매니페스트 사용하기 옵션인 “Use a manifest”를 선택 후 Import … 을 클릭합니다.

로봇팔 제어

Generic Articulated Arm 서비스를 다이어그램에 추가

(7)

<용어 설명>

<내레이션>

다음으로 12회차에서 Simple Dashboard 서비스를 다이어그램에 추가합니다. 다이어그램에 아래와 같이 Simple Dashboard 서비스를 서비스 툴 박스에서 맨 앞단인 Simple로 검색하거나 스크롤바를 내려가며 직접 찾아서 추가합니다. Simple Dashboard 서비스는 자체의 인터페이스를 통해 네트웍 연결로 로봇을 제어하므로 하므로 Generic Articulated Arm 서비스와 연결할 필요가 없습니다.

Simple Dashboard 서비스를 다이어그램에 추가

(8)

<용어 설명>

<내레이션>

자 이제 Import... 버튼을 클릭하면 그림과 같이 Generic Articulated Arm 타입을 지원하는 Service 목록들이 표시됩니다. 현재 다이어그램의 Generic Articulated Arm 서비스와 연결될 매니페스트로 KUKA.LBR3.simulation.Manifest.xm을 선택한 후 OK버튼을 클릭합니다. Generic Articulated Arm 서비스는 또한 입력과 출력단자의 연결 없이도 단지 시뮬레이션 환경을 불러들이기 위해서 사용이 가능합니다.

.

KUKA.LBR3.simulation.Manifest.xml 매니페스트를 이용한 시뮬레이션 로봇팔 설정

(9)

<용어 설명>

<내레이션>

자 이제 저장하고 실행합니다. VPL을 실행하고 나면, 아래와 같이 두 개의 윈도우 창이 표시됩니다. 하나는 Simple Dashboard가 실행된 화면이 고, 또 다른 하나는 시뮬레이션 실행 화면입니다. 마우스 왼쪽버튼을 누른 상태에서 상하좌우로 마우스를 움직혀 카메라를 회전시키면서 시뮬레 이션 환경을 살펴보면 화면 안에 KUKA의 LBR3 로봇팔과 그 앞으로 함께 세워진 블록들이 보일 것입니다.

KUKA의 LBR3 로봇팔을 이용한 시뮬레이션 환경

(10)

<용어 설명>

<내레이션>

자 이제 시뮬레이션 윈도우 창과 함께 그림과 같은 심플대쉬보드가 별도의 윈도우 창으로 나타난 것을 확인합니다. 이제 Simple Dashboard에서 시뮬레이션 로봇에 연결하고 제어해 보겠습니다. 먼저 위의 Simple Dashboard의 우측 상단에 있는 Machine: 입력 박스에 “localhost” 라고 적혀 있는지 확인후 'Connect' 버튼을 클릭합니다. 클릭 후 그림과 같이 MSRDS 현재 노드에 연결된 제어 가능한 로봇의 서비스들이 검색되어 오른쪽 Service Directory: 아래 화면에 출력됩니다. 검색된 Service Directory: 부분에 (LBR3Arm)/simulatedlbr3arm/… 항목이 추가되어 있는 것을 확인 할 수 있습니다.

심플대쉬보드(Simple Dashboard) 서비스 Connect버튼 클릭 후 제어 가능한 로봇의 Drive서비스 확인 2. 더블클릭

1. 클릭

(11)

<용어 설명>

<내레이션>

자 이번에는 (LBR3Arm)/simulatedlbr3arm/… 라고 표시되는 항목을 마우스로 더블클릭 합니다. 그러면 바로 아래화면에서 로봇팔의 각 관절이 름인 Joint0~Joint6이 표시되며 그 좌측에 있는 Articulated Arm 에서 이제 로봇팔의 각 관절을 조정할 수 있게 됩니다.

심플대쉬보드(Simple Dashboard) 서비스에서

(LBR3Arm)/simulatedlbr3arm/… 더블클릭 후 아래화면에서 로봇팔의 각 관절이름인 Joint0~Joint6 확인 2. 더블클릭

3. 관절이름이 표시됨을 확인

(12)

<용어 설명>

<내레이션>

그 다음으로 조정할 해당 로봇팔의 관절을 선택하기 위해 관절항목에서 Joint0를 더블클릭해 선택합니다. 다음으로 ActiveJoint: 에 Joint0가 선택 됨을 확인합니다. 다음으로 선택된 Joint0의 움직일 각도입력 후 Apply Changes버튼 클릭해 로봇팔의 관절 중 Joint0를 움직여 봅니다. 자 그러 면 시뮬레이션 화면에서 로봇팔의 Joint0가 여러분이 입력한 각도에 따라 움직이는 것을 볼 수 있을 것입니다.

Joint0는 로봇의 맨 아래부분의 관절입니다. 이 관절을 Angle:에 100도를 입력한 후 Apply Changes 를 클릭합니다. 여기서 입력한 각도는 로봇 관절에서 절대각도입니다. 따라서 원 시작 각도는 0도가 됩니다. 따라서 원 위치로 움직이려면 해당 관절을 0도로 다시 설정하면 됩니다.

심플대쉬보드(Simple Dashboard) 서비스에서 Drive버튼 클릭 후 원을 마우스로 클릭해 로봇 제어 5. 선택한 Joint0의 움직일 각도입력

후 Apply Changes버튼 클릭

4. Joint0를 더블클릭해 선택 후 Active Joint: 에 Joint0가 선택됨을 확인

(13)

<용어 설명>

<내레이션>

화면 안에 KUKA의 LBR3 로봇팔의 맨 아래의 관절인 Joint0가 100도 왼쪽으로 회전하는 것을 볼 수 있습니다. 자 이제 시뮬레이션 환경의 블록들 을 쓰러뜨리기 위해 다른 관절들을 조정해 보겠씁니다. 다음으로 관절항목에서 Joint1를 더블클릭해 선택합니다. 다음으로 ActiveJoint: 에 Joint1 이 선택됨을 확인합니다. 다음으로 선택된 Joint1의 움직일 각도인 -100을 입력 후 Apply Changes버튼을 클릭해 로봇팔 맨 아래에서 두번째 관 절인 Joint1를 움직여 봅니다.

맨 아래 관절(Joint0)이 왼쪽으로 100도 회전된 KUKA의 LBR3 로봇팔

(14)

<용어 설명>

<내레이션>

자 그러면 시뮬레이션 화면에서 로봇팔의 Joint0가 100도 회전한 상태에서 Joint1이 -100도 회전하면서 시뮬레이션의 블록들을 쓰러뜨리는 것을 볼 수 있습니다. 실습에서 사용된 관절들의 각도외에서 여러 각도들을 각 관절에 설정해 보며 실습해 보기 바랍니다.

맨 아래 관절(Joint0)이 왼쪽으로 100도 회전된 후 그 위 관절(Joint1) 을 -100도 회전해 블록을 쓰러뜨리는 장면

(15)

<용어 설명>

<내레이션>

레이 시켜 따라해 본다.

(16)

<용어 설명>

<내레이션>

자 이제, XInput Cantroller 서비스를 이용한 이동로봇 제어를 배워봅시다.

XInput Controller 서비스는 XBOX게임에서 사용하고 있는 XBOX 360 Controller의 PC용 버전을 이용하는 서비스입니다. VPL에서는 이 서비스를 포함해 지난 회차에서 배운 Game Controller 및 Desktop Joystick 서비스등 다양한 입력 디바이스 서비스들을 통해 로봇을 조종할 수 있습니다

XInput Controller 서비스 위치와 모양

-XInput Controller 서비스는 XBOX 360 Controller의 PC용 버전을 이용하는 서비스 -VPL에서는 이 서비스를 포함해 Game Controller 및 Desktop Joystick 서비스 등 다양한 입력 디바이스 서비스들을 통해 로봇을 조종함

(1) XInput Controller 서비스

(17)

<용어 설명>

<내레이션>

이 그림은 다이어그램 작성 시 XInput Controller 서비스에서 이용하는 XBOX컨트롤러의 스틱, 버튼 기능과 위치에 대한 내용입니다 XInput Controller 서비스에서 이용하는 XBOX컨트롤러 스틱, 버튼 기능과 위치

로 눌린 상태 반환

● DPadChanged : 시야 조정 단추의 방향을 반환

● ThumbsticksChange : 컨트롤러 스틱(Thumbsicks)의 위치 값을 반환. 범 위는 -1000~1000 사이 값

● TriggersChanged : Trigger버튼의 눌린 위치 값을 반환, 눌려진 정도 범위 는 0~1 사이 값

(18)

회차 제목 학습 흐름 제목

<이벤트 설명>

<용어 설명>

<내레이션>

기본 로봇제어 및 프로그래밍2

XInput Controller서비스를 사용하는 XBOX 360 컨트롤러를 설치하기 위해서는 인터넷이 연결되어 있어야 합니다. 인터넷이 연결되어 있으면, XBOX 360 컨트롤러를 USB 플러그를 컴퓨터 정면이나 후면에 있는 USB 잭이나 책상위로 확장 되어 있는 USB 커넥터에 에 연결합니다. XBOX 360 컨트롤러를 찾는 메시지가 나오고 하드웨어 업데이트 마법사가 시작됩니다. “다음”을 클릭하면 드라이버를 인터넷을 통해 설치합니다. 설치 를 위해 몇 분이 소요됩니다. 설치가 완료되면 컴퓨터 오른쪽하단에 ‘XBOX 350 Controller for Windows' 메시지가 나타나고 ’새 하드웨어를 설치 했으며 사용할 준비가 되었습니다.‘라는 메시지가 나타납니다.

XBOX컨트롤러를 PC의 USB포트에 연결

(2) XBOX컨트롤러 설치 방법

그림 9) 조이스틱 USB 연결

하드웨어 업데이트 마법사

다양한 시뮬레이션 로봇제어

(19)

회차 제목 학습 흐름 제목

<이벤트 설명>

<용어 설명>

<내레이션>

기본 로봇제어 및 프로그래밍2

이번 실습에서는 XInput Controller 서비스를 통하여 이동로봇을 제어하는 과정을 보여줍니다. 우선 File 메뉴에서 New를 클릭한 후 새로운 프로 젝트를 시작하십시오. 다음으로 서비스 툴 박스에서 XInput Controller 서비스를 찾아 XInput controller를 더블 클릭 또는 마우스로 끌어서 현재 다이어그램에 추가합니다.

(3) XInput Controller 서비스로 이동로봇 제어하기

그림 9) 조이스틱 USB 연결

다이어그램에 XInput Controller 서비스 추가

다양한 시뮬레이션 로봇제어

(20)

회차 제목 학습 흐름 제목

<이벤트 설명>

<용어 설명>

<내레이션>

기본 로봇제어 및 프로그래밍2

다음으로 Generic differential Drive 서비스를 추가해서 XInput Contoller서비스의 알림 출력단자(Notification Output)와 그림과 같이 연결합니다.

Connection 다이얼로그 창이 뜨면 From: 메뉴에서 TriggersChanged를 선택하고 오른쪽 To:메뉴에서 SetDrivePower로 연결을 선택합니다. OK 버튼을 클릭하면 나타나는 Data Connections 창에서는 Right를 LeftWheelPower로, Left를 RightWheelPower로 설정하십시오.

그림 9) 조이스틱 USB 연결

다이어그램에 XInput Controller 서비스 추가

다양한 시뮬레이션 로봇제어

(21)

<용어 설명>

<내레이션>

자 이제 시뮬레이션 로봇과 연결하기 위해서는 올바른 매니페스트를 Generic Differential Drive에 설정해 주어야 합니다. VPL의 오측에 있는 속성 (Properties) 툴 박스의 Configuration항목에서 해당 서비스를 연결해 사용하고자 하는 매니페스트를 지정할 수 있습니다. Generic Differential Drive 서비스를 마우스로 선택한 후 오른쪽의 속성(Properties) 툴 박스의 Configuration: 항목의 드래그 드롭 메뉴에서 매니페스트 사용하기(Use a manifest)를 선택합니다. 매니페스트 사용하기를 선택한 다음 바로 아래의 ‘Import...' 버튼을 클릭합니다. 이 후 그림과 같이 Generic

Differential Drive 타입을 지원하는 Service 목록들이 표시됩니다. 이번 실습에서는 이 중 MobileRobots.P3DX.Simulation.manifest.xml을 선택해 보도록 하겠습니다.

Simulated Generic Differential Drive가 사용가능한 매니페스트 목록

(22)

<용어 설명>

<내레이션>

자 이제 Run 메뉴 또는 F5를 사용해서 실행 시킵니다. 저장을 하지 않았다면 저장 다이얼로그가 뜨고 이름을 정해서 Save를 눌러 현재 VPL프로 젝트를 저장하면 됩니다. VPL을 실행하고 나면, 이동로봇 P3DX가 포함된 시뮬레이션 환경에서 XBOX컨트롤러의 앞쪽 아래쪽 좌우에 위치한 두 개의 Trigger버튼을 눌러 양쪽 바퀴의 속도를 제어해 P3DX로봇을 제어할 수 있습니다.

XBOX컨트롤러의 Trigger버튼은 아날로그 값으로 0~1 사이의 값을 출력하므로 이동로봇의 양쪽 바퀴의 속도를 버튼이 눌러진 정도에 따라 조정 확인할 수 있습니다. 자 이제 양쪽 바퀴의 속도를 XBOX컨트롤러의 Trigger버튼으로 바꿔 가면서 로봇을 제어해 보기 바랍니다.

XBOX컨트롤러 Trigger버튼을 이용한 이동로봇 P3DX 시뮬레이션 제어

(23)

<용어 설명>

<내레이션>

레이 시켜 따라해 본다.

(24)

<용어 설명>

<내레이션>

24

문제 : 다음 중 XInput Controller 서비스의 출력단자 설명으로 거 리가 먼 것은?

① ButtonsChanged는 버튼 A, B, X, Y, BACK, START, LB, RB 8개의 버튼으로 눌린 상태 반환함

② SetVibrationMotor는 컨트롤러에 내장된 진동모터를 동작 시킴

③ ThumbsticksChange는 컨트롤러 스틱의 위치 값을 반환함

④ TriggersChanged는 Trigger버튼의 눌린 위치 값을 반환함

정답: 2번

해설: SetVibrationMotor는 XInput Controller 서비스의 입력단자로 연결되어 컨트롤러의 진동모터를 동작시킵니다.

정답 확인

돌발! 퀴즈~

(25)

<용어 설명>

<내레이션>

25

Lesson. Generic Contact Sensors 서비스를 이용한 로봇제어

VPL에서 센서입력 및 센서기반 로봇 제어방법에 대해 학습해 보겠습니다.

1. Generic Contact Sensors 서비스를 이용한 센서입력 2. 센서입력을 이용한 로봇 제어

(26)

<용어 설명>

<내레이션>

이전 회차에서 배웠던 Generic Contact Sensors 서비스는 접촉 센서들의 눌려진 상태가 변화될 때 마다 ContactSensorUpdate 알림 출력을 통 해 Pressed라는 변수로 전달합니다. 이때 눌려진 상태는 True(눌려짐),False(떨어짐) 의 2가지 상태로 출력됩니다.

우선 다이어그램에 Generic Contact Sensors 서비스를 추가합니다.

다이어그램에 Generic Contact Sensors 서비스를 추가

-Generic Contact Sensors 서비스는 센서들의 눌려진 상태가 변화될 때 마다 ContactSensorUpdate 알림 출 력을 통해 센서의 상태가 출력됨.

-출력 메시지는 Pressed라는 변수로 전달됨. 눌려진 상태는 True(눌려짐),False(떨어짐)의 2가지 상태를 가짐.

(27)

<용어 설명>

<내레이션>

다음으로 접촉센서의 눌려진 상태를 얻어오기 위치 Calculate엑티버티를 하나 추가합니다. 그리고 Generic Contact Sensors 서비스의 출력 단자 를 Caculate엑티버티의 입력 단자에 연결합니다. 이때 접촉 센서들의 눌려진 상태가 변화될 때 마다 알려주는 역할을 하는

ContactSensorUpdate 을 Connections 창에서 선택합니다. 이때 눌려진 상태는 Pressed라는 변수로 전달됩니다. 이 눌려진 상태를 문자열로 바 꾸어 출력하기 위해 Calculate엑티버티의 입력창에 그림과 같이 (string)Pressed를 입력합니다.

Calculate엑티버티 추가 및 Generic Contact Sensors 서비스와 연결 1. ContactSensorUpdate 선택

2. Calculate엑티버티의 입력창에 (string)Pressed 입력

(28)

<용어 설명>

<내레이션>

자 이제 접촉센서 상태 출력을 위해 Simple Dialog서비스를 하나 추가합니다. 그리고 Claculate엑티버티 출력 단자를 Simple Dialog의 입력 단자 와 연결합니다. Connections 창에서는 CalculatedResult 와 AlertDialog를 각각 From:, To:의 연결로 선택합니다. 그리고 Data Connections창에 서는 Claculate엑티버티의 출력결과인 value를 선택합니다

Simple Dialog 서비스 추가 Calculate엑티버티와 연결

(29)

<용어 설명>

<내레이션>

마지막으로 이동로봇 조종을 위해 Simple Dashboard서비스를 다이어그램에 추가합니다.

이동로봇 조종을 위한 Simple Dashboard서비스 추가

(30)

<용어 설명>

<내레이션>

VPL의 오측에 있는 속성(Properties) 툴 박스의 Configuration항목에서 해당 서비스를 연결해 사용하고자 하는 매니페스트를 지정할 수 있습니다.

이번에는 로봇의 접촉센서를 이용하므로 (이전 실습에서 사용해왔던 Generic Differential Drive 서비스대신에) Generic Contact Sensors를 마우 스로 선택한 후 오른쪽의 속성(Properties) 툴 박스의 Configuration: 항목의 드래그 드롭 메뉴에서 매니페스트 사용하기(Use a manifest)를 선택 합니다. 매니페스트 사용하기를 선택한 다음 바로 아래의 ‘Import...' 버튼을 클릭합니다. 이 후 그림과 같이 Generic Differential Drive 타입을 지 원하는 Service 목록들이 표시됩니다. 이번 실습에서는 이 중 iRobot.Create.Simulation.Mafinest.xml을 선택해 보도록 하겠습니다.

Simulated Generic Differential Drive가 사용가능한 매니페스트 목록

(31)

<용어 설명>

<내레이션>

자 이제 저장하고 실행합니다. VPL을 실행하고 나면, iRobot Create 가 포함된 시뮬레이션 환경과 함께 Simple Dashboard가 나타납니다. 이전 실습과 같이 Simple Dashboard로 로봇을 연결하여 조종해 봅니다. 이번에는 XBOX컨트롤러를 좌측 스틱을 이용해 로봇을 조종해 보기 바랍니다.

우선 센서를 동작시키기 위해 장애물을 향해 로봇을 이동시킵니다. 장애물에 충돌했을 경우 접촉센서의 상태개 바뀌면서 화면과 같이 Alert Dialog로 센서의 상태값이 충돌 시 True로 나타납니다. 실재환경과 같이 충돌시 충격과 진동으로 인해 센서값이 여러 번 출력되는 것을 확인할 수 있습니다. 참고로 Create 시뮬레이션 로봇은 전방 좌측에 오직 한 개의 접촉센서만이 지원됩니다.

iRobot Create을 이용한 시뮬레이션 결과 출력 및 장애물 충돌시 접촉센서 결과 출력 확인

(32)

<용어 설명>

<내레이션>

레이 시켜 따라해 본다.

(33)

<용어 설명>

<내레이션>

이번에는 이전 회차에서 배웠던 Generic Differential Drive서비스를 이용해 우Generic Contact Sensors 서비스에서 접촉 센서입력이 있을 때 로 봇을 움직이는 것을 실습해 보도록 하겠습니다. 이동로봇 P3DX 시뮬레이션 로봇의 앞 뒤 범퍼를 Generic Contact Sensors서비스로 지원합니다.

따라서 이번 실습에서는 P3DX 시뮬레이션 로봇을 사용하도록 하겠습니다. 우선 다이어그램에 이전 실습과 같이 Generic Contact Sensors 서비 스를 추가합니다.

다이어그램에 Generic Contact Sensors 서비스를 추가

-이동로봇 P3DX 시뮬레이션 로봇의 앞 뒤 범퍼는 Generic Contact Sensors서비스를 지원

-앞 범퍼 신호가 감지되면 로봇을 뒤로 이동시키고, 뒤 범퍼가 감지되면 로봇을 앞으로 이동시키기 실습

(34)

<용어 설명>

<내레이션>

다음으로 If엑티버티를 추가해 Generic Contact Sensors 서비스의 ContactSensorUpdate 출력 연결로 연결합니다.

다이어그램에 If엑티버티 추가

(35)

<용어 설명>

<내레이션>

다음으로 If엑티버티의 해당되는 조건문에 대한 출력 연결단자를 각각 그림과 같이 해당 이동로봇 속도 지정을 위한 Data엑티버티들과 연결합니 다. 앞쪽 범퍼가 눌린 조건인 “Pressed && HardwareIndentifier == 0”인 경우는 두 바퀴 속도를 -0.2로 설정해 후진하도록 하고, 뒤쪽 범퍼가 눌 린 그 다음의 경우에는 두 바퀴의 속도를 모두 0.2로 설정해 전진하도록 합니다. 다음으로 Data엑티버티의 출력을 Join, Merge엑티버티를 이용해 Generic Differential Drive서비스와 연결합니다.

If엑티버티 출력 연결단자를 Data엑티버티들과 연결 및

Join, Merge엑티버티를 이용한 Generic Differential Drive서비스와 연결

P3DX로봇의 뒤쪽 범퍼가 눌린 경우

(36)

<용어 설명>

<내레이션>

마지막으로 Merge엑티버티와 Generic Differential Drive서비스 연결 시, 그림과 같이 Connections와 Data Connections 설정을 적용해 연결합 니다.

Merge엑티버티와 Generic Differential Drive서비스 연결 시 설정

(37)

<용어 설명>

<내레이션> 자 이제 시뮬레이션 로봇과 연결하기 위해서는 올바른 매니페스트를 사용한 로봇 서비스에 설정해 주어야 합니다. 먼저 Generic Contact Sensors 서비스를 마우스로 클릭해 VPL의 오측에 있는 속성(Properties) 툴 박스의 Configuration항목에서 “use a manfest”를 선택한 후

‘Import...' 버튼을 클릭한 후 해당 서비스를 지원하는 Service 목록들에서 이동로봇 P3DX 시뮬레이션이 설정되어 있는 매니페스트인 MobileRobots.P3DX.Simulation.manifest.xml을 선택합니다.

그 다음 Generic Differential Drive 서비스를 클릭해 속성 툴박스를 보면 Manifest: 드롭다운 리스트에서 클릭해 확인하면 현재 다이어그램에서 선택되어진 매니페스트가 나타납니다. 이 목록에서 MobileRobots.P3DX.Simulation.manifest.xml 안에 있는 simulateddifferentialdrive를 선택합 니다.(simulateddifferentialdrive in MobileRobots.P3DX.Simulation.manifest.xml )

1. Generic Contact Sensors 서비스에

MobileRobots.P3DX.Simulation.manifest.xml 매니페스트 선택

주의사항: 반드시 Generic Contact Sensors 와 Generic Differential Drive 두 서비스 모두 동일한 매니페스트로 설정해야 함 (같은 로봇으로 설정하기 위함)

2. Generic Contact Sensors 서비스에 지정된 동일한 MobileRobots.P3DX.Simulation.manifest.xml 매니페스트를 Manifest: 드롭다운 리스트에서 선택해 지정

(38)

<용어 설명>

<내레이션>

자 이제 저장하고 실행합니다. VPL을 실행하고 나면, 이동로봇 P3DX 가 포함된 시뮬레이션 환경과 함께 Simple Dashboard가 나타납니다. 이전 실습과 같이 Simple Dashboard로 로봇을 연결하여 조종해 봅니다. 이번에는 XBOX컨트롤러를 좌측 스틱을 이용해 로봇을 조종해 보기 바랍니다.

먼저 스틱을 앞으로 밀어 로봇을 갑자기 출발시켜 보면, P3DX의 무게중심이 앞으로 이동하면서 앞쪽 범퍼가 지면에 닿는 것을 확인할 수 있습니 다. 앞 범퍼가 지면에 닿은 후 If엑티버티의 조건에 의해 로봇이 뒤로 후진하게 됩니다. 뒤쪽 범퍼는 여러분이 장애물과 충돌시켜 보기 바랍니다.

로봇은 뒤쪽 범퍼가 눌려질 경우 전진하게 됩니다. 참고사항으로 로봇은 가장 최근의 Drive명령을 수행하게 됩니다. 따라서 로봇 이동 중 Simple Dashboard에서 명령이 내려진 경우, Simple Dashboard는 조종이 끝나면 자동으로 정지명령을 보내므로, 로봇은 정지하게 됩니다.

iRobot Create을 이용한 시뮬레이션 결과 출력 및 장애물 충돌시 접촉센서 결과 출력 확인

(39)

<용어 설명>

<내레이션>

레이 시켜 따라해 본다.

(40)

<용어 설명>

<내레이션>

40

문제 : 다음 중 VPL에서 매니페스트를 설정을 필요로 하지 않는 서비스는?

① Simple Dashboard

② Generic Differential Drive

③ Generic Contact Sensors

④ Generic Articulated Arm

정답: 1번

해설: 심플대쉬보드(Simple Dashboard) 서비스는 매니페스트 설정을 필요로 하지 않습니다.

정답 확인

돌발! 퀴즈~

(41)

<용어 설명>

<내레이션>

41

1. Generic Articulated Arm 서비스를 이용한 시뮬레이션 로봇팔 제어 -관절로 연결된 로봇의 각 동작 부분을 제어하기 위한 서비스

-Generic Articulated Arm과 Simple Dashboard 서비스를 다이어그램에 추가

-KUKA.LBR3.simulation.Manifest.xml 매니페스트를 이용해 산업용 로봇팔 시뮬레이션을 사용함 2. XInput Controller 서비스

-XInput Controller 서비스는 XBOX 360 Controller의 PC용 버전을 이용하는 서비스

-XInput Controller, Game Controller 및 Desktop Joystick 서비스 등 다양한 입력 디바이스 서비스들을 통해 로봇을 조종함

-XInput Controller 서비스 출력단자

● ButtonsChanged : 버튼 A, B, X, Y, BACK, START, LB, RB 8개의 버튼으로 눌린 상태 반환

● DPadChanged : 시야 조정 단추의 위치를 반환

● ThumbsticksChange : 컨트롤러 스틱의 위치 값을 반환. 범위는 -1000~1000 사이 값

● TriggersChanged : Trigger버튼의 눌린 위치 값을 반환, 눌려진 정도 범위는 0~1 사이 값 3. Generic Contact Sensors 서비스를 이용한 센서입력

-접촉센서들의 눌려진 상태가 변화될 때 마다 ContactSensorUpdate 알림 출력을 통해 센서의 상태가 출력됨

-출력 메시지는 Pressed라는 변수로 전달됨. 눌려진 상태는 True(눌려짐),False(떨어짐)의 2가지 상태 를 가짐

4. 센서입력을 이용한 로봇 제어

-iRobot의 Create 시뮬레이션 로봇은 전방 좌측에 오직 한 개의 접촉센서만 지원

-이동로봇 P3DX 시뮬레이션 로봇의 앞 뒤 범퍼는 Generic Contact Sensors서비스를 지원

-앞 범퍼 신호가 감지되면 로봇을 뒤로 이동시키고, 뒤 범퍼가 감지되면 로봇을 앞으로 이동시키기 실습 학습요약 및 정리

출력하기

(42)

<용어 설명>

<내레이션>

42

문제 2 : 다음 중 XInput Controller 서비스 출력단자 설명으로 틀린 것은?

① ButtonsChanged는 버튼 A, B, X, Y, BACK, START, LB, RB 8 개의 버튼으로 눌린 상태 반환

② DPadChanged 는 모든 버튼의 이름을 반환

③ ThumbsticksChange는 컨트롤러 스틱의 위치 값을 반환. 범위 는 -1000~1000 사이 값

④ TriggersChanged : Trigger버튼의 눌린 위치 값을 반환, 눌려 진 정도 범위는 0~1 사이 값

정답: 4 번

해설: VPL에서 시뮬레이션 로봇팔 이용하기 위해서는 반드시 해당 매니페스트를 설정해야 합니다.

관련학습 보기: Page 6 다양한 시뮬레이션 로봇제어 문제 1 : 다음 중 Generic Articulated Arm 서비스를 이용한 시뮬레이

션 로봇팔 제어할 때 잘못된 설명은?

① 관절로 연결된 로봇의 각 동작 부분을 제어하기 위해 Generic Articulated Arm 서비스를 이용

② Generic Articulated Arm과 Simple Dashboard 서비스를 다이 어그램에 추가함

③ KUKA.LBR3.simulation.Manifest.xml 매니페스트를 이용해 산 업용 로봇팔 시뮬레이션을 사용함

④ 매니페스트 설정없이 시뮬레이션 로봇팔 이용가능

정답: 2 번

해설: DPadChanged는 XBOX컨트롤러의 시야 조정 단추의 방향을 반환 합니다.

관련학습 보기: Page 17 다양한 시뮬레이션 로봇제어

(43)

<용어 설명>

<내레이션>

43

정답: 4

해설: 로봇은 다양한 센서를 가지고 있습니다. Generic Contact Sensors 서비스는 이 중 범퍼 혹은 스위치와 같은 접촉센서만을 지원할 수 있습니다.

문제 3 : 다음 중 Generic Contact Sensors 서비스 설명 중 틀린 것은?

① 접촉센서들의 눌려진 상태가 변화될 때 마다 ContactSensorUpdate 출력을 통해 알림

② 출력 메시지는 Pressed라는 변수로 전달됨

③ 눌려진 상태는 True(눌려짐),False(떨어짐)의 2가지 상태를 가짐

④ 모든 로봇의 센서는 이 서비스를 이용해 이용가능

관련학습 보기: Page 26

Generic Contact Sensors 서비스를 이용한 로봇제어

(44)

<용어 설명>

<내레이션>

44

이번 시간에는 기본 로봇제어 및 프로그래밍2에 대해 학습하였습니다.

1. 다양한 시뮬레이션 로봇제어

2. Generic Contact Sensors 서비스를 이용한 로봇제어

다음 시간에는 시뮬레이션 로봇제어 응용에 대해 학습하도록 하겠습니다.

1. 시뮬레이션 로봇을 이용한 로봇제어 응용

(45)

<용어 설명>

<내레이션>

45

MSRDS 시뮬레이션의 카메라 시점을 변경하고자 할 때 XBOX컨트롤러의 LB버튼을 누른 상태에서 두 개의 스틱(Thumbstick)을 조종하면 됩니다. 좌측 스틱은 카메라의 위치, 우측 스틱은 카메라의 방향을 변경할 수 있습니다.

이때 심플대쉬보드(Simple Dashboard)가 같이 입력을 받지만 LB버튼이 눌러진 상태이기 때문에 로봇을 움 직이지 않습니다. XBOX의 다른 버튼들을 누를 경우 심플대쉬보드에서 Motor가 비활성화(Off)될 수 있으니 주의하기 바랍니다.

참고로 이전 11회차에서 배운 시뮬레이션 단축키를 이용해 카메라의 위치를 변경하는 방법을 아래의 테이 블을 보며 복습해 보겠습니다. 카메라의 방향 조정은 마우스 왼쪽버튼을 누른 상태에서 마우스를 상하좌우 로 움직이면 그 방향으로 카메라가 회전하게 됩니다.

* 이러한 XBOX 컨트롤러로 카메라 조정 혹은 단축키 작동 역시 해당 시뮬레이션 창이 포커스를 가지고 있 을 경우에만 가능합니다. 이는 시뮬레이션 창의 맨 위 테두리 색갈이 파란색인 것으로 확인이 가능합니다.

따라서 포커스가 다른 창에 있을 경우 Alt + Tab을 눌러 주거나 혹은 마우스로 창 맨위 테두리를 눌러 포커 스를 시뮬레이션 창으로 돌릴 수 있습니다.

카메라의 위치 변경을 위한 단축키

(해당 시뮬레이터 창에 포커스를 가지고 있을 경우) w 앞으로 이동 s 뒤로 이동

a 왼쪽으로 이동 d 오른쪽으로 이동

q 위로 이동 e 아래로 이동

참조

관련 문서

서비스 콘셉트 평가 및

(Service Level Metrics) 서비스 제공 영역별 서비스 수준을 정량적으로 파악하기 위한 성과지표 서비스 목표 수준. (Service Level Objectives) 서비스 수준 관리 지표

표적시장 내에서 소비자들이 가장 중요하게 생각하는 속성에서 경쟁기업에 비해 차별적 우위를 갖고 있음을 강조하는 전략이다.. 예를 들면, 상가에 자리 잡은 신발

제1절 서비스 운영관리의 기본. 서비스

• 서비스 젂략과 서비스 운영을 잇는 연결고리. • NPD(new product

해외 주요 국가들의 서비스 혁신과 R&amp;D 정책을 보면, 서비스 이질성 등을 고려하여 ICT 서비스나 의료서비스 등 부문별 전반적인 혁신지원정책에

OTT 등 동영상 서비스 OTT 등 동영상 서비스 유료 이용 현황.. OTT 등 동영상 서비스 OTT 등 동영상 서비스 이용시 개인정보에 대한 우려 및 개인 정보 활용 동의 정도..

해양기상 장비도입 및 서비스 운영 가 어민 대상 해양안전 서비스 자료 제작.. 해양기상 신기술 워크숍 개최 가 제안요청서 심의