이번 포스팅은 URDF를 이용해 만든 로봇에 가상 자동차 연결하기 (2) 과정을 통해서 만들어진 로봇을 Unity 환경에서 가상 자동타를 만들어서 연결해서 테스트를 해 보는 과정입니다.
이 포스트는 다음 과정을 완료한 후에 참고하시길 바랍니다.
- URDF를 이용한 간단한 로봇 만들기 (1)
- URDF를 이용한 간단한 로봇 만들기 (2)
- URDF를 이용한 간단한 로봇 만들기 (3)
- URDF를 이용해 만든 로봇에 가상 자동차 연결하기 (1)
- URDF를 이용해 만든 로봇에 가상 자동차 연결하기 (2)
1. Unity Project 생성하기
- 'Unit Hub'에서 'New project' 버튼을 누릅니다.

- 'New Project' 창에서 아래 내용을 입력하고 'Create project' 버튼을 눌러 프로젝트를 생성합니다.
◦ Editor Version: 2021.3.*
◦ Project templates: 3D
◦ Project name: unity_ws
◦ Location: 프로젝트를 생성하기 위한 적당한 위치

- 아래 그림과 같이 Unity 3D 프로젝트가 생성됩니다.

- Project 탭에서 'Assets >> Scense' 선택 후 마우스 메뉴 버튼을 선택 후 'Create >> Scene'을 선택합니다.

- 생성된 Scene의 이름을 '2WD Car'로 변경하고 더블클릭하면 아래와 같이 비어있는 Scene이 활성화됩니다.

2. Unity Ground & Materials 생성하기
- 자동차가 동작을 할 수 있는 땅에 해당하는 Ground와 색상을 표현하기 위한 Materials를 생성하는 과정입니다.
- Hierarchy 탭에서 마우스 메뉴 버튼을 눌러서 '3D Object >> Plane'을 선택합니다.

- Plane을 선택한 후 Transform 정보를 아래와 같이 입력합니다. 아래 그림과 같이 하얀색의 땅에 해당하는 역영이 보입니다.
◦ Position: 0, 0, 0
◦ Rotation: 0, 0, 0
◦ Scale: 10, 1, 10

- Project 탭에서 Assets 폴더를 선택하고 마우스 메뉴 버튼을 누른 후 'Create >> Folder'를 선택합니다.

- 폴더 이름을 Materials로 변경하고 Materials 폴더를 선택하고 마우스 메뉴 버튼을 누른 후 'Create >> Material'을 선택합니다.

- Material 이름을 Ground로 변경하고 Shader를 'Lagacy Shaders >> Diffuse'로 변경합니다.

- Main color의 (R, G, B)의 값을 (128, 128, 128)로 변경합니다.

- Tiling의 (x, y) 값을 (5, 5)로 변경하고 Texture를 아래 그림과 같이 체크무니 형식을 선택합니다.

- 새로운 Material을 생성하고 아래와 같이 수정합니다.
◦ 이름은 White로 변경합니다.
◦ (R, G, B) 값은 (255, 255, 255)로 변경합니다.
◦ 나머지는 기본값을 유지합니다.

- 새로운 Material을 생성하고 아래와 같이 수정합니다.
◦ 이름은 Blue로 변경합니다.
◦ (R, G, B) 값은 (0, 0, 255)로 변경합니다.
◦ 나머지는 기본값을 유지합니다.

- 새로운 Material을 생성하고 아래와 같이 수정합니다.
◦ 이름은 Red로 변경합니다.
◦ (R, G, B) 값은 (255, 0, 0)로 변경합니다.
◦ 나머지는 기본값을 유지합니다.

- 새로운 Material을 생성하고 아래와 같이 수정합니다.
◦ 이름은 Black로 변경합니다.
◦ (R, G, B) 값은 (0, 0, 0)로 변경합니다.
◦ 나머지는 기본값을 유지합니다.

