ROS Navigation

Navigation is of the utmost importance when robots are to be used in a foreign environment. It has to be aware of its surroundings to carry out its task with the least possible errors. Here I have created a configurable open-source ROS package that can be used to perform autonomous navigation with differential driven systems.

Mapping
Firstly, the robot has to be moved around to scan its environment. The robot is driven using teleop_twist_keyboard (ROS Package). As it moves, it maps the environment using a laser scanner (or Kinect sensor). SLAM (Simultaneous localization and mapping) algorithm is implemented using the gmapping node of ROS. It builds a map while keeping a track of robots' position on the map. This node gives Occupancy Grid map (OGM) which is then saved in the system using map_server node.

Localization
AMCL(Adaptive Monte Carlo localization) node is used to carry out Monte Carlo localization also called particle filter localization. It provides the probable position of the robot in the form of particles that can be seen as red arrows in RVIZ. The more the robot is driven around, the more the data it reads, the better is the localization.

Path Planning
move_base node is a major element of the ROS Navigation stack. It is used to move a robot from its current position to the desired position. It uses Dijkstra's algorithm to calculate the shortest path between the initial and goal positions.
More information on move_base node: Blog post

Comments

Popular posts from this blog

The move_base ROS node

Three Wheeled Omnidirectional Robot : Motion Analysis

Overview of ATmega328P