본문으로 바로가기

강화학습을 공부하려는 분들이 많이 사용하는 것이 OpenAI의 Gym일 겁니다. 그런데 Gym에서 조금 더 나가서 Gazebo를 사용할 수도 있습니다. 영상, Lidar 등을 로봇 쪽 센서로 보고 주행로봇에 강화학습을 적용해볼 수 있다면 보다 더 재미있는(^^) 학습을 할 수 있을 겁니다. 이번에는 강화학습을 공부하는 분들을 위해 ROS의 Gazebo를 이용해서 Gym을 구동하는 환경을 이야기해보도록 하겠습니다.

먼저 ROS Melodic에서 Gym gazebo를 설치하는 방법을 설명한 erlerobot의 Github에 나와있습니다.

여기는 그냥 따라서 설치하면 됩니다. 긁으실때는 github에서 해주세요. 저는 설명을 위해 캡쳐했습니다~

그런데 이 부분에서는 조금 조심해야합니다. 일단 sudo를 이용하지 않아도 설치가 잘 됩니다. 참고로 pip를 이용할 때 sudo를 사용하지 않아야한다는 의견이 많습니다. 그래서 이부분만 조금 더 들여다 보겠습니다.

일단, gym은 python2인 melodic 환경에서도 큰 무리가 없이 잘 설치됩니다.

그리고 역시 scikit-image도 설치~

그리고 h5py도 sudo 없이 잘 설치됩니다.

그다음은 gym-gazebo를 설치페이지에서 안내된대로 github에서 받아서 인스톨합니다.

installation 폴더로 가서 setup_melodic.bash를 bash합니다~

음~... 아주 오래 걸릴 수도 있습니다.

인내에 대한 멋진 말씀들을 읽으며 시간을 때워보는 것도 좋습니다.~

이렇게 100%까지 잘 진행되면... 짠~ 커서가 깜빡거리는 프롬프트의 경로를 잘 확인해주세요. 애초에 시작했던 경로가 아닌 다른 곳에 또 catkin_ws가 있을 겁니다.~

네~ 여기서 가제보에서 불러올 로봇들이 빌드까지 완료된 상태로 있습니다~

bashrc를 확인해보면 저렇게 gym-gazebo에 의해 만들어진 catkin_ws가 source되어 있다는 것을 알 수 있습니다. 이때, 혹시 문제가 될 수도 있으니 , 자신의 워크스페이스는 주석처리를 하고 터미널을 다시 실행하는 것도 괜찮습니다. 제 경우는 turtlebot 패키지가 양쪽에 존재해서 에러가 나더군요.

이제 turtlebot_setup.bash를 실행해 둡니다.

그리고 example폴더로 가서

turtlbot_lidar_qlearn을 실행해봅니다.

이때 나타난 gazebo master의 주소를 복사해둡니다.

그것을 export 시키고, gzclient를 실행합니다~

그 과정은 위 동영상에 있습니다. Q-learning이며 열심히 turtlebot이 움직이는 것을 알 수 있습니다.

이제는 turtlebot_nn_setup을 실행해두고~

turtlebot_lidar_dqn을 실행합니다. 넵~ 딥러닝+Q러닝.. 그거~^^

우리 네트웩을 한 번 보여주고~ 또 시작합니다. 이것도 한 번 볼까요? 아참~ gazebo master uri 복사해서 export하는 거  잊지 마세요~

중간에 잘랐는데, 마지막 부분에는 멋지게 맵을 돕니다.^^. 

이번에는 강화학습 이야기를 하고 싶었던 것이 아니고, 강화학습을 공부하기 위해 gym gazebo를 설치하고 사용하는 방법에 대해 이야기를 해보았습니다.~ ^^


댓글을 달아 주세요

  1. BlogIcon kangdante 2020.02.19 08:35 신고

    웬지 어려운 내용이지만
    필요한 사람에게는 유용한 정보가 될 것 같아요. ^^

  2. wnajsldkf 2020.02.19 16:05

    와!! 좋은 자료 감사합니다. 관심있는 분야였는데 덕분에 재미있게 할 수 있겠네요:)

  3. BlogIcon 북두협객 2020.02.20 08:08 신고

    프로그래밍 세계는 정말 무궁무진하네요~

  4. BlogIcon 가족바라기 2020.02.20 13:27 신고

    포스팅잘보고 갑니다
    편안한 오후되세요^^

  5. 케인인님한판해요 2020.03.04 12:54

    kinetic 에서 하다가 너무 안 돼서 짜증이 이만저만이 아니었는데, 선생님의 글을 보고 melodic에서 실행하니 암이 싹 다 날아가 버렸습니다. 정말 감사 드려요...

  6. 케인인님한판해요 2020.03.04 15:14

    하나 궁금한게 있는데요, 여기서 사용하는 turtlebot kobuki 모델은 sonar계 센서를 LiDAR로 변환해서 사용하는것 같습니다. 해서, Hokuyo사의 LiDAR로 바꾸어 달고 싶은데, 혹시 새로운 파일들을 들여와서 빌드하거나 할 때는 어떻게 빌드 할 수 있는지 알 수 있을까요? 그냥 $ catkin_make 이렇게 빌드하면 되려나요?

    감사합니다

  7. gorden 2020.07.31 18:58

    좋은 내용 감사합니다! 그런데 './circuit_turtlebot_lidar_qlearn.py' 이거 실행하면

    ---------------------------------------------------------------------------------
    [spawn_turtlebot_model-3] process has died [pid 6559, exit code 1, cmd /home/kundo/gym-gazebo/gym_gazebo/envs/installation/catkin_ws/src/gazebo_ros_pkgs/gazebo_ros/scripts/spawn_model -unpause -urdf -param robot_description -model mobile_base __name:=spawn_turtlebot_model __log:=/home/kundo/.ros/log/e2a02d30-d319-11ea-8284-04d4c48d0a61/spawn_turtlebot_model-3.log].
    log file: /home/kundo/.ros/log/e2a02d30-d319-11ea-8284-04d4c48d0a61/spawn_turtlebot_model-3*.log
    ---------------------------------------------------------------------------------

    이런 오류가 뜨는데 왜 그런걸까요?