- 위에서 만든 Plane을 선택하고 Inspector 창에서 아래와 같이 변경합니다. 아래 그림과 같이 타일 형식의 땅을 볼 수 있습니다.
◦ 이름을 Ground로 변경합니다.
◦ Materials의 Element를 Grounds로 변경합니다.

3. Unity 자동차 생성하기
- Hierarchy 탭에서 마우스 메뉴 버튼을 누른 후 'Create Empty'를 선택합니다.

- 생성된 'GameObject'를 선택 후 Inspector 탭에서 아래와 같이 설정합니다.
◦ 이름을 Car로 변경합니다.
◦ Transform 정보를 아래와 같이 변경합니다.
- Position: (0, 0.2, 0)
- Rotation: (0, 0, 0)
- Scale: (1, 1, 1)

- 'Car' Object를 선택 후 마우스 메뉴 버튼을 누른 후 'Create Empty'를 선택합니다.
- 생성된 'GameObject'를 선택 후 Inspector 탭에서 아래와 같이 설정합니다.
◦ 이름을 Body로 변경합니다.
◦ Transform 정보를 아래와 같이 변경합니다.
- Position: (0, 0, 0)
- Rotation: (0, 0, 0)
- Scale: (0.1, 0.06, 0.2)

- Body를 선택하고 마우스 메뉴버튼을 누른 후 메뉴에서 '3D Object >> Cube'를 선택합니다.

- Cube Object를 선택 후 Materials를 White로 변경합니다. 아래 그림과 같이 하얀색 Cube가 생성된 것을 확인할 수 있습니다.

- 'Car' Object를 선택 후 마우스 메뉴 버튼을 누른 후 'Create Empty'를 선택합니다. 생성된 'GameObject'를 선택 후 Inspector 탭에서 아래와 같이 설정합니다.
◦ 이름을 Wheels로 변경합니다. - 'Wheels' Object를 선택 후 마우스 메뉴 버튼을 누른 후 'Create Empty'를 선택합니다. 생성된 'GameObject'를 선택 후 Inspector 탭에서 아래와 같이 설정합니다.
◦ 이름을 LeftWheel로 변경합니다.
◦ Transform 정보를 아래와 같이 변경합니다.
- Position: (-0.065, -0.03, 0.06)
- Rotation: (0, 0, -90)
- Scale: (0.06, 0.015, 0.06)

'LeftWheel' Object를 선택 후 마우스 메뉴 버튼을 누른 후 '3D Object >> Cylinder'를 선택합니다.

- Cylinder Objects의 Materials를 Blue로 변경합니다. 아래 그림과 같이 왼쪽 바퀴가 생성된 것을 확인할 수 있습니다.

- LeftWheel Object를 선택하고 마우스 메뉴버튼을 누른 후 메뉴에서 Duplicate 버튼을 선택합니다.

- 복제된 Object를 선택하고 Inspector 탭에서 아래 내용을 수정합니다. 아래 그림과 같이 오른쪽 바퀴가 생성된 것을 확인할 수 있습니다.
◦ 이름을 RightWheel로 변경합니다.
◦ Transform 정보를 아래와 같이 변경합니다. 나머지 값은 기존 값을 그대로 사용합니다.
- Position x: 0.065
- Rotation z: 90

- 'Wheels' Object를 선택 후 마우스 메뉴 버튼을 누른 후 'Create Empty'를 선택합니다. 생성된 'GameObject'를 선택 후 Inspector 탭에서 아래와 같이 설정합니다.
◦ 이름을 CasterWheel로 변경합니다.
◦ Transform 정보를 아래와 같이 변경합니다.
- Position: (0, -0.03, -0.06)
- Rotation: (0, 0, 0)
- Scale: (0.06, 0.06, 0.06)

- CasterWheel Object를 선택하고 마우스 메뉴버튼을 누른 후 메뉴에서 '3D Object >> Sphere'를 선택합니다.

