챕터(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