-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ Projects ] : Adds Micromouse Project (#198)
* add micromouse project information * add micromouse project information * Update index.html * add more description * add more description * add more description * add gif of micromouse working
- Loading branch information
1 parent
10ca76c
commit 6e9e64c
Showing
4 changed files
with
343 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
--- | ||
layout: page | ||
title: Micromouse | ||
description: Design a micromouse PCB from scratch and implement maze floodfill algorithms on it! | ||
importance: 1 | ||
--- | ||
|
||
| Project Domains | Mentors | Project Difficulty | | ||
|---------------------------------------------------------------------------|------------------------------|--------------------| | ||
| PCB Designing, Embedded C, Control Systems, Graph Algorithms, Electronics | Suraj Sonawane, Atharva Atre | Hard | | ||
|
||
<br> | ||
|
||
### Project Description | ||
|
||
Have you ever heard of micromouse? It is a small, autonomous robot designed to navigate and solve mazes quickly. This exciting project will allow you to showcase your skills in control systems, graph algorithms, embedded C, and PCB design. | ||
|
||
<img src="/assets/img/micromouse.gif" alt="Micromouse in action" width="600"> | ||
|
||
The goal of the project is to develop a custom PCB that can optimize your robot's performance, enabling it to navigate and solve mazes with ease. By implementing a PID controller, you can ensure that your robot has precise movement and control, making real-time adjustments with the help of sensors and feedback mechanisms. | ||
|
||
But that's not all - to achieve high-speed maze-solving, you'll need to use the flood-fill algorithm. This algorithm allows your micromouse to explore the maze systematically, determining the shortest path through it and taking your project to the next level. | ||
|
||
So, get ready to embark on an exciting journey of designing and building your own high-speed maze-solving micromouse robot. Who knows, you might just end up creating the next big thing in the world of robotics! | ||
|
||
### References | ||
|
||
- What is a micromouse? [Wikipedia](https://en.wikipedia.org/wiki/Micromouse) \| [Video Explanation](https://youtu.be/ZMQbHMgK2rw?si=RxHKATjFtHNTBpav) | ||
- [Micromouse PCB Design](https://github.com/gautam-dev-maker/mushak) | ||
- [Implementation of floodfill algorithm on micromouse](https://youtu.be/GoJ-K7gniFI?si=XqS9p4tVykANKBLw) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,299 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
|
||
<!-- Head --> | ||
<head> | ||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- Metadata, OpenGraph and Schema.org --> | ||
|
||
|
||
<!-- Standard metadata --> | ||
<meta charset="utf-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> | ||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
<title>Micromouse | Eklavya 2024 </title> | ||
<meta name="author" content="Eklavya 2024 "> | ||
<meta name="description" content="Design a micromouse PCB from scratch and implement maze floodfill algorithms on it!"> | ||
<meta name="keywords" content="jekyll, jekyll-theme, academic-website, portfolio-website"> | ||
|
||
|
||
<!-- Bootstrap & MDB --> | ||
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha256-DF7Zhf293AJxJNTmh5zhoYYIMs2oXitRfBjY+9L//AY=" crossorigin="anonymous"> | ||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/mdb.min.css" integrity="sha256-jpjYvU3G3N6nrrBwXJoVEYI/0zw8htfFnhT9ljN3JJw=" crossorigin="anonymous"> | ||
|
||
<!-- Bootstrap Table --> | ||
<link defer rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-table.min.css"> | ||
|
||
<!-- Fonts & Icons --> | ||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css" integrity="sha256-mUZM63G8m73Mcidfrv5E+Y61y7a12O5mW4ezU3bxqW4=" crossorigin="anonymous"> | ||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/academicons.min.css" integrity="sha256-i1+4qU2G2860dGGIOJscdC30s9beBXjFfzjWLjBRsBg=" crossorigin="anonymous"> | ||
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons"> | ||
|
||
<!-- Code Syntax Highlighting --> | ||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jwarby/jekyll-pygments-themes@master/github.css" media="" id="highlight_theme_light"> | ||
|
||
|
||
|
||
<!-- Styles --> | ||
|
||
<link rel="shortcut icon" href="/assets/img/favicon.ico"> | ||
|
||
<link rel="stylesheet" href="/assets/css/main.css"> | ||
<link rel="canonical" href="http://localhost:4000/projects/Micromouse/"> | ||
|
||
<!-- Dark Mode --> | ||
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jwarby/jekyll-pygments-themes@master/native.css" media="none" id="highlight_theme_dark"> | ||
|
||
<script src="/assets/js/theme.js"></script> | ||
<script src="/assets/js/dark_mode.js"></script> | ||
|
||
|
||
</head> | ||
|
||
<!-- Body --> | ||
<body class="fixed-top-nav "> | ||
|
||
<!-- Header --> | ||
<header> | ||
|
||
<!-- Nav Bar --> | ||
<nav id="navbar" class="navbar navbar-light navbar-expand-sm fixed-top"> | ||
<div class="container"> | ||
<a class="navbar-brand title font-weight-lighter" href="/"><!-- <span class="font-weight-bold">Eklavya 2024 </span> --> | ||
<img src="/assets/img/EKLAVYA_2024__6_-removebg-preview.png" alt="heading" style="width: 300px; height: 40px; object-fit: cover; object-position: 0% 45%"></a> | ||
<!-- Navbar Toggle --> | ||
<button class="navbar-toggler collapsed ml-auto" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> | ||
<span class="sr-only">Toggle navigation</span> | ||
<span class="icon-bar top-bar"></span> | ||
<span class="icon-bar middle-bar"></span> | ||
<span class="icon-bar bottom-bar"></span> | ||
</button> | ||
|
||
<div class="collapse navbar-collapse text-right" id="navbarNav"> | ||
<ul class="navbar-nav ml-auto flex-nowrap"> | ||
|
||
<!-- About --> | ||
<li class="nav-item "> | ||
<a class="nav-link" href="/">Home</a> | ||
</li> | ||
|
||
|
||
<!-- Other pages --> | ||
<li class="nav-item "> | ||
<a class="nav-link" href="/leaderboard/">Leaderboard</a> | ||
</li> | ||
<li class="nav-item "> | ||
<a class="nav-link" href="/projects/">Eklavya Projects</a> | ||
</li> | ||
|
||
<!-- Toogle theme mode --> | ||
<!-- <li class="toggle-container"> | ||
<button id="light-toggle" title="Change theme"> | ||
<i class="fas fa-moon"></i> | ||
<i class="fas fa-sun"></i> | ||
</button> | ||
</li> --> | ||
</ul> | ||
</div> | ||
</div> | ||
</nav> | ||
|
||
<!-- Scrolling Progress Bar --> | ||
<progress id="progress" value="0"> | ||
<div class="progress-container"> | ||
<span class="progress-bar"></span> | ||
</div> | ||
</progress> | ||
</header> | ||
|
||
|
||
<!-- Content --> | ||
<div class="container mt-5"> | ||
|
||
<!-- page.html --> | ||
<div class="post table-borderless"> | ||
|
||
<header class="post-header"> | ||
<h1 class="post-title">Micromouse</h1> | ||
<p class="post-description">Design a micromouse PCB from scratch and implement maze floodfill algorithms on it!</p> | ||
</header> | ||
|
||
<article> | ||
<table> | ||
<thead> | ||
<tr> | ||
<th>Project Domains</th> | ||
<th>Mentors</th> | ||
<th>Project Difficulty</th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr> | ||
<td>PCB Designing, Embedded C, Control Systems, Graph Algorithms, Electronics</td> | ||
<td>Suraj Sonawane, Atharva Atre</td> | ||
<td>Hard</td> | ||
</tr> | ||
</tbody> | ||
</table> | ||
|
||
<p><br></p> | ||
|
||
<h3 id="project-description">Project Description</h3> | ||
|
||
<p>Have you ever heard of micromouse? It is a small, autonomous robot designed to navigate and solve mazes quickly. This exciting project will allow you to showcase your skills in control systems, graph algorithms, embedded C, and PCB design.</p> | ||
|
||
<p><img src="/assets/img/micromouse.gif" alt="Micromouse in action" width="600"></p> | ||
|
||
<p>The goal of the project is to develop a custom PCB that can optimize your robot’s performance, enabling it to navigate and solve mazes with ease. By implementing a PID controller, you can ensure that your robot has precise movement and control, making real-time adjustments with the help of sensors and feedback mechanisms.</p> | ||
|
||
<p>But that’s not all - to achieve high-speed maze-solving, you’ll need to use the flood-fill algorithm. This algorithm allows your micromouse to explore the maze systematically, determining the shortest path through it and taking your project to the next level.</p> | ||
|
||
<p>So, get ready to embark on an exciting journey of designing and building your own high-speed maze-solving micromouse robot. Who knows, you might just end up creating the next big thing in the world of robotics!</p> | ||
|
||
<h3 id="references">References</h3> | ||
|
||
<ul> | ||
<li>What is a micromouse? <a href="https://en.wikipedia.org/wiki/Micromouse" rel="external nofollow noopener" target="_blank">Wikipedia</a> | <a href="https://youtu.be/ZMQbHMgK2rw?si=RxHKATjFtHNTBpav" rel="external nofollow noopener" target="_blank">Video Explanation</a> | ||
</li> | ||
<li><a href="https://github.com/gautam-dev-maker/mushak" rel="external nofollow noopener" target="_blank">Micromouse PCB Design</a></li> | ||
<li><a href="https://youtu.be/GoJ-K7gniFI?si=XqS9p4tVykANKBLw" rel="external nofollow noopener" target="_blank">Implementation of floodfill algorithm on micromouse</a></li> | ||
</ul> | ||
|
||
|
||
</article> | ||
|
||
</div> | ||
|
||
|
||
</div> | ||
|
||
<!-- Footer --> <!-- | ||
<footer class="fixed-bottom"> | ||
<div class="container mt-0"> | ||
© Copyright 2024 Eklavya 2024 . Powered by <a href="https://jekyllrb.com/" target="_blank">Jekyll</a> with <a href="https://github.com/alshedivat/al-folio">al-folio</a> theme. Hosted by <a href="https://pages.github.com/" target="_blank">GitHub Pages</a>. Photos from <a href="https://unsplash.com" target="_blank">Unsplash</a>. | ||
</div> | ||
</footer> --> | ||
|
||
<!-- JavaScripts --> | ||
<!-- jQuery --> | ||
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> | ||
|
||
<!-- Bootsrap & MDB scripts --> | ||
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha256-fgLAgv7fyCGopR/gBNq2iW3ZKIdqIcyshnUULC4vex8=" crossorigin="anonymous"></script> | ||
<script src="https://cdn.jsdelivr.net/npm/[email protected]/js/mdb.min.js" integrity="sha256-NdbiivsvWt7VYCt6hYNT3h/th9vSTL4EDWeGs5SN3DA=" crossorigin="anonymous"></script> | ||
|
||
<!-- Masonry & imagesLoaded --> | ||
<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/masonry.pkgd.min.js" integrity="sha256-Nn1q/fx0H7SNLZMQ5Hw5JLaTRZp0yILA/FRexe19VdI=" crossorigin="anonymous"></script> | ||
<script defer src="https://cdn.jsdelivr.net/npm/imagesloaded@4/imagesloaded.pkgd.min.js"></script> | ||
<script defer src="/assets/js/masonry.js" type="text/javascript"></script> | ||
|
||
<!-- Medium Zoom JS --> | ||
<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/medium-zoom.min.js" integrity="sha256-7PhEpEWEW0XXQ0k6kQrPKwuoIomz8R8IYyuU1Qew4P8=" crossorigin="anonymous"></script> | ||
<script defer src="/assets/js/zoom.js"></script> | ||
|
||
<!-- Bootstrap Table --> | ||
<script defer src="https://unpkg.com/[email protected]/dist/bootstrap-table.min.js"></script> | ||
|
||
<!-- Load Common JS --> | ||
<script src="/assets/js/no_defer.js"></script> | ||
<script defer src="/assets/js/common.js"></script> | ||
<script defer src="/assets/js/copy_code.js" type="text/javascript"></script> | ||
|
||
|
||
<script async src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script> | ||
<script async src="https://badge.dimensions.ai/badge.js"></script> | ||
|
||
<!-- MathJax --> | ||
<script type="text/javascript"> | ||
window.MathJax = { | ||
tex: { | ||
tags: 'ams' | ||
} | ||
}; | ||
</script> | ||
<script defer type="text/javascript" id="MathJax-script" src="https://cdn.jsdelivr.net/npm/[email protected]/es5/tex-mml-chtml.js"></script> | ||
<script defer src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> | ||
|
||
|
||
|
||
|
||
<!-- Scrolling Progress Bar --> | ||
<script type="text/javascript"> | ||
/* | ||
* This JavaScript code has been adapted from the article | ||
* https://css-tricks.com/reading-position-indicator/ authored by Pankaj Parashar, | ||
* published on the website https://css-tricks.com on the 7th of May, 2014. | ||
* Couple of changes were made to the original code to make it compatible | ||
* with the `al-foio` theme. | ||
*/ | ||
const progressBar = $("#progress"); | ||
/* | ||
* We set up the bar after all elements are done loading. | ||
* In some cases, if the images in the page are larger than the intended | ||
* size they'll have on the page, they'll be resized via CSS to accomodate | ||
* the desired size. This mistake, however, breaks the computations as the | ||
* scroll size is computed as soon as the elements finish loading. | ||
* To account for this, a minimal delay was introduced before computing the | ||
* values. | ||
*/ | ||
window.onload = function () { | ||
setTimeout(progressBarSetup, 50); | ||
}; | ||
/* | ||
* We set up the bar according to the browser. | ||
* If the browser supports the progress element we use that. | ||
* Otherwise, we resize the bar thru CSS styling | ||
*/ | ||
function progressBarSetup() { | ||
if ("max" in document.createElement("progress")) { | ||
initializeProgressElement(); | ||
$(document).on("scroll", function() { | ||
progressBar.attr({ value: getCurrentScrollPosition() }); | ||
}); | ||
$(window).on("resize", initializeProgressElement); | ||
} else { | ||
resizeProgressBar(); | ||
$(document).on("scroll", resizeProgressBar); | ||
$(window).on("resize", resizeProgressBar); | ||
} | ||
} | ||
/* | ||
* The vertical scroll position is the same as the number of pixels that | ||
* are hidden from view above the scrollable area. Thus, a value > 0 is | ||
* how much the user has scrolled from the top | ||
*/ | ||
function getCurrentScrollPosition() { | ||
return $(window).scrollTop(); | ||
} | ||
|
||
function initializeProgressElement() { | ||
let navbarHeight = $("#navbar").outerHeight(true); | ||
$("body").css({ "padding-top": navbarHeight }); | ||
$("progress-container").css({ "padding-top": navbarHeight }); | ||
progressBar.css({ top: navbarHeight }); | ||
progressBar.attr({ | ||
max: getDistanceToScroll(), | ||
value: getCurrentScrollPosition(), | ||
}); | ||
} | ||
/* | ||
* The offset between the html document height and the browser viewport | ||
* height will be greater than zero if vertical scroll is possible. | ||
* This is the distance the user can scroll | ||
*/ | ||
function getDistanceToScroll() { | ||
return $(document).height() - $(window).height(); | ||
} | ||
|
||
function resizeProgressBar() { | ||
progressBar.css({ width: getWidthPercentage() + "%" }); | ||
} | ||
// The scroll ratio equals the percentage to resize the bar | ||
function getWidthPercentage() { | ||
return (getCurrentScrollPosition() / getDistanceToScroll()) * 100; | ||
} | ||
</script> | ||
|
||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.