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 (zfxu@utexas.edu).
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
- 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: (replace
<YOUR_ROS_VERSION>
with your own, e.g. melodic)
git clone https://github.com/Daffan/nav-competition-icra2022.git
git clone https://github.com/jackal/jackal.git --branch <YOUR_ROS_VERSION>-devel
git clone https://github.com/jackal/jackal_simulator.git --branch <YOUR_ROS_VERSION>-devel
git clone https://github.com/jackal/jackal_desktop.git --branch <YOUR_ROS_VERSION>-devel
git clone https://github.com/utexas-bwi/eband_local_planner.git
- Install ROS package dependencies: (replace
<YOUR_ROS_VERSION>
with your own, e.g. melodic)
cd ..
source /opt/ros/<YOUR_ROS_VERSION>/setup.bash
rosdep init; rosdep update
rosdep install -y --from-paths . --ignore-src --rosdistro=<YOUR_ROS_VERSION>
- Build the workspace (if
catkin_make
fails, try changing-std=c++11
to-std=c++17
injackal_helper/CMakeLists.txt
line 3)
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: 33.4715, Avg Metric: 0.1693, Avg Success: 0.8800, Avg Collision: 0.0480, Avg Timeout: 0.0720
Except for DWA
, we also provide three learning-based navigation stack as examples (see branch LfH
, applr
and e2e
).
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
. You can also refer to branch LfH
, applr
and e2e
, which are in the correct form for submissions.