I want to know of any existing hardware set ups or best approaches to have an embedded system hooked up to sensors, feeding data into a Nengo adaptive network on an FPGA, and use that to drive motors.
I saw an example of using Nengo to for adaptive control of a drone in a simulated 3D environment. Now what components would I need to make a physical example of that?
Edit: After Actually reading the NengoFPGA guide, I see how it can be implemented now.
If you are interested in running portions of a Nengo network on an FPGA, then NengoFPGA is a way to do so. However, there are some limitations to NengoFPGA. First, the current feature set only allows you to run 1 Nengo ensemble on one FPGA board. If you want to simulate multiple Nengo ensembles on the FPGA, you’ll need 1 board per ensemble to simulate. Second, it was part of the development plan to integrate GPIO connectivity to the ensemble being simulated on the FPGA. However, due to the redistribution of development resources to other products, this plan has been postponed indefinitely. In the future, if we see enough interest in that feature, we’ll re-examine developing the feature further.
As it currently stands, to interact with sensors and/or motors connected to the FPGA, you’ll have to pipe the information back to the PC and connect it to the FPGA ensemble (via Nengo nodes within the Nengo network).
Thanks for pointing out the 1 Ensemble per board. Where could I go to read on other limitations of NengoFPGA?
So then that means NengoLoihi is the only option to run a whole Network on dedicated hardware separate from the processor? Is there any data on the PYNQ board’s performance running models with one of the ensembles on the FPGA?
Apart from the 1 ensemble limitation, and the lack of GPIO interconnectivity, ensemble size is the only other limitation that stands out to me. You can find documentation on this constraint (for the PYNQ board in particular) in the NengoPYNQ documentation. If you are using the DE1 board, the NengoDE1 documentation has a similar entry.
If you consider the GPU as separate to the processor, both NengoOCL and NengoDL allow you to run entire Nengo models on GPUs. As for other types of hardware, apart from NengoLoihi (which you have already mentioned), NengoSpinnaker allows you to run full Nengo models on the SpiNNaker (v1) boards.