티스토리 뷰
MuJoCo는 SDF 플러그인을 제공한다.
https://github.com/google-deepmind/mujoco/blob/main/plugin/sdf/README.md
기본적인 SDF들에 대한 함수를 작성해두었다. 이를 참고하여 원하는 물체에 대한 SDF를 선언하여 MuJoCo에서 사용할 수 있다.
대충 기존 Collision mesh와는 다르게 복잡한 형상에 대한 Collision도 잘 확인해준다는 것 같은데, 항상 무조코가 그렇듯이 정확한 사용법을 모르겠다. 내가 원하는 건 섬세한 mesh의 표현이다.
오른쪽이 내가 시뮬레이션하고 싶은 물체이다. 보이는 것과 같이 내부가 비어 있는 비커 모양을 하고 있는데 이에 대한 Convex hull 모양은 왼쪽과 같다. 실제로는 내부가 비어 있지 않고 꽉찬 실린더 형태이다. 이 말은 작은 물체를 비커 내부에 넣지 못한다는 뜻이다. 이런 한계점을 SDF를 이용하여 해결할 수 있다 생각하여 공부중이다. 조금 더 확인해보고 2편으로 돌아와야겠다.
주어진 OBJ을 Finer 하게 바꿀 수 있는 방법으로는 https://github.com/SarahWeiii/CoACD
매우 간단한 형상을 Simulation 해봤다. 상자안에 작은 구슬을 넣는 형태. Fusion360으로 모델링 후 obj 파일로 추출한 다음 mjcf xml로 변경하여 mujoco에서 확인하면 위에 처럼 Visual은 제대로 나오지만 Collision은 둔탁한 형태가 된다. 이를 해결하기 위해서 CoCAD를 이용해 Collision mesh를 decomposition 해줘야 한다.
obj2mjcf 레포는 단순히 obj 파일을 mjcf로 바꿔주는 것 말고도, Cocad를 옵션으로 사용할 수 있다. 아래 커맨드를 이용하여 Collision mesh가 decompose된 mjcf xml을 만들면 된다.
obj2mjcf --obj-dir /home/haegu/capex_ws/mj_sim/assets/test --save-mjcf --decompose --coacd-args.preprocess-resolution 70 --coacd-args.threshold 0.03
* MuJoCo Simulation 에서 숫자 2를 누르면 geom들의 visual 정보를 끌 수 있다. 3을 누르면 collision geom들의 정보를 볼 수 있다.
decompose된 collision mesh를 확인해보면 위 사진처럼 보인다. 기존에 상자 위(공중)에 떠 있던 구슬이 상자 안쪽으로 잘 들어가 있는 모습도 볼 수 있다. 물론 decompose한 geom mesh에 solref와 solimp등을 설정해줘야 한다.
혹시나 테스트 해보고 싶은 사람을 위해 zip파일을 남기려 했는데 티스토리 파일 첨부가 안보인다. 네이버 블로그 가서 다운받자. !mesh path를 수정해줘야 한다.
'미니멀공대생 > Control' 카테고리의 다른 글
Linear Complementarity Problem을 이용한 접촉 모델(Contact Model)(2) :: 접촉 시뮬레이션 (0) | 2024.09.20 |
---|---|
contact model, contact force 기초 논문 (0) | 2024.09.19 |
Linear Complementarity Problem을 이용한 접촉 모델(Contact Model)(1) (2) | 2024.09.12 |
Homotopy path planning(호모토피 경로 계획) (0) | 2024.09.07 |
[논문리뷰] Fast Model Predictive Control with Soft Constraints (3) | 2024.08.09 |