Olin College of Engineering
A Computational Introduction to Robotics Final Project FA 2023
Ben Tarr, CJ Hilty, Lauren Thorbecke
The goal of this project was to utilize a maze solving algorithm to navigate a Neato through a maze. The projects has three facets: converting a maze to a file format readable by a maze solving algorithm, the implementation of a maze solving algorithm, and creating motion commands to drive a Neato through a maze using the solved-for solution path.
In order to make our architecture divisible to multiple programmers, we decided to modularize our efforts. Standardizing the Graph- and 3D-model representations of the maze were handled by Ben. Solving a path through the maze using dijkstra's algorithm and generating X,Y waypoints was addressed by CJ. Interpreting and executing robot motion through ROS2 and Gazebo was accomplmished by Lauren.
We use a python script to convert from a textual representation of the maze to two different formats. First of all, we produce a 3D model of the maze that can be loaded into Gazebo for visualization purposes. Next, we produce a NetworkX graph that represents the paths through the maze that we pass to the maze solving algorithm.
We opted to use Dijkstra's algorithm to solve a pre-known maze. This strategy requires advance knowledge of the maze layout, which is feasible using an occupancy grid or generating one from a GIS/repository in more real-world applications.Â
Once a maze solution path is known, motion commands need to be sent to the Neato for running through the maze. This involved translating Node positions to x-y coordinates in a maze, sending motion commands for the Neato to traverse through those x-y coordinates, and adding path correction using LiDAR to prevent the Neato from straying off path.
The output of each component of this project had to be compatible as an input to the next. The output of our maze generation node was a .txt file that could be input into the Dijkstra's maze solving node. The output of the Djikstra's node was an ordered list of nodes to visit, and acted as an input to the Neato motion command node. The maze .txt file from the first node is converted into an image, which can be extruded and converted to an STL. This served as our "physical" maze in Gazebo.
Ethical considerations for unintended consequences that may arise from the use or propagation of algorithms, especially computer vision algorithms, are prescient in today's world. We considered some of the many ways the algorithms developed in the course of our project could be used by nefarious actors in the form offered by our open source repository. We came to the conclusion that the most severe potential negative human impact from our project could be a contribution to the general decline in warehouse jobs, as this project could be readily applied to program robots to drop into and navigate warehouses.
We would like to acknowledge that our considerations are derived from the 2024 CVPR ethics statement, which offers a topical overview of the practical imperative of computer vision in ethics.
Project code and instllation instructions are available at github.com/cjhi/mazesolver
Follow Installation instructions on the README of the open source Repository, located at github.com/cjhi/mazesolver