cartpole 직접구현 코드 실행하기
https://akswnd98.tistory.com/23/#comment14835098
여기 블로그분께서 직접 cartpole을 구현하셔서 이걸 직접 해보려고 한다.
댓글로 여쭤보니 친절하게 사용법을 알려주셨다.
source 폴더에 custom_standalone을 만들고
그 안에 cartpole_train 소스를 clone 받는다.
그리고 소스코드 안에서 main.py를 isaaclab으로 실행한다.
근데 모듈이 없다네.
Simulation Application
흠...
https://docs.omniverse.nvidia.com/isaacsim/latest/manual_standalone_python.html#simulationapp
이건 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 라이브러리인데 어떻게 하라는 걸까.
비슷한 에러가 뜨는 사람인 것 같은 포럼글이다.
라이브러리 코드의 위치는 여기인데 왜 에러가 난다는 거지?
보면 articulation view에서 나온 것인데.
docs를 보면 articulation이 관절있는 로봇의 형태를 말하는 것인 것 같다.
결국 cartpole과 제대로 일치하는 것을 찾아오지 못해서 생긴 것이라고 추정한다.
이 포럼과 비슷한 문제인 것 같다.
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이 이동하는 모습.
'개발 · 컴퓨터공학 > 엔비디아 Issac-Sim' 카테고리의 다른 글
Isaac-Sim 강화학습 cartpole 모델 저장하기 (6) | 2024.11.14 |
---|---|
Isaac-Sim : Omniverse Nucleus 설정하기 (10) | 2024.11.12 |
isaac sim / isaac lab 강화학습 humanoid (3) | 2024.11.10 |
isaac sim pycharm 연동하기 (1) | 2024.11.10 |
Isaac Sim / Isaac Lab 강화학습 RL-Games 예제 실행하기 (6) | 2024.11.09 |