Skip to content

Navigation

Aurora Tijerina edited this page Dec 13, 2020 · 39 revisions

Navigation

Actual State Overview

Navigation is still in the process of being interconnected to the main engine and the base control unit.

Requirements

ROS Package dependencies

Navigation diagram

Nav_Diagram

Navigation has four main modules:

  • Nav Action Server: in charge of executing different navigation actions.
  • Navigation Stack: ROS packages that provide 2D navigation services.
  • Base Control: module in charge of calculating odometry and moving the robot's base.
  • Map Contextualizer: Preprocessing module that executes goal saving, place tagging and general space characterization for further navigation operations made by the action server.

Robot Setup

Setting up transforms

For frame transforms between sensor streams, base frame and odometry we use a URDF robot model powered by the Robot State Publisher package.

Robot_model

Getting a map

We decided to use Hector Slam's mapping package because it can provide a map accurately without the need of odometry.

To start mapping run:

roslaunch nav_main launch_mapping.launch

Navigation stack config

The robot will run following the ROS navigation stack guide. At the moment, we have this core transform tree implemented:

Transform diagram

Goal Set

The Navigation Action Server is in charge of providing the /goal topic, according to the action requested by the Main Engine. Goals are generated with the preprocessing of the map, by the Map Contextualizer Module.

Further improvements and implementations

Collision avoidance is a problem we've attacked by increasing the inflation radius of the robot in the Nav Stack params; nevertheless, smarter choices should be made to create an automatic recovery behavior system that knows how to act accordingly.

References/Support links