Skip to content

Commit 993a5b1

Browse files
committed
Add evolution simulation project to website
1 parent 68a7c75 commit 993a5b1

11 files changed

Lines changed: 160 additions & 10 deletions

_includes/header.html

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,15 +141,10 @@
141141
Projects
142142
</a>
143143
<ul>
144+
<li class="submenu_item"><a href="/projects/evolution_sim.html">Evolution Sim Display</a></li>
144145
<li class="submenu_item"><a href="/projects/remote_outlet.html">Remote Switched Outlet</a></li>
145146
<li class="submenu_item"><a href="/projects/power_supply.html">Bench Power Supply</a></li>
146147
<li class="submenu_item"><a href="/projects/pcb_clock.html">PCB Alarm Clock</a></li>
147-
<li class="submenu_item"><a href="/projects/night_vision.html">Night Vision Goggles</a></li>
148-
<li class="submenu_item"><a href="/projects/desk.html">Motorized Desk</a></li>
149-
<li class="submenu_item"><a href="/projects/IR_recorder.html">IR Recorder</a></li>
150-
<li class="submenu_item"><a href="/projects/home_automation_v2.html">Home Automation V2</a></li>
151-
<li class="submenu_item"><a href="/projects/internet_robot.html">Internet Robot</a></li>
152-
<li class="submenu_item"><a href="/projects/N64_mod.html">N64 Mod</a></li>
153148
<li class="submenu_item"><a href="/projects.html">. . .</a></li>
154149
</ul>
155150
</td>

projects.html

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,20 @@
1616

1717
<div class="main_content">
1818
<table id="projects_table">
19+
20+
<!-- Evolution Sim -->
21+
<tr>
22+
<td class="descr_table_entry">
23+
<a class="project_title" href="projects/evolution_sim.html">Evolution Simulation Canvas</a>
24+
<p class="project_description">This is a small wall mounted display that runs a simple evolution simulation that I wrote in Rust.
25+
It simulates little pixel creatures that use neural network "brains" to search for food in an environment. Think it ended up looking
26+
pretty neat!
27+
</p>
28+
</td>
29+
<td>
30+
<a href="projects/evolution_sim.html"><img class="project_image" src="projects/evsim_media/evsim_wall1_thumb.jpg"/></a>
31+
</td>
32+
</tr>
1933

2034
<!-- LightLink -->
2135
<tr>

