diff --git a/.rosinstall b/.rosinstall index 7d0f3e5a2..90b704548 100755 --- a/.rosinstall +++ b/.rosinstall @@ -24,6 +24,11 @@ local-name: ../utils/jackal uri: https://github.com/jackal/jackal.git +- git: + local-name: ../utils/arena2d + uri: https://github.com/zenghjian/arena2D.git + version: integrate + ### ARENA INFRASTRUCTURE - git: @@ -41,15 +46,10 @@ uri: https://github.com/Arena-Rosnav/arena-utils.git version: v1.0.0 -- git: - local-name: ../utils/waypoint-generators - uri: https://github.com/Arena-Rosnav/waypoint-generators.git - version: v1.0.0 - - git: local-name: ../utils/task-generator - uri: https://github.com/Arena-Rosnav/task-generator.git - version: master + uri: https://github.com/zenghjian/task-generator.git + version: dev ### PLANNERS diff --git a/README.md b/README.md index c647ee6cb..deb6ce4b6 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,35 @@ ## Simple Installation +Follow [this](https://arena-rosnav-wiki.readthedocs.io/en/latest/user_guides/installation/) until step.7 + +Install Conda and Poetry +``` +// conda +wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh +bash Miniconda3-latest-Linux-x86_64.sh +source ~/.bashrc +conda config --set auto_activate_base false +conda create -n rosnav python=3.8 + +// poetry +curl -sSL https://install.python-poetry.org | python3 - +echo 'export PATH="$HOME/.local/bin:$PATH"'>> ~/.bashrc +source ~/.bashrc +poetry config virtualenvs.create false + +//activate conda +conda activate rosnav +``` + Clone repo in any catkin ws or create new catkin ws ``` -git clone git@github.com:Arena-Rosnav/arena-rosnav.git +mkdir -p ~/catkin_ws/src +cd ~/catkin_ws/src +``` + +``` +git clone https://github.com/zenghjian/arena-rosnav ``` Change into dir @@ -27,17 +53,55 @@ poetry shell && poetry install Install stable baselines ``` -cd ../forks/stable-baselines3 && pip install -e . +cd ../utils/stable-baselines3 && pip install -e . +``` + +Install arena2d requirements +``` +sudo apt-get install cmake libsdl2-dev libfreetype-dev ``` Build catkin ``` -cd ../../.. && catkin_make +cd ../../.. && catkin_make -DUSE_ROS=ON ``` + Finished! +## Run Simulator + +Open Terminal 1 (Run roslaunch) +``` +cd ~/catkin_ws +source devel/setup.bash +roslaunch arena_bringup start_arena.launch +// roslaunch arena_bringup arena2d_simulator.launch +// only for arena2d +``` + +Open Terminal 2 (Run Script) +``` +cd ~/catkin_ws +source devel/setup.bash +cd src/arena-rosnav/ +conda activate rosnav +poetry shell +cd ../utils/arena2d/rl-ros-agents/ +python scripts/training/train_ppo.py +``` + #### TODO Everything + +## Tipps for GPU 30X: m_86 is not compatible with the current PyTorch +``` +conda rosnav +poetry shell +pip uninstall torch +pip list | grep torch +conda list | grep torch +pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 +``` diff --git a/arena_bringup/launch/start_arena_flatland.launch b/arena_bringup/launch/start_arena_flatland.launch index 9a31a4201..eb98bea91 100755 --- a/arena_bringup/launch/start_arena_flatland.launch +++ b/arena_bringup/launch/start_arena_flatland.launch @@ -14,14 +14,18 @@ - + + + - - + + + + - + @@ -55,11 +59,21 @@ - - - - - + + + + + + + + + + + + + + + @@ -77,20 +91,21 @@ - + - - - - - - - - - - - + + + + + + + + + + + + diff --git a/arena_bringup/launch/start_training.launch b/arena_bringup/launch/start_training.launch index 504a4090b..a851557dd 100644 --- a/arena_bringup/launch/start_training.launch +++ b/arena_bringup/launch/start_training.launch @@ -1,10 +1,13 @@ + + + - + @@ -28,7 +31,9 @@ - + + + @@ -50,13 +55,22 @@ + + - - + + + + + + + + + \ No newline at end of file diff --git a/arena_bringup/launch/training/arena2d_simulator.launch b/arena_bringup/launch/training/arena2d_simulator.launch new file mode 100644 index 000000000..fabe3db0a --- /dev/null +++ b/arena_bringup/launch/training/arena2d_simulator.launch @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/training/configs/training_curriculums/normal.yaml b/training/configs/training_curriculums/normal.yaml new file mode 100644 index 000000000..a73d19de6 --- /dev/null +++ b/training/configs/training_curriculums/normal.yaml @@ -0,0 +1,29 @@ +# Training Curriculum +# this yaml serves as container of the learning curriculum for the agent +# by determining the number of static/dynamic obstacles per stage +# (will carry on training on last stage when threshhold reached) + +1: + static: 0 + dynamic: 0 +2: + static: 3 + dynamic: 0 +3: + static: 5 + dynamic: 0 +4: + static: 6 + dynamic: 1 +5: + static: 7 + dynamic: 2 +6: + static: 9 + dynamic: 2 +7: + static: 10 + dynamic: 2 +8: + static: 12 + dynamic: 3 \ No newline at end of file diff --git a/training/scripts/train_agent.py b/training/scripts/train_agent.py index 5bc6b2675..96849d7ec 100755 --- a/training/scripts/train_agent.py +++ b/training/scripts/train_agent.py @@ -120,7 +120,7 @@ def main(): model = PPO( "MlpPolicy", env, - policy_kwargs=dict(net_arch=args.net_arch, activation_fn=get_act_fn(args.act_fn)), + # policy_kwargs=dict(net_arch=args.net_arch, activation_fn=get_act_fn(args.act_fn)), gamma=params["gamma"], n_steps=params["n_steps"], ent_coef=params["ent_coef"],