Robust and Long-Term Monocular Teach-and-Repeat Navigation using a Single-Experience Topological Map
- Day2Night navigation
- Fisheye-Panorama navigation
This paper proposes a robust approach to monocular visual teach-and-repeat navigation (V-T&R) for long-term operation in the wild. The approach leverages deep learned descriptors and a fisheye camera to handle changes in illumination and rapid manoeuvres. In particular, a novel illumination adaptation method is proposed to learn illumination-invariant descriptors in a self-supervised way. Moreover, the approach exploits panoramic images from a fisheye camera to address the out-of-plane rotation variance issue of pin-hole camera-based navigation systems, in which the rotational error can be estimated explicitly without requiring accurate calibration. Consequently, our approach achieves day-to-night navigation using a single map and is able to repeat complex and fast manoeuvres, and even recover from kidnapped situations. To verify our approach, we performed three navigation experiments in various outdoor environments, where both navigation accuracy and robustness are investigated. The experimental results show that our approach is superior to the baseline method with regards to accuracy and robustness.
- You should install Ubuntu 16 with ROS kinetic or Ubuntu 18 with ROS melodic.
- Also, you should install other prerequisities:
sudo apt install git
.
Nothing special needs to be done here. You can continue with installation.
If you are using Ubuntu 18, you will need to compile opencv with opencv-contrib:
- Create a folder to perform the compilation and switch to it:
mkdir ~/opencv;cd ~/opencv
- Download opencv:
git clone -b 3.4 --single-branch https://github.com/opencv/opencv.git
- Download opencv-contrib:
git clone -b 3.4 --single-branch https://github.com/opencv/opencv_contrib.git
- Go to opencv folder, create a build folder and switch to it:
mkdir opencv/build;cd opencv/build
- Tell opencv to compile with the contrib:
cmake -DOPENCV_ENABLE_NONFREE:BOOL=ON -DOPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules ~/opencv/opencv
- Compile it:
make -j5
. - Install it:
sudo make install
Prepare your environment in the home folder:
cd
,mkdir -p ~/robotika_ws/src
,cd ~/robotika_ws/src
,catkin_init_workspace
Make your usb camera work:
- Clone the usb_cam ROS driver:
git clone https://github.com/gestom/usb_cam.git
- Compile it:
cd ..
,catkin_make
- Source your environment:
source devel/setup.bash
- Make your camera easy to access:
sudo chmod 777 /dev/video0
- Run the camera node:
roslaunch usb_cam usb_cam-test.launch
- Keep the camera running and open a new terminal to continue.
Make the stroll_bearnav
package work:
cd ~/robotika_ws/src
- Clone the stroll_bearnav package:
git clone --branch robotika_sk_19 https://github.com/gestom/stroll_bearnav.git
- Compile it:
cd ..
,catkin_make
- Source your environment:
source devel/setup.bash
- Run it:
roslaunch stroll_bearnav stroll-core.launch
- Open a new terminal, source your environment and check the image features:
rosrun rqt_image_view rqt_image_view /image_with_features
- Open a new terminal, source your environment and check the system structure
rosrun rqt_graph rqt_graph
- Run the operator GUIs:
roslaunch stroll_bearnav stroll-gui.launch
- Now find the
mapper
client gui and create a map by entering its name, e.g.A
behind thefileName
clickSend goal
, wait for feedback and then clickCancel goal
. - Now find the
loadMap
gui, enter the map name in the prefix and clickSend goal
- Start the navigation by clicking
Send goal
in thenavigator
gui.
docker run -it --network=host --gpus all --rm -v /home/kevin/tmp_ws:/home/tmp_ws sha256:5fc203c5dfa7a6329c985d73ca19b485ef5446e4e19ac5a4fce8aa28c6a5f018
pip3 install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
cd /home/tmp_ws && catkin_make && source devel/setup.bash
cd src/TRN_server/scripts python KeyPointMatching_server.py
[ERROR] docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]. sudo apt-get install nvidia-container-toolkit
- Li Sun, Marwan Taher, Christopher Wild, Zhu Dingyun, Cheng Zhao, Filip Majer, Zhi Yan, Tomáš Krajník, Tony J Prescott, Tom Duckett: [Robust and Long-Term Monocular Teach-and-Repeat Navigation using a Single-Experience Map.] side product of IROS 2021 submission.
- T.Krajnik, J.Faigl et al.: Simple yet stable bearing-only navigation. Journal of Field Robotics, 2010. [bibtex]
- T.Krajnik, S.Pedre, L.Preucil: Monocular navigation for long-term autonomy.In 16th International Conference on Advanced Robotics (ICAR), 2013. [bibtex]