Giter Site home page Giter Site logo

lken11 / micromouse Goto Github PK

View Code? Open in Web Editor NEW

This project forked from joshuaccl/micromouse

0.0 0.0 0.0 5.75 MB

An autonomous self-contained robotic vehicle capable of navigating through a previously unknown maze with the shortest path

C++ 0.89% C 98.58% Assembly 0.53%

micromouse's Introduction

Micromouse

Demo video. Floodfill mapping and solving

Micromouse Video

A Micromouse is a small robotic vehicle designed to navigate its way through an unknown maze. It is an autonomous, battery-operated, and self-contained robot that utilizes maze-solving algorithms to find the optimal route with the shortest run time to the center of the maze. The main challenge is to equip the electro-mechanical device with adaptive intelligence which enables the exploration of different maze configurations. In addition, the mouse must reliability navigate through the maze at accelerated speeds without crashing into the maze walls. The three main subsystems consist of the drive system, control system, and sensors. The drive system includes a mechanical chassis, a set of motors, gears, and wheels which enables the mouse to maneuver within the constraints of the maze. The control system utilizes a maze-solving algorithm based on sensor readings to calculate the fastest possible path. The final subsystem is the sensors which relays the current state of the surroundings and assists in wall detection. By combining these components, an autonomous mouse capable of navigating through a maze was designed, built, and programmed.

Developers Guide

Environment Setup

The various software and components needed to program the board are as follows:

  • Eclipse (IDE)
  • STM32 ST-LINK Utility (Used to upload .hex file onto board)
  • STM32CubeMX (Generate configuration settings/pins)
  • STMStudio (Debugger)

Programming the Board

In Eclipse, generate the .hex file with Project -> Build All. Open ST-LINK and connect to the board (Target -> Connect). Next, open the .hex file by going to the project folder and open the Micromouse.hex file in the Debug folder. Finally, program the board by Target -> Program.

IMPORTANT: Always open file each time is it rebuilt since it always uses the old file and does not auto refresh the new .hex file.

Debugging

Oepn STMStudio and create new variable in the "Display Variables Settings" section. To get the address of the variable to be monitored, go to the Debug folder and open the Micromouse.map file. Find the variable name and type into the STMStudio program. Send the variable to varViewer and connect the board to the program.

IMPORTANT: Only global variables can be monitored using this utility. Between the STMStudio and the ST-LINK utility, only one can be connected to the board at a time.

Generate configuration pins

Open STM32CubeMX and add the pins according to the schematic. Then Project -> Generate Code to generate the code.

WARNING: When the code is generated, it will replacd everything inside the specified destination folder. Use the "Cube" branch to generate new code and use git diff to see what was changed.

Debugging branches

cube - When generating new CubeMX pin configurations use this branch then git diff with current branch

ADC_calibration - When testing ADC values, open up STMStudio

gyro_encoder_cal - Branch for testing gyro or encoder values

diagonals - For testing wall tracking tracking

micromouse's People

Contributors

joshuaccl avatar nathancy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.