This package contains the control-loop demo that shows how to interact with Spiking Neural Networks (SNNs) on Intel's Loihi neuromorphic chip during runtime for real-time robotic control.
We have been using control-loops shown here to construct interaction frameworks to enable real-time control on different kinds of robotic tasks. Details for the application of the control-loop can be found in these papers:
-
Guangzhi Tang, Neelesh Kumar, and Konstantinos P. Michmizos. "Reinforcement co-Learning of Deep and Spiking Neural Networks for Energy-Efficient Mapless Navigation with Neuromorphic Hardware." IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2020). [Paper] [Code]
-
Ioannis Polykretis, Guangzhi Tang, and Konstantinos P. Michmizos. "An Astrocyte-Modulated Neuromorphic Central Pattern Generator for Hexapod Robot Locomotion on Intel’s Loihi." International Conference on Neuromorphic Systems (ICONS 2020). [Paper]
-
Guangzhi Tang, Neelesh Kumar, Raymond Yoo, and Konstantinos P. Michmizos. "Deep Reinforcement Learning with Population-Coded Spiking Neural Network for Continuous Control." 4th Conference on Robot Learning (CoRL 2020). [Paper] [Code]
- Ubuntu 16.04
- Python 3.5.2
- NxSDK 0.9
Intel's neuromorphic library NxSDK is only required for SNN deployment on the Loihi neuromorphic chip. If you are interested in deploying SNN on Loihi, please contact the Intel Neuromorphic Lab.
To simplify the network structure, the demo defines a 2-layer SNN with the 5 neurons in the input layer and 5 neurons in the output layer. Neurons in the output layer copy the spike activities from the input layer by using one-to-one connections. We demonstrate 3 different ways to interact with the SNN on Loihi:
-
(1 Control Iteration = 1 Loihi step) Inject spikes to the input layer. Record spikes from the output layer.
-
(1 Control Iteration = 10 Loihi steps) Inject current to Loihi and generate spikes for the input layer using Integrate-and-Fire neurons. Record the number of spikes from the output layer.
-
(1 Control Iteration = 100 Loihi steps) Inject spike probability to Loihi and generate Poisson spikes for the input layer. Record the number of spikes from the output layer.
More details on how to use the demo can be found in this ipython notebook.
This work is supported by Intel's Neuromorphic Research Community Grant Award. Part of our code was inspired by Intel's NxSDK and discussions with Intel engineers.