8000 GitHub - surajkiron/roomba_planner: This project simulates pathfinding for a Roomba-like robot in a pre-mapped environment. The environment is represented by an occupancy grid where each cell indicates the presence of an obstacle or free space. The program calculates a collision-free path from a starting position to a goal position.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

This project simulates pathfinding for a Roomba-like robot in a pre-mapped environment. The environment is represented by an occupancy grid where each cell indicates the presence of an obstacle or free space. The program calculates a collision-free path from a starting position to a goal position.

Notifications You must be signed in to change notification settings

surajkiron/roomba_planner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Path Planner for Differntial Drive Robots

Problem Statement

A circular roomba robot is present in an already mapped environment. The map is in the format of a binary occupancy grid.

Each cell in the grid contains a boolean value indicating if an obstacle is present at a given location, i.e true -> obstacle and false -> free. The OccupancyGrid struct contains a 1d array of boolean that denotes a 2d grid in a row major format. The intent is to find a safe collision-free path from a given location to the vicinity of the goal location.

The PathPlanner classes inherits the PathPlannerInterface class, and implements the getCollisionFreePath() pure virtual function to provide a trajectory which can be followed by the robot. Note that the start position and goal position may be any point within the occupancy grid.

System Description

Grid

The origin of the occupancy grid is the bottom left of the image. The positive x-axis is to the right and positive y-axis is upwards. The grid is of size 320 x 320 with a resolution of 0.05 m. The OccupancyGrid class has methods to set occupancy for a given coordinate, which could be useful for testing solutions.

Robot

The robot is a spherical robot of diameter 0.6m and it operates with a 2d coordinate system with $(x.y. \theta)$ where $\theta$ is the yaw(orientation) of the robot.

Dependencies

Eigen

Eigen is a linear algebra library. Documentation to use Eigen is present here. A cheat sheet with quick usages for Eigen Data structures and functions can be found here

To install Eigen, run the following command:

sudo apt install libeigen3-dev

Yaml-cpp

Yaml-cpp library is used to parse config.yml.

sudo apt install libyaml-cpp-dev

Build

To build , run

cmake -B build && cmake --build build && ./bin/CheckPath

About

This project simulates pathfinding for a Roomba-like robot in a pre-mapped environment. The environment is represented by an occupancy grid where each cell indicates the presence of an obstacle or free space. The program calculates a collision-free path from a starting position to a goal position.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0