Code and project files for the Quantitative Engineering Analysis 2 Final Project
Krishna Suresh, James Jagielski, and Evan Lockwood 4/30/2022 - 5/10/2022
Particle Filter:
RRT*:
Potential field gradient:
IMG_3461.1.mp4
The objective of this project was to drive a NEATO robot vacuum through a room from a start position to a target zone (the cylinder) while avoiding the obstacles (the boxes and walls).
This project was split into levels of difficulty where we removed information available for navigation at each level.
Task: Navigate to cylinder given map, start position, end position, obstacles.
Method:
- Calculate a potential field based on walls, obstacles and goal position
- Numerically solved function gradient for parametric.
- Follow parametric using Frenet–Serret vectors and apply PIDVA control system
Result:
Level 1 Simulated Script: level1.m
Level 1 Real Script: level1Real.m
Task: Navigate to cylinder given start position and end position.
Method:
- Place robots at random locations in room and read LIDAR data or collect scans during navigation
- Prune data and apply RANSAC classifier to detect edges
- Generate potential field function based on target location and obstacles
- Follow gradient similar to level1
Result:
Level 2 Simulated Script: level2.m
Task: Navigate to cylinder given start position and cylinder size.
Method:
- Use similar data capture and obstacle fitting as with level2
- Fit circle to remaining lidar data using RANSAC
- Once circle position is found plan path using gradient method from level1
Result:
Level 3 Simulated Script: level3.m
Task: Navigate to cylinder with near-optimial path given start position and end position.
Method:
- Use RRT* to plan near optimal path to goal
- Follow path using pure pursuit controller
Result:
Level 4 Simulated Script: level4.m
Level 4 RRT* Script: testrrtstar.m
Task: Navigate to cylinder with goal location and map (no start position).
Method:
- Use a particle filter to localize robot using lidar data.
- Once particles have converged, plan to goal with RRT*
- Navigate to target using optimal path
Result:
Particle Filter Convergence Script: level5.m