Jetbot
Unity Technologies
#일기장 주의#
로봇 + 강화학습 스터디를 하면서 이것저것 해본 내용 정리
로봇하면 보통 URDF 파일을 생각 할텐데 인터넷에서 Jetbot URDF 파일을 구하지 못했다 (사실 URDF를 구해도 그걸 안썼을 것 같다. 개인적으로 Unity에서 URDF 할 때 Collider를 V-HACD로 잡아서 마음에 들지 않음. Components를 지우면 되지만 그러나 Anchor 다시 잡나... 나는 CAD가 더 편하다 Graphics 최적화도 Pixyz로 할 수 있고 아무튼)
남들이 보면 별거 아니고 그냥 노가다의 향연인데 그래도 왜 이렇게 했는지 기록하는 중.
Step.1 CAD/URDF 파일 구하기
기본적으로 판매하는 로봇사에서 URDF 또는 Xacro를 주는 경우가 많다. 해당 회사의 Github를 찾아보면... 있는 경우도 있고 어차피 전체 오브젝트에서 Render만 일부부이고 실제 Physics를 Call하는 Collider 부분은 일부분이기 때문에... 부분 수정으로 직접 만드는 방법이 있다. 이는 구한 CAD/URDF 파일의 연동성에 따라 달라지는데 우선 나의 경우에는 USD 파일 포맷을 구했으니 해당 포맷으로 진행해보고자 한다.
Step.2 Pixyz로 USD 파일을 Unity로 옮기기
Materials은 넣지 않았다. 이 부분은 마지막에 하면 되니까... Pixyz에서 해당 Jetbot USD를 가져오니 다음과 같이 나타난다.
Hierarchy를 보니까 다음과 같이 설정되어 있다. 오브젝트가 별로 없는걸 보니 쉽게 할 수 있을 것 같다고 생각했는데....
그럼 그렇지... 이 부분을 없애줘야 한다. 안그러면 Mesh Collider가 예쁘게 잡히지 않음. 아 물론 다른 방법도 있다.
유니티 라이브에서 발표한 내용인데 콜라이더만 따로 잡아주면 됨. 그래도 전체 형태를 해치고 싶지는 않아서... 그럼 그럼... Fusion에서 따로 없애려고 했다.
Mesh를 Fusion Part로 바꿔주려고 했는데 폐공간이 아니여서 안됨. 음...^_^ 어차피 회사에서 진행하는 프로젝트 느낌이 아니니까 대충 문제만 해결하고 넘어간다. 참고로 Mesh => Body로 바꾸는데 한 15분 정도 걸렸음.
여기서 바퀴의 3중점을 잡고 해당 점을 기준으로 CAD의 Mirror기능을 사용했는데... 메쉬가 많아서 그런지 2시간동안 연산을 진행핼 수 없었다. 이에 다시 Pixyz르 돌아와서 메쉬를 줄여보았음
우선 Guided Import 셋팅에서 진행함, 현재 53962개로 Triangles이 너무 많기 때문에 해당값을 줄여보기로 함.
우선은 Strong으로 해당 값을 설정하고 연산을 해보았음.
Triangles의 개수가 7052개로 약 87% 감소함. 눈에 보이는 Mesh Render 자체는 큰 변화가 없는 편. 바로 Fusion 360에서 수정을 시작함.
메쉬변환을 하니까 자연스럽게 2개로 나누어짐. Decimate 이전에는 2개로 나눠지지 않았는데 서로 연결되는 부분이 Decimated 된 것 같음. 도약부는 어차피 필요 없으니, 지면과 닿는 다음의 형상만 변환을 시도 함.
다시 Pixyz로 넘어와서 확인.
예전에 Tire Pattern 관련 논문을 읽었는데 사실 유의미한 결과는 없다고 기억함. Mesh Collider가 어떻게 잡힐 지 모르겠는데 일단 고고
자세히보면 Transform과 Pivot이 다름. Transform은 뭐 그러려니해도 Pivot은 중심부(회전축)에 놓는게 편하니까 수정 후 유니티로 넘김.
완성되면 다음과 같이 셋팅됨.
아 참고로 USD 파일인 Jetbot 친구도 최적화 해서 넘겨주자. 이 조그만한 친구가 1500098개라니... 말이 안됨
생긴건 똑같은데 467242개로 줄여줬음. + 색칠공부도
한번 더 말하면 정리글이 아니라 일기글임... 생각해보니까 Caster도 해야 해서 Caster Triangle도 줄여줬다.
응? 이건 그냥 Primitive 모델 쓰는게 나을 듯 흐음..
유니티로 넘겨오니까 역시 이렇게 됨... 혹시 모르니 Pixyz Plugin을 써보도록 하자
그만 알아보도록하자 ^_^
그냥 Primitive로 만듬
팀원들이랑 종이로 일단 해보자는 이야기가 나왔는데 종이 마찰계수가 있을까? 봤더니 있더라.. 역시 일본...
Paper Friction - Effect of Real Contact Area에 보면 잘 나와있다. 습도 무시하고 0.6으로 설정함
Articulation Body도 설정하고 축이랑 Anchor 맞췄음
대충 요런 느낌 하다보니 일단 POC로 대충 맞춤 (눈으로 대칭만)
딱봐도 캐스터 때문에 이상하게 돈다. 흠...
캐스터 y축 고정하니까 이렇게 됨 slipping 현상이 있는데 물성치를 내가 원하는대로 때려박아서 그런듯...?
수정하면 잘 될 것 같다. 코드 수정 좀 해야 하는데.... Jetbot은 속도차로 turn을 하는 걸로 기억해서... 그 부분만 하면 될듯?
댓글