isaac-sim 강화학습 cartpole custom 구현 실행하기

728x90
반응형

 

 

cartpole 직접구현 코드 실행하기

https://akswnd98.tistory.com/23/#comment14835098

 

isaac sim ddpg solution of cartpole problem

isaac sim에 입문하는 용도로 제격인 주제인 거 같다. https://github.com/akswnd98/cartpole_train GitHub - akswnd98/cartpole_train Contribute to akswnd98/cartpole_train development by creating an account on GitHub. github.com isaac sim 인터

akswnd98.tistory.com

여기 블로그분께서 직접 cartpole을 구현하셔서 이걸 직접 해보려고 한다.

댓글로 여쭤보니 친절하게 사용법을 알려주셨다.

 

source 폴더에 custom_standalone을 만들고

그 안에 cartpole_train 소스를 clone 받는다.

 

그리고 소스코드 안에서 main.py를 isaaclab으로 실행한다. 

 

근데 모듈이 없다네.

 

Simulation Application

https://docs.omniverse.nvidia.com/py/isaacsim/source/extensions/omni.isaac.kit/docs/index.html?highlight=simulationapp#omni.isaac.kit.SimulationApp

 

Simulation Application [omni.isaac.kit] — isaac_sim 4.2.0-rc.17 documentation

© Copyright 2018-2024, NVIDIA. Last updated on Sep 19, 2024.

docs.omniverse.nvidia.com

흠... 

 

https://docs.omniverse.nvidia.com/isaacsim/latest/manual_standalone_python.html#simulationapp

 

Python Environment — Omniverse IsaacSim latest documentation

The following code provides a usage example for how SimulationApp can be used to create an app, step forward in time and then exit. Note Any Omniverse level imports must occur after the class is instantiated. Because APIs are provided by the extension/runt

docs.omniverse.nvidia.com

이건 isaac-sim docs이다. 

 

omni.isaac.kit는 isaac-lab 소스가 아닌 isaac-sim의 설치 경로에 있다.

그럼 isaac lab이 아니라 isaam sim으로 실행해보자.

 

이렇게 batch 파일을 isaam lab이 아닌 isaac sim으로 시도하니 실행이 되었다.

 

하지만 방법이 틀린듯... 

isaac sim 창이 떠도 아무것도 생기지 않는다. 

 

원인 파악하기 

simulation app 즉 isaac-sim을 띄우는데는 성공하였지만,

실행 도중에 에러가 뜨는 것이다. 

 

utils의 hard_update라는 모듈에서 에러가 가는 모양인데, 

 

흠? 이제보니 utils라는 모듈은 cartpole_train 프로젝트 안에있는 스크립트를 말하는 것 같은데,

isaac-sim은 cv2의 utils를 잡고 있다.

 

이것과 헷갈린 듯 하다.

서로 이름이 겹쳐서 생긴 오류인 것 같다.

 

이쪽을 update_utils로 바꿔주자.

 

코드도 변경 

 

수정 후 다시 실행 

다시 실행해보자. 

 

잘 되나 싶더니 또 에러가 나왔다.

이번엔 safetensors..

 

conda create --name isaac-sim python=3.10

한 번 anaconda로 환경을 만들고 safetensors를 설치해보자. 

isaac-sim에서는 python을 3.10으로 설치하자. 

 

pip install safetensors

pip로 safetensors를 설치 .

 

python.bat D:\IsaacSim-Projects\IsaacLab\source\custom_standalone\cartpole_train\main.py

그리고 다시 시도해보자.

 

아.. 그럼에도 module 에러가 생겼다. 

 

conda install -c huggingface safetensors

pip말고 conda로 설치해보자.

이번엔 되려나..?

 

여기까진 동일하고.

안된다... conda로도 설치해봤는데 그래도 안된다. 

분명 설치했는데 왜 python import가 안될까.

 

python -m pip install safetensors

모듈을 스크립트로써 실행하도록 옵션을 설정하고 해보았다.

 

오 그래도 safetensors 모듈에서 벗어났다. 

