Ros상에서 cartpole을 구현하고 이 문제를 해결하기 위해 dqn을 적용해보겠습니다.
https://github.com/PacktPublishing/Hands-On-ROS-for-Robotics-Programming
다음 사이트를 참고했고 chapter11 내용입니다.
우선 설치를 하다가 많은 고생을 했으므로 앞으로 이런 일이 일어나지 않도록 예방하기 위해 가상환경을 이용합니다.
wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
chmod 755 Anaconda3-2020.11-Linux-x86_64.sh
./Anaconda3-2020.11-Linux-x86_64.sh
엔터를 계속 꾹 누르고, yes를 입력하다 보면 설치가 끝납니다.
그리고
gedit ~/.bashrc
을 입력한 후 맨 밑에
export PATH=~/anaconda3/bin:$PATH
source ~/anaconda3/etc/profile.d/conda.sh
다음 내용을 넣어줍니다.
그리고
conda
를 입력하여 정상적으로 설치되었는지 확인합니다.
이제 가상환경을 만들어줍니다.
conda create --name cartpole python=2.7 anaconda
conda activate cartpole
저는 가상환경 이름을 cartpole로 지정하였고, 파이썬 2.7버전을 사용하기 위해 다음과 같이 입력하였습니다.
만약 나중에 진행하면서 문제가 생겨 가상환경을 지우고 새로 만든다면
conda env remove --n cartpole
다음과 같은 명령어로 가상환경을 삭제하고 새로 만들어서 진행하면 됩니다.
이제 텐서플로와 케라스를 깔아보겠습니다.
ROS는 18.04가 깔려있다는 가정하에 진행하도록 하겠습니다.
(저는 ROS를 가상환경에 설치하지 않고 base에 설치했었는데 가상환경에서도 잘 실행되어 따로 추가 설치는 하지 않았습니다.)
위에서 입력한 명령어로 cartpole이라는 가상환경에서 시작하면 됩니다.
pip install protobuf==3.17.3
pip install gym
conda install tensorflow
conda install keras
pip가 아닌 conda로 텐서플로와 케라스를 설치한 이유는 conda로 설치하면 성능이 더 좋고 pip로 설치했을 때 따로 추가로 설치해줘야 하는 CUDA와 CuDNN 라이브러리들을 conda에서는 알아서 다 깔아주기 때문입니다.
그리고 텐서플로와 케라스가 정상적으로 설치되었는지 확인하기 위해
python
import tensorflow as tf
tf.__version__
import keras
print(keras.__version__)
를 실행해봅니다. python에서 나오는 단축키는 ctrl+d입니다.
그리고 cartpole을 구현하기 위해 필요한 이것저것들을 설치하겠습니다.
cd ~/catkin_ws/src
git clone https://github.com/edowson/openai_ros.git
git clone https://github.com/PacktPublishing/Hands-On-ROS-for-Robotics-Programming
git clone https://github.com/ros-controls/ros_controllers
git clone https://github.com/ros-controls/urdf_geometry_parser
git clone https://github.com/ros-drivers/four_wheel_steering_msgs
sudo apt-get install ros-melodic-map-server
sudo apt-get install ros-melodic-slam-gmapping
sudo apt-get install ros-melodic-move-base
sudo apt install ros-melodic-amcl
cd ..
catkin_make
rosdep install openai_ros
그리고
gedit ~/.bashrc
으로 bashrc를 열어서
source ~/catkin_ws/devel/setup.bash
위 내용을 맨 밑에 넣어줍니다.
gedit ~/.ignition/fuel/config.yaml
yaml 파일을 열어서
https://api.ignitionfuel.org 을
https://api.ignitionrobotics.org로 수정
수정해줍니다.
이제 실행해봅니다.
roslaunch cartpole_description main.launch
roslaunch cartpole_dqn start_training.launch
다음 두 명령어를 순서대로 입력하면
잘 작동합니다!
제가 이걸 실행하기까지 발생했던 오류를 해결하는 방법은 다 적어놨는데 다른 오류가 발생했다면 그건 당신의 몫..^^
댓글