Autonomous navigation - robotique-udes/zeus_rover GitHub Wiki

Overview

The autonomous navigation mode was developped according to the URC2022 requirements. The path planning and control functionnalities are handled by the default ROS navigation stack.

Since the ROS navigation stack does not meet the requirements on it's own, a custom package (goal_manager) was created to act as a wrapper to add the missing functionnalities. It allows to pass a list of WGS84 coordinates as goals and adopts the appropriate behavior depending on the goal type (normal, post or gate). For post or gate, the aruco detection will be activated when the rover is within a close range to the target.

The following figure shows the architecture of the autonomous navigation. Autonomous navigation diagram

For localization, the global position is determined using an RTK GPS. This gives a good enough position that only using this sensor is sufficient for the position. The data is converted to something the ROS navigation stack will understand thanks to our custom gnss_to_map package. The global orientation, a mix of gyroscope data and RTK GPS data is used. For more information about how the heading is calculated, see the documentation of our custom gps_heading package. We decided to go with this approach instead of using a magnetometer because we found it to be unreliable and pratically impossible to cover it from magnetic interference.

Setting up the RTK GPS

The autonomous navigation relies on RTK GPS data for positionning so you need to set it up beforehand.

Important: steps 1 and 2 should be done before the RPi is booted.

  1. Make sure the base station RTK module is plugged in to the RPi.
  2. Make sure the the RPi ethernet cable is connected to the base station antenna (or to an ethernet switch connected to the base station antenna).
  3. Boot up the RPi and wait for the nodes to automatically start.
  4. Wait for the RTK module to boot (this can take a few minutes). You will know it is booted when the lights blink in two alternating colors.
  5. Using a cellphone or a PC, connect to the RTK module's wifi and, in a web broswer, navigate to 192.168.42.1. This will give you access to the module's webapp. You will be able to see the progression for the position calculation of the module. This step will have to be redone everytime you move the module. Note: if using a cellphone, disable your cellular data to make sure you access the adress through the wifi adapter.
  6. Once the previous step is done, you do the same thing but with the rover's RTK module to confirm that it is receiving the corrections correctly.

Usage

  1. Start the rover and run the basic nodes as described in Teleoperating the rover
  2. Start the autonomous navigation nodes with
    roslaunch zeus_nav autonomous_navigation.launch
    
  3. A custom rqt plugin name [rqt_autonomous_nav] will open allowing you to operate the autonomous navigation. This is the simplest and most intuitive way of using the autonomous navigation functionalities. rqt_autonomous_nav image
  4. (Optional) It is also possible to use the autonomous navigation without the rqt plugin, but it is more complicated. For more information, follow the instructions in the goal_manager usage documentation.