Navigation Development


Navigation is an important feature for robots to move from current position to desired position without crash with static obstacle (walls) and dynamic obstacles (teammate robot and opponents’ robots). The classical approach to solve this problem is done by four tasks: Mapping, Localization, Path (Global) Planning and Motion (Local) Planning.


Real Robot

  • Input: scan from rplidar a3
  • Subject: Omnidirectional robot by Mecanum wheel


  • Version 1: Gazebo
  • Version 2: VCATS using Unity 3D (still under development)
simulation cover pic

Code base

  • OS: Linux Ubuntu 18.04
  • Tools: ROS
  • Programming language: C++


  • The current Mapping is using built-in mapping ROS package named SLAM mapping.
  • It collects scan information from the lidar in a period of time.
  • It also collects odometry information from the robot motors.
  • Then, it will combine both information and generate a map (pixel).
  • There is no potential project we can think about at the moment. You are welcome to propose your own topic if there is any:)


  • The current localization is using built-in mapping ROS package named amcl.
  • The algorithm is called adaptive Monte-Carlo localization.
  • It uses a particle filter to track the pose of a robot against a known map.
  • The project we can think about is to explore and implement other localization algorithms on our robot platform. Then, run multiple experiments on different algorithm and compare on execution time, accuracy and computing resources consumed, etc.
  • In 2020 semester 2, you will have to work only with online simulation Gazebo for this project.

Path (Global) Planning

  • The current Path Planning is using resolution approach to divide the map into a matrix of squares.
  • Then, it assign each squares with a linear cost from 0 to 255 to represent distance to static obstacles.
  • The search algorithm used is A*, which should find a path efficiently.
  • There is no potential project we can think about as the solution is relatively straightforward by resolution approach. However, you are welcome to propose other approach to model this problem, such as decomposition approach, triangulation approach or skelton approach. 

Motion (Local) Planning

  • The current motion planning is using an algorithm called Timed-Elastic-Bands (TEB).
  • The input for algorithm is the path returned from Global Planner along with a set of weights and constraints.
  • It is an optimization problem that allows the robot to follow the path (from Global Planner) with minimum execution time while avoiding any dynamic obstacle as well.
  • If the path (from Global Planner) is impossible to follow, the algorithm also sends feedback to Global Planner requesting a new path to follow.
  • In 2020 semester 2, you will have to work only with online simulation Gazebo for this project. The potential topics include: identify robot’s from lidar data and increase minimum collision distance; adjust TEB to allow robots move as a rectangle (passing through a narrow exit by adjusting its orientation); explore and implement other potential motion planning algorithm for comparison with experiments.

If interested, what's next?

If you are interested to choose one of the above projects are your capstone project, please click this link. Otherwise, please read the following points:

  1. Most of these project is recommended to develop and explore as a Team since the scale for each topic is pretty big. Please fill in the form that we sent by email after induction section, so that it would be easy for us to manage different teams with different projects.
  2. All projects related with Navigation are expected to be development in a Ubuntu OS (ideally 18.04) with ROS installed, there are some instruction for install ROS available on this link.
  3. Please contact Guang ( by email if you have any question about Navigation Projects.