연구/PyFleX

softgym에 대하여

남하욱 2024. 3. 29. 17:42

PyFleX는 시뮬레이션 라이브러리이다. 이 PyFleX에서 우리가 하고 싶은 강화학습을 하기 위해서는 PyFleX뿐 아니라 PyFleX에서 동작하는 환경을 만들고 환경에서 agent를 학습시켜야 한다.

 

하지만 이 방대한 PyFleX에서 어떻게 환경을 만들고 학습을 시킬지 막막한데, 기존에 PyFleX를 사용하여 강화학습을 진행한 softgym이라는 논문이 있었다. PyFleX에서 강화학습을 하기 위한 환경을 제공하는 softgym에 대해서 간단히 소개하려 한다.

 

softgym 주소

https://github.com/Xingyu-Lin/softgym

 

GitHub - Xingyu-Lin/softgym: SoftGym is a set of benchmark environments for deformable object manipulation.

SoftGym is a set of benchmark environments for deformable object manipulation. - Xingyu-Lin/softgym

github.com

 

softgym은 이 논문에서 진행한 여러가지 환경에 대해서 각각의 환경을 제공한다. 만약 하려고 하는 것이 이것 중에 있다면 그대로 사용하면 되고, 조금 다르다면 환경을 만든 이 코드들을 참고하여 자신의 환경을 만들어 사용하면 된다. 이 논문이 제공하는 환경들은 다음에서 볼 수 있다. https://github.com/Xingyu-Lin/softgym?tab=readme-ov-file#softgym-environments

 

softgym 실행

이 softgym의 환경을 실행시켜 보기 위해서 나는 docker를 사용했다. 이 docker로 실행을 시키기 위해서는 PyFleX를 실행시킬 때와 마찬가지로 여러가지를 설치해야한다. 설치는 이 글을 참고한다. [PyFleX] - PyFleX 설치 & 실행 방법

그리고 docker에서 compile을 해야하는데, github에는 설명이 부실하다.

 

다음을 순서대로 terminal에 치면 된다. 마지막은 PassWater 예제를 실행시키는 코드이여서 이름만 바꾸면 됨.

docker run \
  -v ~/softgym/:/workspace/softgym \
  -v ~/anaconda3/:/workspace/anaconda/ \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  --gpus all \
  -e DISPLAY=$DISPLAY \
  -e QT_X11_NO_MITSHM=1 \
  -it xingyu/softgym:latest bash

  
export PATH="/workspace/anaconda/bin:$PATH"
cd /workspace/softgym

export PYFLEXROOT=${PWD}/PyFlex
export PYTHONPATH=${PYFLEXROOT}/bindings/build:$PYTHONPATH
export LD_LIBRARY_PATH=${PYFLEXROOT}/external/SDL2-2.0.4/lib/x64:$LD_LIBRARY_PATH
cd PyFlex/bindings
rm -rf build
mkdir build
cd build
# Seuss 
if [[ $(hostname) = *"compute-0"* ]] || [[ $(hostname) = *"autobot-"* ]] || [[ $(hostname) = *"yertle"* ]]; then
    export CUDA_BIN_PATH=/usr/local/cuda-9.1
fi
cmake -DPYBIND11_PYTHON_VERSION=3.6 ..
make -j

# docker 나오기
exit
  
# softgym 폴더로 이동
cd ~/softgym
export PYFLEXROOT=${PWD}/PyFlex
export PYTHONPATH=${PYFLEXROOT}/bindings/build:$PYTHONPATH
export LD_LIBRARY_PATH=${PYFLEXROOT}/external/SDL2-2.0.4/lib/x64:$LD_LIBRARY_PATH
python3 examples/random_env.py --env_name PassWater

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

PyFleX scene에 대하여  (0) 2024.03.18
PyFleX 실행 방법 정리  (0) 2024.01.15
PyFleX 설치 & 실행 방법  (0) 2024.01.15
PyFleX에 대하여  (0) 2024.01.15