- Sphere Object를 선택 후 Inspecter 탭에서 Materials를 Blacke으로 선택합니다.

4. Unity 자동차 물리적 특성 및 이동기능 추가
- 이 상태에서 Play 버튼을 눌러보면 자동차가 하늘에 떠 있는 것을 화면과 Position y 값을 통해 확인할 수 있습니다. 이유는 아직 물리적 특성이 적용되지 않았기 때문입니다.

- Play를 중지하고 Car Object를 선택 후 Inspector 탭에서 AddComponent 버튼을 선택 후 Rigidbody를 선택합니다.

- Rigidbody의 값을 아래와 같이 설정합니다.
◦ Mass: 0.1
◦ Drag: 0.001
◦ Angular Drag: 0.001

- Play 버튼을 눌러보면 자동차가 아래로 떨어지는 것을 화면과 Position y 값을 통해 확인할 수 있습니다. 이제 물리적 특성이 적용 됐습니다.

- 'Car' Object를 선택 후 마우스 메뉴 버튼을 누른 후 'Create Empty'를 선택합니다. 생성된 'GameObject'를 선택 후 Inspector 탭에서 아래와 같이 설정합니다.
◦ 이름을 Colliders로 변경합니다. - 'Colliders' Object를 선택 후 마우스 메뉴 버튼을 누른 후 'Create Empty'를 선택합니다. 생성된 'GameObject'를 선택 후 Inspector 탭에서 아래와 같이 설정합니다.
◦ 이름을 LeftWeel로 변경합니다. - LeftWeel Object를 선택 후 Inspector 탭에서 'Wheel Collider' Component를 추가합니다.

- Inspector 탭에서 LeftWeel Object의 특성을 다음과 같이 변경합니다. 아래 내용을 제외한 나머지는 기본값을 사용합니다. 아래 그림과 같이 하늘색 동그란 선이 왼쪽 바퀴의 중앙에 위치하게 됩니다.
◦ Transform
- Position: (-0.065, -0.025, 0.06)
◦ Weel Collider
- Mass: 0.02
- Radius: 0.03
- Weel Damping Rate: 0.0001
- Suspension Distance: 0.01
- Force App Point Distace: 0
- Suspension Spring: Spring (0), Damper (0), Target Position (0.5)

- LeftWheel을 선택하고 마우스 메뉴버튼을 누른 뒤 메뉴에서 Duplicate를 선택해서 복제합니다.
- 복제된 Object를 선택 후 Inspector 탭에서 아래와 같이 설정합니다. 나머지는 그대로 둡니다.
◦ 이름을 RightWeel로 변경합니다.
◦ Transform Position x: 0.065

- Project 탭에서 'Assets >> Materials' 폴더를 선택하고 마우스 메뉴버튼을 누른 후 메뉴에서 'Create >> Physics Material'을 선택합니다.

- 생성된 Physics Material의 특성을 아래와 같이 수정합니다.
◦ 이름: CasterWheel
◦ Dynamic Friction: 0.001
◦ Static Friction: 0.001
◦ Bounciness: 0

- Hierarchy 탭에서 'CaterWheel >> Sphere' Object를 선택 후 'Sphere Collider'의 'Material'에 'CaterWheel' Physics Material을 지정합니다.

'로봇 > ROS' 카테고리의 다른 글
URDF를 이용해 만든 로봇에 Unity 자동차 연결하기 (3) (4) | 2023.08.15 |
---|---|
URDF를 이용해 만든 로봇에 Unity 자동차 연결하기 (2) (0) | 2023.08.15 |
URDF를 이용해 만든 로봇에 가상 자동차 연결하기 (2) (0) | 2023.08.11 |
URDF를 이용해 만든 로봇에 가상 자동차 연결하기 (1) (0) | 2023.08.09 |
Gazebo를 이용해 Depth Camera 시뮬레이션 하기 (2) | 2023.07.22 |