You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In many cases using a micro-controller can be advantages compared to a full-out Linux system:
fast boot time (measured in milliseconds instead of seconds)
capability to completely power off (i.e. no battery drain at all) for long periods of time
cost (eliminating the linux tax in terms of additional onboard storage needed for Linux)
verifiable controls (i.e. strict real-time application/drive of mechatronics/etc. w/ determinism)
power (running Linux may be completely overkill in general)
a micro controller already is driving a given design/application (and working well)
So one advantage of DepthAI is it is such a system... booting over eMMC it can be fully up/running in under 100 milliseconds, and ~400 milliseconds from NOR flash.
So using DepthAI with such micro-controller applications is valuable. And a popular/easy way to interface between microcontrollers is SPI (COPI/CIPO).
Move to the how:
We have initially implemented a SPI protocol w/ CRC capability for DepthAI to act as a SPI peripheral. So then a microcontroller is the SPI controller and can pull data off of DepthAI when it sees fit.
At the physical layer (see luxonis/oak-hardware#10), there will be a GPIO output so that DepthAI can interrupt the microcontroller when new/pertinent data is available. (This pin can also be ignored/not-connected if desired and the microcontroller can simply poll or request data when it wants to.)
Initially we will implement support tensor outputs from the salient neural networks (upon request from the SPI controller), but will expand to allow all the pertinent functionality from #136 to be included, both as input and output.
Move to the what:
SPI communication support for DepthAI.
Will function in parallel to USB interface (for easier system integration debugging).
Will function off of NOR-flash boot and eMMC-boot (and likely uSD-Card boot) for hostless operation.
The Gen2 implementation of SPI is here: https://github.com/luxonis/esp32-spi-message-demo. As of this writing it includes MobileNetv2-SSD, tiny-YOLOv3, and thumbnail output examples. But a whole slew of other permutations are possible as it is based on the node/graph system of the Gen2 pipeline builder.
Activity
Luxonis-Brandon commentedon Sep 28, 2020
We have an initial version running here: https://discuss.luxonis.com/d/56-initial-bw1092-esp32-proof-of-concept-code
Luxonis-Brandon commentedon Nov 5, 2020
Our first real implementation and example is here:
https://github.com/luxonis/esp32-spi-message-demo
And more background is here:
https://docs.google.com/document/d/1tw_GtzH0YTiPkDBnzNltluvwOpgwk0d3nLgbtOHy588/edit#heading=h.viulr5h9nv2z
Luxonis-Brandon commentedon Nov 26, 2020
And our pull request for joining this into the Gen2 pipeline builder is here:
luxonis/depthai-core#26
Luxonis-Brandon commentedon Dec 17, 2020
The Gen2 implementation of SPI is here: https://github.com/luxonis/esp32-spi-message-demo. As of this writing it includes MobileNetv2-SSD, tiny-YOLOv3, and thumbnail output examples. But a whole slew of other permutations are possible as it is based on the node/graph system of the Gen2 pipeline builder.
Merge pull request luxonis#140 from luxonis/develop