이 에러는 마찬가지로 utils 충돌이다. 

 

trainer.py의 utils도 바꿔준다. 

 

Articulation 오류 

이제는 흠.. 다음 에러는 하고 보게 되네.

AttributeError: 'NoneType' object has no attribute 'is_homogeneous'라고?

이건 omni 라이브러리인데 어떻게 하라는 걸까.

 

https://forums.developer.nvidia.com/t/omnigraph-warning-nonetygpe-object-has-no-attribute-is-homogeneous/271411

 

OmniGraph Warning "NoneTygpe" Object has no attribute "is_homogeneous"

When I was configuring my Jackal 4 wheeled robot in Isaac Sim with ROS. A question arised: When I configure the Omni Graph for my 4 wheeled Jackal AGV in Isaac Sim, the default Articulation Root is the root of the USD(the top level Prim in Isaac Sim, here

forums.developer.nvidia.com

https://forums.developer.nvidia.com/t/isaac-sim-omni-physx-tensors-plugin-cuda-error-illegal-memory-access/284444

 

Isaac Sim [omni.physx.tensors.plugin] CUDA error: illegal memory access

Hey, I’m trying to train something using Isaac Sim with many instances of the same environment (roughly 2000). I’m facing an issue where the exact same code and script will sometimes error and sometimes execute without issues. I’m using a NVIDIA GeFo

forums.developer.nvidia.com

 

비슷한 에러가 뜨는 사람인 것 같은 포럼글이다. 

 

라이브러리 코드의 위치는 여기인데 왜 에러가 난다는 거지?

보면 articulation view에서 나온 것인데. 

 

https://docs.omniverse.nvidia.com/isaacsim/latest/reference_glossary.html?highlight=ArticulationView#core-api

 

Omniverse Isaac Sim Glossary — Omniverse IsaacSim latest documentation

Universal Scene Description (USD) is an easily extensible, open-source 3D scene description and file format developed by Pixar for content creation and interchange among different tools. As a result of its power and versatility, it’s being widely adopted

docs.omniverse.nvidia.com

docs를 보면 articulation이 관절있는 로봇의 형태를 말하는 것인 것 같다.

결국 cartpole과 제대로 일치하는 것을 찾아오지 못해서 생긴 것이라고 추정한다. 

 

https://forums.developer.nvidia.com/t/pattern-world-fancy-robot-did-not-match-any-articulations/283975

 

Pattern '/World/Fancy_Robot' did not match any articulations

What do these errors mean? Few days ago, it can work. I just copy the “Hello robot” codes in the tutorial.

forums.developer.nvidia.com

이 포럼과 비슷한 문제인 것 같다.

 

2023.1.1 버전의 articulation 경로 문제를 언급한다.

 

실제 cartpole 프로젝트도 2023.1.1 버전으로 되어있는데 이게 문제일 것 같기도 하다. 

 

assets_root_path = 'omniverse://localhost/NVIDIA/Assets/Isaac/4.2.0/'
cartpole_usd_path = os.path.join(assets_root_path, 'Isaac/Robots/Cartpole/cartpole.usd')

이렇게 버전만이라도 변경해보자. 

 

omniverse Nucleus

저 localhost가 뭔지 찾아보니까 nucleus 로컬 서버를 의미한다.

이제보니 나는 이걸 설정하지 않았는데. 이 부분을 유의해서 봐야겠다. 

 

 

해당 포스팅을 참고하자.

 

 

Omniverse Nucleus 실행 후

성공했다. 문제는 nucleus였다.

 

assets path를 보고 눈치를 챘다.

cartpole과 같은 에셋들을 여기서 캐싱해놓고 가져오는데 localhost라고?

localhost로 실행하는 것은 nucleus 서버였고. 

 

이걸 실행해서 여기서 cartpole.usd를 정상적으로 가져올 수 있는 거였다. 

 

light 설정을 camera light로 바꾸었더니 cartpole들이 잘 보인다. 

 

학습을 위해 요리조리 cartpole이 이동하는 모습.

728x90
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유