본문 바로가기
연구/머신러닝

CoppeliaSim에 로봇 추가하고 IK 모듈 세팅하기

by -솔솔- 2021. 1. 21.
반응형

Inprim framework에 kuka iiwa를 넣는 것을 쉽게 생각하고 시도했는데, 쉽지 않았다...

IRL 드라이버를 수정하고 Intprim의 Interactive application 수정 및 빌드하는 것도 일이었지만, 그에 앞서 CoppeliaSim에 대한 이해가 전혀 없이 사용하려다 보니 뭐가 문제인지도 파악하기 힘들었다.

 

결국 CoppeliaSim의 Inverse Kinematics Module 세팅을 해야한다는 것을 깨달았고, 유튜브에서 Vrep (CoppeliaSim의 예전 이름) 튜토리얼들을 보며 간신히 알아냈다.. 아래 동영상(2:16부터)에서 설명해준 IK 모듈 쓰는 방법을 가장 많이 참고했다.

 

www.youtube.com/watch?v=X73NzCc2E2c&list=WL&index=1&ab_channel=V-RepTutorials

 

본 포스팅에서는 Intprim ROS framework에서 제공해주는 tutorial_world.ttt 씬에 포함된 ur5c 로봇을 새로 삽입해 본 것을 정리하려 한다. ttt 파일이 혹시 망가지는 경우를 대비해 tutorial_world_new.ttt 파일로 복사하여 사용하였다.

 

우선, 씬에서 주어진 controlled agent 처럼 Cuboid/Force sensor/UR5 형식의 hierarchy model을 만들어준다. 드래그 앤 드롭으로 설정하면 된다.

 

다음으로는 아래 순서대로 IK 모듈을 세팅한다.

 

1. Joint 의 IK 모드 활성화

아래처럼 툴 > 씬 오브젝트 프로퍼티 에서 모드를 Inverse Kinematics mode로 선택한다.

 

 

2. Dummy 추가: target dummy와 tip dummy

tip dummy는 로봇의 reference point (end-effector에 위치한 한 점)를 의미하고, target dummy는 simulation 수행 시 tip dummy의 goal point가 된다. 아래처럼 생성한다.

 

3. Dummy들의 position, orientation 세팅

tip dummy의 경우, 아래 그림처럼 end-effector 의 child로 두고 parent frame과 상대적인 포즈를 동일하게 한다.

target dummy는 원하는대로 세팅하면 되는데, 내 경우 ROS topic으로 로봇을 operate 할 예정이므로, target dummy와 동일한 포즈로 initialize 했다.

 

4. Target dummy와 tip dummy 링킹

tip dummy 가 target dummy를 따라가게 할 것임을 명시해주는 부분이다.

아래 그림처럼 두 dummy를 선택한 후 coppelia sim의 맨 위 탭에서 Edit -> Link를 선택하여 링킹 한다.

 

5. 새 IK 그룹과 엘리먼트 생성

IK 그룹을 생성하고, 새로 넣은 로봇 조인트들을 IK 그룹에 포함시킨다. CoppeliaSim 화면에서 왼쪽의 f(x) 아이콘을 누르면 Calculation  Module이 나오는데, 아래 그림처럼 하면 된다.

IK 그룹을 생성한 뒤, 해당 그룹의 IK element로 IK_tip을 넣어준다.

 

 

6. Kinematic chain의 Base 정하기

아래 그림처럼 삽입한 로봇의 가장 상위 링크(UR5)로 정한다.

 

 

7. 컨스트레인트 정하기

위 그림처럼 알파 베타, 감마까지 컨스트레인트를 정해줬다.

 

8. 캘큘레이션 방법 정하기 (디엘에스 등)

calculation method에는 수도 인버스가 있고 디엘에스가 있는데 디엘에스로 선택했다. 댐핑 리스트 스퀘어라고 하는데, 뭔지는 모르겠지만 일단 이렇게 했다.

 

추가로, 실행해보았더니 새로 만든 로봇의 속도가 너무 빨라서 joint dynamic properties에서 upper velocity limit을 낮췄다. 그랬더니 아래처럼 intprim ros framework를 이용해서 CoppeliaSim의 새로운 로봇을 잘 제어할 수 있었다.

 

 

이제 정말 iiwa를 넣어봐야지 ㅎㅎ

 

댓글