Commit Graph

1289 Commits

Author SHA1 Message Date
Kwabena W. Agyeman
cbe2a4aebd Disable find line segments on the M4. 2017-10-03 02:50:55 -04:00
iabdalkader
c961b3eac0 Remove Cortex flags from MP Makefile. 2017-10-02 00:49:36 +02:00
iabdalkader
38aca6e9e8 Disable frozen modules. 2017-10-02 00:47:03 +02:00
iabdalkader
bb0d0e778a Disable OPENMV 1 build. 2017-10-02 00:27:03 +02:00
iabdalkader
afe07324c5 Use 1 DMA handle for SD TX/RX 2017-10-02 00:16:27 +02:00
iabdalkader
763228e30d Update F4 HAL. 2017-10-01 22:57:28 +02:00
iabdalkader
2edc26db6a Update CMSIS. 2017-10-01 22:47:05 +02:00
iabdalkader
5bffa8879a Remove comment. 2017-09-26 00:03:41 +02:00
iabdalkader
608ca9ab87 Remove unused pyb functions. 2017-09-24 21:29:34 +02:00
iabdalkader
6e34bafe6b Add function to execute boot scripts. 2017-09-24 21:16:10 +02:00
iabdalkader
de8caa3006 Remove debugging code. 2017-09-24 20:48:26 +02:00
iabdalkader
0c20049e3d clean up main.c 2017-09-24 01:47:46 +02:00
iabdalkader
5460f7f5e1 Fix FS cache address. 2017-09-24 01:46:41 +02:00
iabdalkader
e2514ee302 Add pendsv debugging flags to top Makefile. 2017-09-23 15:46:06 +02:00
iabdalkader
041a93502b Update SCCB probe function. 2017-09-23 15:45:54 +02:00
iabdalkader
3820cd07b7 Update MP. 2017-09-23 15:45:42 +02:00
iabdalkader
6ae6ce0cf7 Reorder init functions. 2017-09-23 15:45:15 +02:00
iabdalkader
ace083430f Init USB before sensor init to log errors. 2017-09-23 15:00:50 +02:00
iabdalkader
6917e4bb32 Update to micropython 1.9.
* The following issues still need fixing:
*   Al fb_alloc nlr hooks are DISABLED.
*   modnetwork causes cam to hardfault.
*   Had to reduce heap by 1K (vfs buffer had to be moved to bss/data).
*   self-tests are disabled (cam gets stuck after executing).
2017-09-21 16:58:57 +02:00
iabdalkader
07b7fb1f21 Update main.c for MP 1.9. 2017-09-21 16:58:57 +02:00
iabdalkader
1ab776faf1 Use forced exception to stop scripts. 2017-09-21 16:58:57 +02:00
iabdalkader
3ccc418cf3 Update main Makefile for MP 1.9 2017-09-21 16:58:57 +02:00
iabdalkader
113806e51b Update WINC1500 FatFS code 2017-09-21 16:58:57 +02:00
iabdalkader
e43bd3223b Disable nlr/fb-alloc function. 2017-09-21 16:58:57 +02:00
iabdalkader
9db426394f Update OMV Python modules for MP-1.9 2017-09-21 16:58:57 +02:00
iabdalkader
4a521dae32 Update MP header. 2017-09-21 16:58:57 +02:00
iabdalkader
5018ac1cd4 Add wrappers for oofatfs 2017-09-21 16:58:57 +02:00
iabdalkader
be54d3a8c7 Use MicroPython's OOFatFS. 2017-09-21 16:58:57 +02:00
iabdalkader
260479ae0f Lower M4 sensor clock.
* Add PLL config to board to fine tune M4 sensor clock.
* Note M4 sensor clock is lowered, the MCU can't keep up with high FPS.
2017-09-13 23:46:20 +02:00
Ibrahim Abd Elkader
0cf13e8777 Merge pull request #263 from kwagyeman/lsd
Lsd
2017-09-13 18:09:50 +02:00
Kwabena W. Agyeman
5a3153c8b9 Find line segments more stable
Switched the find line segments algorithm to something more stable using
the standard LSD algorithm that's used by OpenCV.
2017-09-13 00:33:31 -04:00
Kwabena W. Agyeman
7dff089e6f Removed QRCodes from the OpenMV Cam M4.
They don't really work that well on it anyway due to having to use a low
res. This makes room for more basic CV features on the M4 which it can
run.
2017-09-03 14:39:14 -04:00
iabdalkader
35ab0a26fc Remove invalid resolutions.
* Fix issue #261
2017-08-29 01:54:43 +02:00
iabdalkader
7da5509aa5 Support writing raw images. 2017-08-26 20:27:48 +02:00
iabdalkader
9f25fa752e Use IM test macros. 2017-08-26 19:48:17 +02:00
iabdalkader
abad31acea Add IM_IS_BINARY. 2017-08-26 19:41:11 +02:00
iabdalkader
4a62b8b989 Add IM_IS_MUTABLE to check if JPEG or RAW image. 2017-08-24 23:42:05 +02:00
iabdalkader
9f71b89187 Fix IM_IS_JPEG macro. 2017-08-24 23:37:16 +02:00
iabdalkader
5dbc3e68b4 Bump firmware version. 2017-08-10 19:39:54 +02:00
iabdalkader
7d05519518 Enable VGA MJPEG. 2017-08-10 04:03:32 +02:00
iabdalkader
43f9535cf0 Support VGA GIFs with BAYER format. 2017-08-10 03:52:37 +02:00
iabdalkader
db4d47c67f Initialize FB Enabled flag. 2017-08-08 18:56:11 +02:00
Kwabena W. Agyeman
ae1e00cc2d Fix to match script 2017-08-07 03:47:25 -04:00
Kwabena W. Agyeman
3caed9461f Fix find_circles 2017-08-07 03:46:08 -04:00
Kwabena W. Agyeman
d284407898 Fixed issues with polar math code. 2017-08-07 01:40:04 -04:00
iabdalkader
5c469e1e27 Update docs. 2017-07-28 13:59:52 +02:00
iabdalkader
9f658e4cfd Enable Servo 3.
* Fix issue #256.
2017-07-18 22:00:12 +02:00
Kwabena W. Agyeman
a4e556e7e3 Add find_rects() using AprilTag's quad detector.
It's awesome.
2017-07-13 01:25:23 -04:00
iabdalkader
aa2bd8a4e2 Add array insertion sort. 2017-07-11 23:48:49 +02:00
iabdalkader
ef3b058842 Minor fix to Haar loading from path.
* Won't need slash anymore.
2017-07-11 23:47:19 +02:00
iabdalkader
652ae88a65 Use ff_wrapper to load Haar cascades.
* Fixes unaligned reads warnings.
2017-07-11 23:37:24 +02:00
iabdalkader
200ffeed58 Add LeNet! 2017-07-11 04:10:40 +02:00
iabdalkader
109e403f7a Fix ORB sorting.
* Using pointers to make the sort stable doesn't work. Each keypoint is allocated individually.
2017-07-08 03:56:25 +02:00
iabdalkader
37b2fc0b31 Make ORB keypoints sort function stable. 2017-07-07 04:13:57 +02:00
iabdalkader
1fea5ac78c Fix ORB bug.
* Clear matched flag when loading descriptor.
2017-07-06 21:41:02 +02:00
Kwabena W. Agyeman
089577173c Improve find lines merging. 2017-07-04 18:23:26 -04:00
Kwabena W. Agyeman
1ed867e39f Fix memory leak with get_regression. 2017-07-04 14:21:11 -04:00
Kwabena W. Agyeman
5f4e690fa1 Add find circles.
Now you can find circles with your OpenMV Cam! The alrogithm can eek out
about 7 FPS on a 160x120 image which is quite impressive given how
computationally expensive circle finding is...
2017-07-04 14:09:21 -04:00
Kwabena W. Agyeman
48f1e0bada Fixed blob issues.
* Angle averaging done correctly using sin/cos now.
* Unspecfied color bounds default to least restrictive instead of most
restrictive.
2017-07-03 13:05:57 -04:00
Kwabena W. Agyeman
cd4ad0dff3 Add linear regression
For easy line following mainly. In non-robust mode the line is computed
using least squares. In robust mode the line is computed using the
Theil-Sen median of slopes method. We do not use the Siegel Median of
Medians operation because it costs more CPU time... but, more
importantly there's no way to improve the centroid estimate so even if
the slope is more robust the line will be drawn in the wrong place.
2017-06-28 01:16:15 -04:00
iabdalkader
7d29104ed6 Add sensor.flush() 2017-06-25 16:48:17 +02:00
iabdalkader
99ec972ad0 Rename main_fb_image_size to fb_buffer_size(). 2017-06-24 23:29:41 +02:00
iabdalkader
062f86c60a Remove *_FB_SIZE macros. 2017-06-24 23:03:09 +02:00
iabdalkader
bfe1f02ffa Remove 4 bytes from FB_SIZE macros. 2017-06-24 22:58:37 +02:00
Kwabena W. Agyeman
c2c92c9f41 No requirement to size FB anymore. 2017-06-24 12:43:23 -04:00
Kwabena W. Agyeman
a02c2bad6c Fix main FB and JPEG FB size and pixels code. 2017-06-24 12:42:02 -04:00
Kwabena W. Agyeman
fffa3a691a Add function to get image size in bytes given the format. 2017-06-24 12:27:23 -04:00
iabdalkader
851b5306a7 Add IMAGE_BPP_BAYER. 2017-06-19 01:50:02 +02:00
Kwabena W. Agyeman
87d53385a6 Improve image load.
It now copies to the frame buffer and will error out if loading an image
that is too large.
2017-06-18 13:57:34 -04:00
Kwabena W. Agyeman
968574b1a5 Add corners to code objects. 2017-06-16 01:56:33 -04:00
Kwabena W. Agyeman
cfe7881dff Improve stream file format.
All chunks are multiples of 16 bytes. Don't want to run into issues with
long alignment now or in the future.
2017-06-12 01:43:57 -04:00
Kwabena W. Agyeman
dc6ab59cfd Add Image Writer/Reader
These two new classes allow you to record image data for later viewing
at the same speed the image data was recorded. Unlike GIF/MJPEG the
image data is stored on the file system completely uncompressed in
native frame buffer format making super fast reading and writing
possible. Recording VGA Grayscale at ~13 FPS is possible along with
playing it back. (That's about 30 Mb/s folks).

...

The motivation for writing these scripts is so that you can record video
of something like a line following track, take that video home, and work
on computer vision algorithms for that data.

These classes should make it a lot easier to use the camera at home now.
2017-06-11 15:53:43 -04:00
Kwabena W. Agyeman
7ec990223f Apply requested fixes. 2017-06-11 13:47:44 -04:00
Kwabena W. Agyeman
f9e124f8cd Refactor framebuffer
Moved structs along with image copying code from sensor into
framebuffer.c so that we can use the new copy_fb_to_jpeg_fb() function
in the image library for methods with "copy_to_fb" so that they update
the IDE preview when called.

Also, I noticed that the MAIN_FB_SIZE() value is not calculated
correctly in all cases. Will fix later. Trying to keep this commit clean
for just the refactoring.

All changes have been tested. Too.
2017-06-10 23:31:42 -04:00
iabdalkader
c8d7a4188f Update built-in README. 2017-06-09 01:00:06 +02:00
iabdalkader
5887129a0a Remove inf file from fresh FS. 2017-06-09 00:30:13 +02:00
iabdalkader
6850a53bf9 Enable RTC. 2017-06-07 22:59:54 +02:00
iabdalkader
4af10aaa2e Fix RTC init. 2017-06-07 22:59:42 +02:00
iabdalkader
a5b25bd5b7 Increase UART char timeout.
* Fix issue #240
2017-06-07 21:26:34 +02:00
Kwabena W. Agyeman
343c4b9092 Add sensor width and height.
Should have added this a long time ago.
2017-06-04 21:49:07 -04:00
iabdalkader
63c3ee85c2 Bump firmware version. 2017-06-04 20:52:02 +02:00
iabdalkader
e287b39968 Fix FW version. 2017-06-04 20:46:24 +02:00
iabdalkader
8cfa8f8b90 Apply SCSI layer fix from MP upstream.
* Fix #236
2017-06-04 20:04:39 +02:00
Kwabena W. Agyeman
744a2d7b04 Upstream Kanji fix. 2017-06-03 15:09:42 -04:00
iabdalkader
9091bc6ba0 Update binary ops docs. 2017-06-03 20:52:49 +02:00
Kwabena W. Agyeman
d853e43cd6 Fixed binary and/or naming. 2017-06-03 14:27:19 -04:00
iabdalkader
2232d78586 Bump firmware version. 2017-05-30 01:26:07 +02:00
iabdalkader
f85540b716 Reset the FPS clock every 2s. 2017-05-30 01:03:15 +02:00
iabdalkader
0666d0a465 Update MP docs. 2017-05-29 21:31:03 +02:00
Kwabena W. Agyeman
2557070422 Fix error with compress_for_ide()
Forgot to add size of start and end markers.
2017-05-28 23:07:11 -04:00
Kwabena W. Agyeman
a039b5d1c7 Change skip_frames() to use a 2 second timeout.
This was necessary due to the increase in the frame rate. The previous
method did not correlate to time.

All scripts updated.
2017-05-27 19:31:41 -04:00
Kwabena W. Agyeman
e9e48d5028 Update QRCode
Fixed issues with QRCode method in response to user reqeust on the
forums: http://forums.openmv.io/viewtopic.php?
f=6&t=286&p=1799&hilit=qrcode#p1799.
2017-05-27 16:21:10 -04:00
Kwabena W. Agyeman
4d6612609e Add more resolution combinations.
With the new frame rate speed increase folks will be asking for smaller
resolutions to get 85 FPS or so when running an algorithm. This commit
adds all scaled modes of frame sizes we already support. We should be
good now on frame sizes for the present and future now.

Todo - skip frames does not run long enough anymore for auto white
balance and gain to stablize before they are turned off in some scripts.
This needs to be adjusted.
2017-05-26 20:09:59 -04:00
iabdalkader
df1bdc65b8 Fix recvfrom return. 2017-05-26 20:29:23 +02:00
iabdalkader
e960546b6b Add keypoints match object. 2017-05-22 19:48:15 +02:00
iabdalkader
1057dce2c9 Fix formatting. 2017-05-22 18:44:41 +02:00
iabdalkader
c59495d215 Call DCMI_VsyncExtiCallback from EXTI9_5 handler. 2017-05-21 22:29:26 +02:00
iabdalkader
8952962e3c Add function to set VSYNC I/O output pin. 2017-05-21 22:27:58 +02:00
iabdalkader
666ee15992 Enable VSYNC output on IO pin for synchronization. 2017-05-21 22:23:53 +02:00
iabdalkader
9d8c6701c0 Fix indent. 2017-05-18 01:53:43 +02:00
iabdalkader
d266332a7a Minor docs fixes. 2017-05-15 23:25:09 +02:00
iabdalkader
e35dbc2108 Lowering OMV2 sensor clock to work with the higher sensor PLL. 2017-05-13 23:04:19 +02:00
iabdalkader
6f4ea1567e Set SCCB clock to 100KHz. 2017-05-13 04:11:36 +02:00
iabdalkader
103bb27f83 Set sensor PLL to 6x and reduce extclk.
* OMV2-F4 extclk = 8MHz * 6 = 48MHz
* OMV3-F7 extclk = 9MHz * 6 = 54MHz
2017-05-13 04:10:04 +02:00
iabdalkader
832819eede Set sensor window to QVGA when res is <= VGA.
* This reduces the readout time allowing to cam to capture more (miss less) frames.
2017-05-13 04:08:33 +02:00
iabdalkader
520537f7b3 Add set resolution macro. 2017-05-13 03:30:13 +02:00
iabdalkader
435644e63f Add find_lines docs 2017-05-11 13:53:09 +02:00
Kwabena W. Agyeman
f4a9c61544 Add find_line_segments
The OpenMV Cam can now infinite lines and line segments from those
infinite lines. find_lines has been updated to allow all this to work.
2017-05-10 21:40:22 -04:00
iabdalkader
dbda114663 Optimize Canny edge detector.
* Use separable convolution.
* Merge thresholding and non-max suppression steps.
2017-05-08 05:02:56 +02:00
iabdalkader
d80196002d Compile additional features only when enabled.
* This fixes "unused" errors with newer toolchains.
2017-05-07 03:39:15 +02:00
Kwabena W. Agyeman
31b7b5bf3e Improved find_lines
Frame rate now can hit 30 FPS when JPEG compression is off. Merging of
lines is perfected too which greatly reduces the noise output. Also,
lines are now objects so you can get their values in an easy way.
2017-05-06 14:31:20 -04:00
iabdalkader
b1196d5f8b Update MP docs 2017-05-01 03:50:58 +02:00
Kwabena W. Agyeman
284a505865 Add ID string to arch output. 2017-04-30 20:09:00 -04:00
Kwabena W. Agyeman
dc599e40eb Improved subscr and get_buffer
In response to PR https://github.com/openmv/openmv/pull/221.

You can now read and write slices of data to and image at a time.
2017-04-29 19:27:13 -04:00
Kwabena W. Agyeman
690ec923ae Add data matrix support.
Add support for decoding data matrices and example scripts.
2017-04-28 19:58:19 -04:00
Ibrahim Abd Elkader
7204a35758 Revert "Add image.raw() function." 2017-04-28 18:01:11 +02:00
skaiu
b64c744f2f Add image.raw() function. 2017-04-28 21:51:31 +08:00
Kwabena W. Agyeman
08b36f2b21 Fix typos. 2017-04-27 00:44:28 -04:00
Kwabena W. Agyeman
aa5131467e Fix UMM_Refactor Issues.
Memory allocation will grow organically now when more RAM is available.
2017-04-27 00:15:16 -04:00
Kwabena W. Agyeman
35e9f988d6 Refactor umm_malloc into it's own file.
We now have a nice and fast malloc system that easily offers 300KB+
dynamic memory... No need to use xalloc anymore except when we're
transfering objects to MP memory space.
2017-04-26 22:48:52 -04:00
Kwabena W. Agyeman
16d711ad5d Pull in upstream quirc fixes from github. 2017-04-25 21:17:12 -04:00
iabdalkader
2c4ec23244 Fix gcc2016q4 warnings.
* Fixed misleading indentation.
* Removed unused static variables.
* Disabled strict aliasing for STM DSP library.
2017-04-23 20:40:07 +02:00
iabdalkader
1fd9bf9251 Enable UART1 for OPENMV3 2017-04-23 20:32:44 +02:00
iabdalkader
6e2ba0e300 Bump firmware version. 2017-03-26 22:25:23 +02:00
iabdalkader
cab69cc64d Reverting last commit.
* Using parentheses for the logical test.
2017-03-26 21:48:59 +02:00
iabdalkader
e29d7769e6 Fix logical test error in zbar. 2017-03-26 21:41:42 +02:00
iabdalkader
3fd7c15094 Update docs. 2017-03-25 23:38:32 +02:00
Ibrahim Abd Elkader
6614d2380c Merge pull request #203 from kwagyeman/master
Image Streaming Code
2017-03-25 18:54:43 +02:00
Kwabena W. Agyeman
55e4809ff6 Image Streaming Code
The user can now call compressed_for_ide() and compress_for_ide() on an
image to make a jpeg compressed image formatted for transmission over a
data link other than USB. Note that OpenMV IDE will automatically handle
one of these compressed images ending up in the frame buffer and display
it like normal.

To send the image data the user can do:

print(img.compress_for_ide(), end='')
print(img.compressed_for_ide(), end='')
uart.write(img.compress_for_ide())
uart.write(img.compressed_for_ide())

and etc. As mentioned above, compress() compresses the image in place.
And that in place compressed image will then end up in the jpeg buffer.
OpenMV IDE will automatically handling decoding these special compressed
images when this happens.

All variations of the above code have been tested and are working.
2017-03-25 12:47:23 -04:00
Kwabena W. Agyeman
bfd048e6f3 Integrate ZBar 2/2
ZBar functionality integrated along with an example script.
2017-03-24 12:45:27 -04:00
Kwabena W. Agyeman
dab290675f ZBar Integration Part 1/2.
Main ZBar code, breaking the commit up because the main file is big.

I will refeactor UMM alloc out of apriltag.c and zbar.c once I'm
finished with this commit stream.

ZBar integration gives us support for basically all 1D linear barcodes.
2017-03-24 11:59:10 -04:00
Kwabena W. Agyeman
c6009ae05d Fixed apriltags z translation. 2017-03-21 21:01:52 -04:00
iabdalkader
fb3582b440 Remove old MAX_INT_FRAME. 2017-03-16 20:34:04 +02:00
iabdalkader
669e9ad072 Removed unused JPEG_OFFS_SIZE. 2017-03-12 19:28:14 +02:00
iabdalkader
15d6b96bed Fix py_image_get_buffer to support writing BAYER. 2017-03-12 19:25:48 +02:00
iabdalkader
4502256e19 Fix py_image assertion message. 2017-03-12 19:19:00 +02:00
iabdalkader
11abb5221b Fix framebuffer size checks.
* Delay the FB size check and corrections to snapshot(). If the frame doesn't
  fit FB it gets cropped for GS, or the sensor is switched to bayer for RGB.
2017-03-12 19:07:26 +02:00
iabdalkader
b0ed5bb7af Add Bayer sensor support. 2017-03-12 03:38:26 +02:00
iabdalkader
5615a25745 Add Bayer support in OV7725 driver. 2017-03-12 03:33:33 +02:00
iabdalkader
d330486758 Add Bayer JPEG support. 2017-03-12 03:32:20 +02:00
iabdalkader
b94182dce4 Add new RAW/BAYER pixel format to support 2BPP VGA. 2017-03-12 03:29:49 +02:00
iabdalkader
002c2894aa Add IM_GET_RAW_PIXEL 2017-03-12 02:36:52 +02:00
iabdalkader
fbc30e9736 Add missing ksize. 2017-03-09 22:46:03 +02:00
iabdalkader
e5aa66cd12 Use sep conv in ORB. 2017-03-09 22:43:24 +02:00
iabdalkader
ea7b87e866 Add separable convolution. 2017-03-09 22:43:05 +02:00
iabdalkader
040a3cb0e4 Use separable gaussian kernels. 2017-03-09 22:41:37 +02:00
iabdalkader
a4561c7efa WINC: Add support for AP mode. 2017-03-09 20:39:53 +02:00
iabdalkader
32dded64fd Use faster SPI GPIO. 2017-03-09 20:23:13 +02:00
iabdalkader
8c0e1603eb Redefine log level when CONF_WINC_DEBUG is enabled. 2017-03-09 20:22:00 +02:00
iabdalkader
096361c711 Remove headers from mp.h 2017-03-09 03:47:24 +02:00