본문 바로가기

Simulator/Unity

Implementation of Summit-XL + UR5e (Robotiq 2F-85) in Unity (1) Importing URDF

 챕터(1)에선 로봇의 기존 xacro 파일을 urdf 파일로 변환하고, 변환한 파일을 Unity에 import 하여 로봇을 구현합니다.

 

1. xacro 파일로 urdf 파일 생성

 

 Unity에선 로봇의 URDF 파일로 로봇을 구현할 수 있습니다.

 

 Ubuntu에선 URDF 파일은 다음 명령어를 통해 xacro 파일을 변환시켜 얻을 수 있습니다.

 

rosrun xacro xacro [xacro file name].xacro > [urdf file name].urdf

 

 

 다음 저장소에 summit, ur5e, gripper, sensor 각각의 xacro 파일들을 포함한 4개의 패키지들이 있습니다.

https://github.com/beomjoonlee/summit_ur5e_description

(Unity에 정상적으로 작동되도록 기존 패키지를 수정하였습니다. 위 패키지를 그대 사용하시고 다음에 이어지는 변경 사항 설명은 참고하시면 됩니다.)

 

1. workspace 폴더를 만듭니다.

 

mkdir -p ~/unity_ws/src

 

 

2. workspace 내에 description package를 다운 받습니다.

 

cd ~/unity_ws/src
git clone https://github.com/beomjoonlee/summit_ur5e_description.git

 

 

3. workspace를 build 후 '.bashrc' 파일 내에 명령어를 추가합니다.

 

cd ~/unity_ws
catkin_make
echo "source ~/unity_ws/devel/setup.bash" >> ~/.bashrc

 

 

4. 로봇의 가장 상위 xacro 파일은 'summit_ur5e_description/summit_xl_description/robots/'에 위치한 'summit_xls_std.urdf.xacro'입니다.

 명령어를 입력하여 urdf 파일을 생성합니다.

 

cd ~/unity_ws/src/summit_ur5e_description/summit_xl_description/robots/
rosrun xacro xacro summit_xls_std.urdf.xacro > model.urdf

 

 

 

2. 기존 xacro 파일, urdf 파일 변경 사항 (Just refer)

 

 xacro파일에서 결함이 있다면 로봇이 정상적으로 구현되지 않을 수 있습니다.

 아래는 기존에 제공되는 summit과 ur5e의 description 패키지들을 그대로 사용하였을 때 모습입니다.

 

 로봇의 xacro 파일과 urdf파일들에서 link와 joint들의 관계들 중 주의 깊게 살펴보실 내용은 다음과 같습니다.

 

1. 기존 summit 로봇의 상판 link에 collision이 없어 추가하였습니다.

 

 

 

2. 로봇에 부착되는 여러 구조물들 중 라이다가 놓이는 뒤쪽 구조물을 고려하여 collsion을 박스 모양으로 추가하였습니다.

 

 

 

3. 구조물들과 summit의 연결 joint를 다음과 같이 정의하였습니다. (parent link를 'summit_xl_base_footprint'로 입력하면 위 영상과 같이 무너집니다.)

 

 

 

4. 기존 ur5e의 xacro파일에선 ur5e의 베이스 부분인 'ur5e_base_link'를 기준으로 'ur5e_base'라는 가상의 링크(좌표계)를 생성하였던 것을 다음과 같이 'ur5e_base'에 'ur5e_base_link'를 부착하도록 수정하였습니다.

 

변경 전
변경 후

 

 

5. summit의 상단 부분 'summit_xl_base_chapa'에 'ur5e_base'를 부착하는 방식으로 두 로봇의 joint를 정의하였습니다.

 

 

 

 로봇의 xacro 파일 및 urdf 파일은 unity에 import 후 문제만 없다면 얼마든지 변경 가능해도 좋습니다.

 

 

3. Unity project 생성 및 URDF Import 수행

 

1. Window에서 Unity Hub 실행 후 'New project'를 클릭합니다.

 

 

 

2. 버전과 Core 확인, 'Project name'과 'Location' 입력 후 'Create project'를 클릭합니다.

 

 

 

3. 레이아웃을 본인의 취향대로 변경합니다. 저는 '상단 메뉴' -> 'Window' -> 'Layouts' -> '2 by 3'을 선택하고 상단 메뉴 -> 'Window' -> 'General' -> 'Console'을 추가 후 드래그로 배치하여 다음과 같이 설정하였습니다.

 

 

 

4. 'URDF Importer' 패키지를 추가해야 합니다. 아래 방법 혹은 다음 주소 참고.

상단 메뉴 -> 'Window' -> 'Package Manager" -> 상단 왼 '+' 버튼 클릭 -> 'Add package from git URL...' 선택 -> 'https://github.com/Unity-Technologies/URDF-Importer.git?path=/com.unity.robotics.urdf-importer' 입력 -> 'Add' 클릭

 

 

 

5. 위에서 생성한 urdf 파일 'model.urdf'과 summit_ur5e_description 속 4개의 description 패키지들을 'URDF' 폴더에 모은 후 Project 경로 안에 Assets 내에 넣어줍니다.

 

 

* 다음과 같이 3개의 에러가 발생합니다. 1번, 2번 에러 원인 파일들은 본 튜토리얼에서 사용하지 않기 때문에 무시해도 무방하고, 3번 에러도 무시하고 넘깁니다. (현재까지 3번 에러가 큰 문제가 되지 않았지만,  문제가 되어 튜토리얼을 진행할 수 없는 경우가 있다면 댓글을 남겨주시기 바랍니다.)

 

 

 

6. Unity에 'model.urdf'를 import합니다. 

'Hierarchy' -> '+' 버튼 클릭 -> '3D Object' -> 'URDF Model (import) ->

'Assets/URDF' 내 'model.urdf' 선택 -> 'URDF Import Settings'에서 'Mesh Decomposer'는 'Unity' 선택 -> 'Import URDF' 클릭

 

 

 

7. Scene에 로봇이 추가된 것을 확인할 수 있다.

 

 

 

Next) Implementation of Summit-XL + UR5e (Robotiq 2F-85) in Unity (2)

Changing the properties of links and joints