Lightweight Visual Positioning System

What is LVPS

LVPS is a non-GPS positioning system designed for resource-constrained or embedded sytems. It is capable of using only vision to transform any area into grid, based on the cartesian coordinate system. Almost any objects that can be recognized by an object detection model can be configured/registered as a landmark.

When 2 or more of these landmarks are within sight of onboard camera(s), LVPS can transform what it's seeing into an X,Y position and heading, which enables an autonomous robot to plan a route and navigate an area much more easily.

Me - Testing LVPS

Why I Created It

LVPS was a challenge I took on while completing a master’s degree in A.I. Rather than just completing coursework, I wanted to immerse myself into the topic and gain a deep understanding of the most common algorithms, building blocks, and techniques that make up what we call “A.I.” today.

In order to thoroughly test the system, I also developed a fairly simple autonomous Arduino-based control system, capable of driving a few different types of machines, a system for generating and distributing work to groups of machines, a reinforcement learning model for teaching the machines, and a simulation for testing both the positioning system and autonomous control model.

Short Demo

This video is a demo of what LVPS can do, given the limited (although still impressive) capabilities of a Raspberry PI or Nvidia Jetson Nano.

At the time of this video, LVPS was efficiently producing fairly consistent and accurate results, and I was fine-tuning an autonomous search model for proving out LVPS.

Supporting Documents


LVPS Technical Doc

Details of how the system works, the algorithms involved, and how it was tested.


Cooperative Autonomous Search Robots

This explains the use case I developed for testing LVPS, and also as an opportunity to build something meaningful using modern reinforcement learning techniques.