Super Kawaii Cute Cat Kaoani isaac gym 자료 너무 없어!

연구/isaac gym

isaac gym 자료 너무 없어!

치킨고양이짱아 2023. 2. 15. 18:57
728x90
728x90

isaac gym 자료 찾다가 화나서 쓰는 글!

새로운 사실을 알아낼때마다 업데이트 할 예정이다..

누군가에게는 도움이 되길 바라면서..고!

1. IssacGymEnvs의 task 예제코드에서 action의 shape는?

(num_envs, action의 차원)

나는 env마다 compute_reward, compute_observation 등의 함수를 각자 호출하는 줄 알았어서 parameter인 action의 shape가 (action의 차원) 인줄 알았다.

그런데 그게 아니라 전체 env에 대해 호출하는거여서 shape가 (num_envs, action의 차원) 모양이다.

 

2. rigid_body_state는 어떤 frame에 대해 표현되는가?

self.gym.acquire_rigid_body_state_tensor(self.sim)

를 했을 때 return되는 rigid body state의 shape는 (num_of_bodies, 13)이고

[:, 0:3]는 rigid body의 position

[:, 3:7]는 rigid body의 quaternion rotation

[:, 7:10]는 rigid body의 linear velocity

[:, 10:13]는 rigid body의 angular velocity

정보를 담고 있다. 이 정보들은 global frame 기준으로 표현된다!

 

3. actor_root_state는 어떤 정보를 return하는가?

mjcf 파일처럼 root joint를 따로 정의하지 않는 model을 load해서 사용했을 때

self.gym.acquire_actor_root_state_tensor(self.sim)

가 return하는 정보는 rigid_body_state 중 0번 index의 정보와 같았다.

제일 부모 link의 position, rotation, linear velocity, angular velocity를 global frame 기준으로 return한다.

만약 root joint를 따로 정의하는 model format을 사용한다면 해당 joint의 global frame 기준 정보를 return 할 것 같은데 확인은 해보지 않았다.

 

4. load한 asset에서 각 joint의 position 및 rotation 값은 어떻게 알아낼 수 있을까?

gym.get_actor_joint_transforms(envs[i], actor_handles[i])

이렇게 하면 joint 개수만큼의 길이를 가지는 List가 return 된다.

각 element는 joint의 position 및 rotation 정보를 담고 있다.

각 element의 property p(첫번째 항목)은 joint의 global position을 meter로 표현하고

각 element의 property r(두번째 항목)은 joint의 global frame에 대한 rotation 값을 quaternion으로 표현한다.

 

5. bodySpace 상에서 center of mass가 어디에 위치하는지 어떻게 알아낼 수 있을까?

gym.get_actor_rigid_body_properties(envs[i], actor_handles[i])

이렇게 하면 rigid body의 개수만큼의 길이를 가지는 List가 return된다.

각 element에서 com 성분을 추출하면 center of mass가 bodySpace 상에서

어디에 위치하는지 Vec3 값으로 retrun이 된다.

728x90
728x90

'연구 > isaac gym' 카테고리의 다른 글

isaac gym에서 mjcf 파일 로드 시 주의사항  (1) 2023.02.01