Lab 13 - Deep Reinforcement Learning 2
Lab. 13 - Deep Reinforcement Learning cz. 2
UWAGA: na dzisiejszych zajęciach proszę pracować na komputerze wyposażonym w GPU (np na komputerach w laboratorium).
1. Cel zajęć
Celem zajęć jest poznanie podstaw wykorzystania metod głębokiego uczenia ze wzmocnieniem w ROS2.
2. Przygotowanie środowiska
Na dzisiejszych zajęciach będziemy korzystali z paczki turtlebot3_drlnav.
Należy sklonować paczkę i zbudować kontener:
git clone https://github.com/tomasvr/turtlebot3_drlnav.git
cd turtlebot3_drlnav
docker build -t turtlebot3_drlnav .
Tworzenie kontenera chwilę zajmie. Można ten czas wykorzystać na sprawdzenie, czy wszystkie wykonane zadania domowe są przesłane ;)
Po zbudowaniu kontenera należy nadać dockerowi uprawnienia do wywoływania GUI:
xhost +local:docker
a następnie uruchomić kontener (/PATH/TO/REPO
należy podmienić na ścieżkę na komputerze, gdzie zostało sklonowane repozytorium):
docker run -it --gpus all --privileged --env NVIDIA_VISIBLE_DEVICES=all --env NVIDIA_DRIVER_CAPABILITIES=all --env DISPLAY=${DISPLAY} --env QT_X11_NO_MITSHM=1 --volume /tmp/.X11-unix:/tmp/.X11-unix -v /PATH/TO/REPO/turtlebot3_drlnav:/home/turtlebot3_drlnav --network host turtlebot3_drlnav
Po uruchomieniu kontenera można zbudować paczki:
colcon build
source install/setup.bash
ROS_DOMAIN_ID
W przypadku pracy na komputerze w laboratorium może okazać się konieczne ustawienie ROS_DOMAIN_ID
. Domyślnie, ROS2 rozgłasza wszystko innym komputerom w sieci z tym samym ROS_DOMAIN_ID. Wartość tej zmiennej można ustawić korzystając z:
export ROS_DOMAIN_ID = <wybrana_wartość>
Proszę wybrać losową wartość.
Wygodne może być dodanie tego exportu do bashrc:
echo 'export ROS_DOMAIN_ID=<wybrana_wartość>' >> ~/.bashrc
3. Uruchomienie przykładu
Należy rozpocząć od uruchomienia symulacji. Uruchomiony zostanie stage9
, ponieważ dla niego jest utworzony przykład, ale są dostępne stage
od 1 do 10:
ros2 launch turtlebot3_gazebo turtlebot3_drl_stage9.launch.py
W drugim terminalu należy uruchomić manager goal’i:
ros2 run turtlebot3_drl gazebo_goals
W trzecim manager środowiska:
ros2 run turtlebot3_drl environment
I w ostatnim, czwartym, terminalu należy uruchomić agenta:
ros2 run turtlebot3_drl test_agent ddpg 'examples/ddpg_0_stage9' 8000
Robot powinien podążać do miejsca, gdzie znajduje się cel (czerwone koło).
4. Trening sieci
Trening można rozpocząć na dowolnym stage’u. Od uruchomienia przykładu różni się jedynie ostatnim poleceniem:
ros2 run turtlebot3_drl train_agent [rodzaj_sieci]
Zamiast [rodzaj_sieci]
należy podać jeden z poniższych: - ddpg - td3 - dqn
Dodatkowe ustawienia można znaleźć w pliku settings.py
.
Materiały dodatkowe
Autor: Kamil Młodzikowski
W oparciu o: link.