- navigation metric: 0.2339
# clone this project:
git clone https://github.com/TempleRAIL/nav-competition-icra2022-drl-vo.git
# build container:
cd ./nav-competition-icra2022-drl-vo
sudo singularity build --notest nav_competition_image.sif Singularityfile.def
# single world test:
./singularity_run.sh ./nav_competition_image.sif python run.py --out ~/drl_vo_out.txt
# 50 worlds test: 1 trial
./singularity_run.sh ./nav_competition_image.sif python run_drl_vo.py --out ~/drl_vo_out.txt --trials 1
# 50 worlds test: 10 trial
./singularity_run.sh ./nav_competition_image.sif python run_drl_vo.py --out ~/drl_vo_out.txt --trials 10
# report results:
python report_test.py --out_path ~/drl_vo_out.txt
If you run it on a local machine without containers:
- ROS version at least Kinetic
- CMake version at least 3.0.2
- Python version at least 3.6
- Python packages: defusedxml, rospkg, netifaces, numpy
If you run it in Singularity containers:
- Go version at least 1.13
- Singularity version at least 3.6.3
The requirements above are just suggestions. If you run into any issue, please contact organizers for help ([email protected]).
Follow the instructions below to run simulations on your local machines. (You can skip 1-6 if you only use Singularity container)
- Create a virtual environment (we show examples with python venv, you can use conda instead)
apt -y update; apt-get -y install python3-venv
python3 -m venv /<YOUR_HOME_DIR>/nav_challenge
export PATH="/<YOUR_HOME_DIR>/nav_challenge/bin:$PATH"
- Install Python dependencies
pip3 install defusedxml rospkg netifaces numpy
pip3 install -r requirements.txt
- Create ROS workspace
mkdir -p /<YOUR_HOME_DIR>/jackal_ws/src
cd /<YOUR_HOME_DIR>/jackal_ws/src
- Clone this repo and required ros packages
git clone https://github.com/Daffan/nav-competition-icra2022.git
git clone https://github.com/jackal/jackal.git
git clone https://github.com/jackal/jackal_simulator.git
git clone https://github.com/jackal/jackal_desktop.git
git clone https://github.com/utexas-bwi/eband_local_planner.git
- Install ROS package dependencies
cd ..
source /opt/ros/<YOUR_ROS_VERSION>/setup.bash
rosdep init; rosdep update
rosdep install -y --from-paths . --ignore-src --rosdistro=melodic
- Build the workspace
source devel/setup.bash
catkin_make
Follow the instruction below to run simulations in Singularity containers.
-
Follow this instruction to install Singularity: https://sylabs.io/guides/3.0/user-guide/installation.html. Singularity version >= 3.6.3 is required to successfully build the image!
-
Clone this repo
git clone https://github.com/Daffan/nav-competition-icra2022.git
cd nav-competition-icra2022
- Build Singularity image (sudo access required)
sudo singularity build --notest nav_competition_image.sif Singularityfile.def
Navigate to the folder of this repo. Below is the example to run move_base with DWA as local planner.
If you run it on your local machines: (the example below runs move_base with DWA local planner in world 0)
source ../../devel/setup.sh
python3 run.py --world_idx 0
If you run it in a Singularity container:
./singularity_run.sh /path/to/image/file python3 run.py --world_idx 0
A successful run should print the episode status (collided/succeeded/timeout) and the time cost in second:
>>>>>>>>>>>>>>>>>> Test finished! <<<<<<<<<<<<<<<<<<
Navigation collided with time 27.2930 (s)
>>>>>>>>>>>>>>>>>> Test finished! <<<<<<<<<<<<<<<<<<
Navigation succeeded with time 29.4610 (s)
>>>>>>>>>>>>>>>>>> Test finished! <<<<<<<<<<<<<<<<<<
Navigation timeout with time 100.0000 (s)
We currently don't provide a lot of instructions or a standard API for implementing the navigation stack, but we might add more in this section depending on people's feedback. If you are new to the ROS or mobile robot navigation, we suggest checking move_base which provides basic interface to manipulate a robot.
The suggested work flow is to edit section 1 in run.py
file (line 89-109) that initialize your own navigation stack. You should not edit other parts in this file. We provide a bash script test.sh
to run your navigation stack on 50 uniformly sampled BARN worlds with 10 runs for each world. Once the tests finish, run python report_test.py --out_path /path/to/out/file
to report the test. Below is an example of DWA:
python report_test.py --out_path res/dwa_out.txt
You should see the report as this:
Avg Time: 39.5296, Avg Metric: 0.1577, Avg Success: 0.8500, Avg Collision: 0.0560, Avg Timeout: 0.0940
Submit a link that downloads your customized repository to this Google form. Your navigation stack will be tested in the Singularity container on 50 hold-out BARN worlds sampled from the same distribution as the 300 BARN worlds. In the repository, make sure the run.py
runs your navigation stack and Singularityfile.def
installs all the dependencies of your repo. We suggest to actually build an image and test it with ./singularity_run.sh /path/to/image/file python3 run.py --world_idx 0
.