isaac gym을 다운로드 받으면 index.html가 같이 다운받아진다.
index.html에 적혀있는 mjcf 관련 내용을 정리해 보았다.
그럼 고!
1. Overriding Inertial Properties
이건 urdf와 mjcf 파일 포멧 모두에 해당되는 내용이다.
rigid body에서 Inertial properties는 안전성을 위해 매우 중요하다! 이 값들은 urdf와 mjcf 파일에서 명시할 수 있는데 이 값들이 잘못 지정되어 있는 경우가 매우 많다ㅠ
그래서 isaac gym에서는 collision shape의 geometry를 바탕으로 center of mass와 inertia tensors를 자체적으로 계산해서 overriding하는 기능을 지원한다.
asset_options.override_com = True
asset_options.override_inertia = True
위의 값들을 Ture로 세팅하면 isaac gym에서 계산한 값들로 overriding 시킬 수 있다. default로 False가 지정되어있기 때문에 위의 값들을 True로 바꿔주지 않으면 original file에서 지정된 값으로 inertial properties 들이 세팅된다.
예시 코드)
asset_root = "../../assets"
asset_options = gymapi.AssetOptions()
# asset options에서 override_inertia option과 override_com option을 true로 세팅
asset_options.override_inertia = True
asset_options.override_com = True
# 이렇게 세팅된 option을 asset을 load하는 함수의 parameter로 넣어주기
asset0 = gym.load_asset(sim, asset_root, "urdf/ycb/011_banana/011_banana.urdf", asset_options)
2. Creating Actors
asset을 create하거나 load한다고 해서 자동으로 simulation에 asset이 추가 되는 것이 아니다!
gym.create_actor 함수를 사용해서 env에 asset을 actor로 추가해주어야 simulation에 반영이 된다.
만약 actor의 collision filter가 -1로 세팅이 되어 있으면 actor는 asset loader에 의해 load된 filter를 사용하게 된다. mjcf 파일에 contypes/conaffinities가 non-zero로 세팅이 되어있을 경우(충돌이 활성화된 경우)나 다른 contact이 명시되어 있는 경우 collision filter 값을 신경써서 세팅해 주어야한다.
actor filter 값이 0으로 세팅이 되어 있으면 actor의 모든 shape 간의 self collision을 활성화한다.
actor filter 값이 0보다 큰 값으로 세팅이 되어 있으면 actor의 모든 shape 간의 self collision을 비활성화한다.
3. Limitation
mjcf 파일 로드 관련 limitation 들은 다음과 같다.
1) primitive shape
MJCF importer는 primitive shape(box, capsule, sphere 등..)만 지원한다. Mesh loading은 현재 지원하지 않는다.
(그런데 지금은 지원하는 것 같기도하다..)
2) multipe joints between pair of bodies
MJCF importer는 pair of bodies에 multipe joints가 있는 것을 허용한다.
3) worldbody has no more than one direct child body
MJCF importer는 worldbody가 최대 하나의 child body를 가지는 mjcf file만 허용한다. 즉, MJCF가 environment 전체를 묘사하는 것을 허용하지 않는다. (따라서 하나의 MJCF file에 robot과 groud plane이 같이 있는 것을 허용하지 않는다.)
4. Joint
Gym Importer는 MJCF file과 URDF file에 정의된 joint들을 보존한다.
Fixed, revolute, prismatic joint, spherical를 support한다.
5. mjcf 파일을 load하는 함수
mjcf file을 load하는 함수는 다음과 같다.
load_mjcf(self: Gym, sim: Sim, rootpath: str, filename: str, options: AssetOptions = None)
* parameter
- parameter1(Sim): Simulation Handle
- parameter2(str): path to asset root folder
- parameter3(str): asset file name
- parameter4(AssetOption): asset option
* Return
- Return: handle to asset
- Return type: handle
'연구 > isaac gym' 카테고리의 다른 글
isaac gym 자료 너무 없어! (2) | 2023.02.15 |
---|