projects/evolution_sim.html

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
---
2+
---
3+
4+
<html>
5+
<head>
6+
<link rel="stylesheet" type="text/css" href="../main.css"/>
7+
<link rel="stylesheet" type="text/css" href="../projects.css"/>
8+
<link rel="stylesheet" type="text/css" href="project_pages.css"/>
9+
10+
<title>Scott Stack's Website</title>
11+
12+
</head>
13+
14+
<body>
15+
<div id="page">
16+
{% include header.html %}
17+
18+
<div class="main_content">
19+
<h1 id="project_title">Evolution Simulation Display</h1>
20+
21+
<table>
22+
<tr>
23+
<td class="text_td">
24+
<p class="section_title">Overview</p>
25+
<p class="section_text">
26+
A little art piece that simulates pixel creatures with neural network "brains". This was mainly a way to show off a
27+
software project I was working on to learn Rust: <a href="https://github.com/spstack/evolution-sim">https://github.com/spstack/evolution-sim</a>
28+
The basic idea is that each little pixel creature has a small neural network "brain" that allows it to take in input and perform an action in response
29+
at every step of the simulation. If a creature lives long enough to find food, it'll reproduce spreading it's brain structure to the next generation
30+
(with optional random mutations). The result is that, over time, the creatures should "learn" to be better at finding food and intelligent-ish behavior
31+
should emerge. It's pretty fun to watch the simulation progress and see what kinds of strategies the creatures start to adapt.
32+
</p>
33+
<p class="section_text">
34+
The actual hardware here is just an LED matrix behind a blank white canvas. The canvas diffuses the LEDs really nicely, and I'm pretty happy with the way it looks!
35+
The idea came from a post on the Adafruit website:
36+
<a href="https://learn.adafruit.com/use-an-art-canvas-to-diffuse-RGB-matrix">https://learn.adafruit.com/use-an-art-canvas-to-diffuse-RGB-matrix</a>
37+
It's being driven by a raspberry pi running a custom version of Linux built using Yocto. Definitely wasn't necessary, but I wanted an excuse to learn
38+
a bit about Yocto as well :)
39+
</p>
40+
41+
<table>
42+
<tr>
43+
<td>
44+
<a href="evsim_media/evsim_demo.mp4">
45+
<video autoplay loop muted playsinline src="evsim_media/evsim_demo.mp4" class="section_image">
46+
This browser does not support the video tag.
47+
</video>
48+
</a>
49+
</td>
50+
<td>
51+
<a href="evsim_media/evsim_wall2.jpg">
52+
<img class="section_image" src="evsim_media/evsim_wall2.jpg" style="max-height: 425px;">
53+
</a>
54+
</td>
55+
</tr>
56+
<tr>
57+
<td>
58+
<a href="evsim_media/evsim_front2.jpg">
59+
<img class="section_image" src="evsim_media/evsim_front2.jpg">
60+
</a>
61+
</td>
62+
<td>
63+
<a href="evsim_media/evsim_back.jpg">
64+
<img class="section_image" src="evsim_media/evsim_back.jpg" style="max-height: 500;">
65+
</a>
66+
</td>
67+
</tr>
68+
</table>
69+
70+
<p class="section_title">Software</p>
71+
<p class="section_text">
72+
Here's a <a href="https://github.com/spstack/evolution-sim">link to Github project</a> for the main simulation code. This project was really just a way for me to learn Rust,
73+
so it took a while to write it. The README in that repo has more information about the sim!
74+
</p>
75+
<p class="section_text">
76+
I also made an attempt to learn a bit about Yocto to create a more lightweight linux to run on the Raspberry Pi. Yocto is a kind of build environment used to
77+
create custom embedded Linux distributions. It basically allows you to create images that contain all your code and dependencies already installed.
78+
Here's a <a href="https://github.com/spstack/evolution-sim-yocto">link to the Yocto repo</a> for this project. It really just takes the baseline Poky distribution, adds support for the Raspberry Pi, and
79+
implements one recipe for getting the evolution simulation Rust code and installing it. It also sets up a startup script to ensure the program runs automatically
80+
upon boot.
81+
</p>
82+
<p class="section_title">Hardware</p>
83+
<p class="section_text">
84+
The hardware for this project is really pretty simple since I didn't design anything and pretty much just bought everything off the shelf.
85+
It uses a Raspberry Pi 3A with a special "bonnet" for interfacing with a HUB75 type LED matrix. Here are the parts:
86+
</p>
87+
<p class="section_text">
88+
<ul style="margin-left: 1em;">
89+
<li><a href="https://www.adafruit.com/product/4732">LED Panel</a></li>
90+
<li><a href="https://www.adafruit.com/product/4027">Raspberry Pi Model 3A+</a></li>
91+
<li><a href="https://www.adafruit.com/product/3211">LED Matrix "Bonnet"</a></li>
92+
<li><a href="https://www.amazon.com/dp/B0DCYZZZ9N?ref=ppx_yo2ov_dt_b_fed_asin_title&th=1">Blank Canvas</a></li>
93+
</ul>
94+
</p>
95+
96+
<br/>
97+
<br/>
98+
<br/>
99+
100+
</td>
101+
</tr>
102+
103+
104+
<!--
105+
<tr>
106+
<td colspan="2">
107+
<p class="section_title">More Pictures</p>
108+
<table class="img_table">
109+
<tr>
110+
111+
<td class="img_td">
112+
<a href="pcb_clock_media/pcb_printed.jpg">
113+
<img src="pcb_clock_media/thumbnails/pcb_printed_thumb.jpg" class="img_thumb"
114+
/>
115+
</a>
116+
</td>
117+
118+
</tr>
119+
</table>
120+
</td>
121+
</tr>
122+
-->
123+
124+
</table>
125+
</div>
126+
127+
{% include footer.html %}
128+
129+
</div>
130+
131+
</div>
132+
</body>
133+
134+
</html>

projects/evsim_media/IMG_6963.jpg

2.42 MB
Loading
584 KB
Loading
1.19 MB
Loading
1.28 MB
Loading
639 KB
Loading
318 KB
Loading
285 KB
Loading

0 commit comments

Comments
 (0)