Skip to content

Commit fc57c84

Browse files
committed
2 parents 2d6b622 + 517e50f commit fc57c84

File tree

1 file changed

+71
-16
lines changed

1 file changed

+71
-16
lines changed

README.md

Lines changed: 71 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,53 @@
1-
# QuadBot-NeuroMorphic
2-
Software library developed as part of a undergraduate research project at the University of Cambridge, aimed at advancing the study of robotic locomotion neuromorphic control principles.
1+
# Welcome to **QuadBot-NeuroMorphic!**
32

4-
* Contributor: Prithvi Raj
3+
This repository is dedicated to the "Neuromorphic Control of Quadrupedal Robots" project, which was conducted as part of an undergraduate research opportunity hosted by the Cambridge University Engineering Department.
4+
5+
* Contributor: Prithvi Raj ([email protected])
56
* Supervisors: Dr. Fulvio Forni, Prof. Timothy O'Leary
67
* Funding Body: MathWorks
78

8-
## Repository Overview
9+
<p align="center">
10+
<img src="https://github.com/PritRaj1/QuadBot-NeuroMorphic/assets/77790119/20187995-0859-492b-896a-064ba62424f2" alt="IMG20230901154540" width="500">
11+
</p>
12+
<p align="center"><em>Welcome to the repository!</em></p>
13+
14+
## Project Overview
15+
16+
For further contextual details about the project and its goals, please refer to the brief contextual report, **Ramp Up Guidance/Short Introductory Report.pdf**.
17+
18+
Throughout this README, you will find links to various unlisted YouTube videos providing further guidance. Here is an index of all of them for your reference:
19+
1. [Welcome Compilation](https://youtu.be/8BMxn9v1NPU)
20+
2. [Using the Robots](https://youtu.be/NR2hcypiejE)
21+
3. [Neuromorphic Gaiting Overview](https://youtu.be/aiv5ElMc6nQ)
22+
4. [Flashing the VEX Hardware](https://youtu.be/GqSq24PBeaw)
23+
5. [MQIF Simulink Lecture](https://youtu.be/Tk5bJmx7L14)
24+
6. [Introducing NeuroPup!](https://youtu.be/5darLvzCVpE)
25+
7. [Introducing Synapider!](https://youtu.be/WLrbr75hk20)
26+
27+
Thank you for your interest in our project, and feel free to reach out to clarify and learn more about our work in the field of neuromorphic robotics!
28+
29+
## Prerequisites
30+
31+
* MATLAB/Simulink R2022b or later
32+
* SOLIDWORKS 2022 or later
33+
* [Simulink Coder Support Package for VEX EDR V5 Robot Brain](https://uk.mathworks.com/help/supportpkg/vexv5/)
34+
* [VEX V5 Advanced Smart Motor Blocks files](https://uk.mathworks.com/matlabcentral/answers/435564-vex-v5-motor-voltage) --has been provided in this repository for convenience
35+
* [VEX V5 Simulink Expansion](https://uk.mathworks.com/matlabcentral/fileexchange/119133-vex-v5-simulink-expansion) --has been provided in this repository for convenience
36+
* [VEX SOLIDWORKS Files](https://github.com/VEX-CAD/VEX-CAD-Solidworks.git) --optional, but useful to have
37+
38+
## Overview of Files
939
### 'Ramp Up Guidance' Directory
10-
In this directory, you will discover a range of resources designed to facilitate your journey through this project. We recommend starting with 'Short Introductory Report.pdf' to gain valuable contextual insights into the undergraduate research placement conducted during the summer of 2023.
40+
In this directory, you will discover a range of resources designed to facilitate your journey through this project. We recommend starting with 'Short Introductory Report.pdf' to gain contextual information regarding the undergraduate research placement conducted during the summer of 2023.
41+
42+
Additionally, within this directory you will find the 'Neuron Guidance' subfolder, which aims to extend your understanding of the fundamental neuroscience principles underpinning the neuron models implemented in Simulink. This subfolder contains:
1143

12-
Additionally, you will find the 'Neuron Guidance' subfolder, which aims to extend your understanding of the fundamental neuroscience principles underpinning the neuron models implemented in Simulink. To inspire your exploration, we've included the Jupyter Notebook 'NeuronIntroductions.ipynb,' which contains experiments to help you develop a deeper understanding of these models. It does not serve as a replacement to reading neuroscience literature, but hopefully it can present the best practice towards learning the behaviours of the neuron models, which is through experimentation and experience.
44+
* The Jupyter Notebook **'Neuron_Introductions.ipynb**', which contains experiments to help you develop a deeper understanding of these models. It does not serve as a replacement to reading neuroscience literature, but hopefully it can present the best practice towards learning the behaviours of the neuron models, which is through experimentation and experience.
45+
46+
* A Python implementation of the MQIF Neuron, named **'MQIF_Neuron_Python.py'**. If you have previous experience with traditional software languages, (but maybe less experience with Simulink), we recommend exploring this file. Although it may appear daunting at first glance, the majority of the code consists of comments to assist you! This Python script is provided to facilitate your understanding of the MQIF neuron through standard coding practices, as the majority of the software in this project was developed in Simulink.
47+
* The script also contains a function for tracking spikes within the MQIF neuron's output burst. This concept is expanded upon in 'Simulink Neurons/Characterising' simulations, so developing some familiarity with this function is recommended.
48+
* Literature explaining the neuroscience theory underpinning the software contained within this repository.
49+
50+
Once you have gained confidence with the Python/Notebook implementations of the neurons, consider examining the corresponding Simulink implementations available in the 'Simulink Neurons/Core Neurons' directory. The most important model is the 'MQIF_Neuron_Synapse.slx' file, as it serves as the foundational neuron for all central pattern generator circuits within this repository. In support of this, a video lecture has been recorded to aid your understanding: [MQIF_Synapse Explanation](https://youtu.be/Tk5bJmx7L14).
1351

1452
We also recommend the following resources:
1553
* https://neuronaldynamics.epfl.ch/index.html
@@ -18,43 +56,60 @@ We also recommend the following resources:
1856
* https://en.wikipedia.org/wiki/Neural_coding
1957
* https://en.wikipedia.org/wiki/Hodgkin%E2%80%93Huxley_model
2058

59+
---
60+
2161
### 'Simulink Neurons' Directory
2262
Within the Simulink Neurons directory, you will discover the following subfolders:
2363

24-
* **Core Neurons:** This folder houses individual neurons used as building blocks for constructing derived neural circuits. Notably, "MQIF_Neuron_Synapse" stands out as the key neuron adapted for synaptic connections and circuit construction. The other two neurons include the standard MQIF neuron based on its foundational paper and the Hodgkin-Huxley neuron, included for educational purposes.
64+
* **Core Neurons:** This folder houses individual neurons used as building blocks for constructing derived neural circuits. Notably, "MQIF_Neuron_Synapse" stands out as the key neuron adapted for synaptic connections and circuit construction. The other two neurons include the standard MQIF neuron based on its foundational paper and the Hodgkin-Huxley neuron, included for educational purposes. As mentioned in the 'Ramp Up Guidance' section, the following video has been provided to assist your understanding: [MQIF_Synapse Explanation](https://youtu.be/Tk5bJmx7L14).
2565

2666
* **Derived Networks:** In this folder, you'll find the simplest central pattern generator circuits that can be assembled using individual MQIF neurons. These are included because they serve as fundamental components that can be interconnected to create more intricate neuronal circuits.
2767

2868
* **Derived Oscillators:** This folder contains the aforementioned "Derived Network" objects connected with feedback in a manner that yields a stable sine wave after double integration. These examples showcase how a neuromorphic gaiting waveform can be employed to control sinusoidal gaiting, and have been included as inspiration for future developers.
2969

3070
* **Characterising:** In this folder is a collection of MATLAB scripts for characterising neural output in relation to its governing parameters. Particular MQIF parameters can be optimised to achieve a specfic pulse shapes, frequencies, durations, etc. These scripts have been included to aid future developers explore the parameter space.
3171

32-
These components (hopefully) enable the straightforward assembly of neuromorphic circuits for locomotive control. Individual neurons can be used to build central pattern generator circuits. When central pattern generator circuits are combined with feedback neurons, they can produce oscillators. These oscillators, in turn, allow for the encoding of stable gait patterns. An example of this can be referred to in the Neuropup directory. 'NeuromorphicDogGait_WalksBackwards.slx' is a demonstration of this.
72+
These components (hopefully) enable the straightforward assembly of neuromorphic circuits for locomotive control. Individual neurons can be used to build central pattern generator circuits. When central pattern generator circuits are combined with feedback neurons, they can produce oscillators. These oscillators, in turn, allow for the encoding of stable gait patterns. For a brief and explanatory demonstration of this, you can watch the video here: [Neuromorphic Gaiting](https://youtu.be/aiv5ElMc6nQ).
3373

3474
### 'Solidworks' Directory
3575
All the custom CAD files used to contruct the two robots have been included in this directory. Here is a general rule-of-thumb-guide how each part of the existing robot was manufactured:
3676
* Brown (MDF wood) - Lasercut
3777
* White (PLA) - 3D Printed
3878
* Shiny/Colourful (Aluminium/Plastic) - Provided by VEX
3979

80+
---
81+
4082
### NeuroPup & Synapider
41-
NeuroPup is the dog-like robot. Synapider is the spider-like robot. Both are quadrupedal robots that were developed as part of the 10-week undergraduate research program completed during summer 2023. As previously stated, both have been built out of a combination of VEX hardware, lasercut MDF wood, and 3D-printed parts.
83+
NeuroPup is the dog-like robot. Synapider is the spider-like robot.
84+
85+
Both are quadrupedal robots that were developed as part of the 10-week undergraduate research program completed during summer 2023. As previously stated, both have been built out of a combination of VEX hardware, lasercut MDF wood, and 3D-printed parts.
86+
87+
| <img src="https://github.com/PritRaj1/QuadBot-NeuroMorphic/blob/main/NeuroPup%20-%20Dog%20Robot/NeuroPup.jpg" width="350" alt="NeuroPup"> | <img src="https://github.com/PritRaj1/QuadBot-NeuroMorphic/blob/main/Synapider%20-%20Spider%20Robot/Synapider.jpg" width="350" alt="Synapider"> |
88+
|:--:|:--:|
89+
| *NeuroPup* | *Synapider* |
4290

43-
<div style="display: flex; justify-content: space-between;">
44-
<img src="https://github.com/PritRaj1/QuadBot-NeuroMorphic/blob/main/NeuroPup%20-%20Dog%20Robot/NeuroPup.jpg" width="300" alt="Dog Robot">
45-
<img src="https://github.com/PritRaj1/QuadBot-NeuroMorphic/blob/main/Synapider%20-%20Spider%20Robot/Synapider.jpg" width="300" alt="Spider Robot">
46-
</div>
4791

4892
Please also watch the video linked [here](https://youtu.be/NR2hcypiejE), which serves as a brief introduction regarding the use of the VEX robots. Pay close attention to the process of 'waking up' the Brain after powering it down. It's important to note that executing a program immediately after powering down the Brain will not yield any behavior. In such cases, you must restart the program. This behavior is observed specifically after power cycling the VEX Brain. However, if you avoid powering it down between program executions, there is no need to restart the program; it will run successfully on the first attempt.
4993

50-
**Please be aware that the VEX Brain has a minimum flashable sampling time of 0.001 seconds. Therefore, before uploading any Simulink models to the VEX Brain, ensure that the fixed time-step solver is configured with a time step of 1e-3. This specific time step is also stable for solving the MQIF ODEs. Using a larger time step may result in incorrect solutions/instability, while a smaller time step will not load onto the VEX Brain.**
94+
**Please be aware that the VEX Brain imposes a minimum flashable sampling time of 0.001 seconds. Consequently, before uploading any Simulink models that incorporate the MQIF Neuron to the VEX Brain, please ensure that the fixed time-step solver is configured with a time step of 1e-3. This time step is also specifically stable for solving the MQIF ODEs. Using a larger time step may result in incorrect solutions/instability, while a smaller time step will not load onto the VEX Brain.**
95+
96+
Two videos have been recorded to introduce you to the two robots. They are recommended viewing, as some advice is also provided regarding their usage:
97+
* [Introducing NeuroPup!](https://youtu.be/5darLvzCVpE)
98+
* [Introducing Synapider!](https://youtu.be/WLrbr75hk20)
5199

52100
#### 'Neuropup - Dog Robot' Directory
53101
Contained within this directory are various Simulink models that were flashed onto the dog-like robot.
54102

55-
* **'DogGait_sine.slx':** This file contains a basic gait pattern composed of sinusoidal movements, which can be replicated using MQIF neuronal circuits. To see this gait in action, use the 'stand' and 'walk' buttons, as demonstrated in the 'RobotEtiquette.mp4' video located in the 'Ramp Up Guidance' directory.
103+
* **'DogGait_sine.slx':** This file contains a basic gait pattern composed of sinusoidal movements, which can be replicated using MQIF neuronal circuits. To see this gait in action, use the 'stand' and 'walk' buttons, as demonstrated in the [Introducing NeuroPup!](https://youtu.be/5darLvzCVpE) video.
56104
* **'DogHalfCentre_SingleLeg.slx':** This program serves as a simple demonstration of how an oscillator, constructed using a half-center central pattern generator, can leverage the particular mechanical design of Neuropup's legs to produce rhythmic extension-contraction movements.
57-
* **'NeuromorphicDogGait_WalksBackwards.slx':** This file showcases the application of a more intricate circuit, referred to as the 'Quad-centre CPG' (Central Pattern Generator), to generate a complex gait pattern. In this specific example, the gaiting pattern is designed to make the dog walk in reverse.
105+
* **'NeuromorphicDogGait_WalksBackwards.slx':** This file showcases the application of a more intricate circuit, which we have started calling the 'Quad-centre CPG' (Central Pattern Generator), to generate a complex gait pattern. In this specific example, the gaiting pattern is designed to make the dog walk in reverse. For a brief explanation of how this was achieved, please watch the [Neuromorphic Gaiting](https://youtu.be/aiv5ElMc6nQ) video.
106+
107+
#### 'Synapider - Spider Robot' Directory
108+
Within this directory are various Simulink models that were flashed onto the spider-like robot.
109+
110+
* **'SpiderGait_Sine.slx'**: This file showcases a fundamental gait pattern using sinusoidal movements, replicable through MQIF neuronal circuits.
111+
* **'SpiderGait_Better.slx'**: This is a small evolution on the SpiderGait_Sine.slx, in which the sinusoidal signals have undergone some post-processing to produce motions more akin to 'stepping'. In particular, this is the gait deomstrated in the [Introducing Synapider!](https://youtu.be/WLrbr75hk20) video.
112+
* **'SpiderHalfCentre_SingleLeg.slx'**: This program provides a straightforward illustration of how an oscillator, created using a half-center central pattern generator, make use of Synapider's leg mechanics to generate rhythmic motions.
58113

59114

60115

0 commit comments

Comments
 (0)