v2.7.0¶
v2.7.0 hiện đại hóa API độ khuếch đại tự động / thời gian phơi sáng tự động / cân bằng trắng của sensor sang đơn vị vật lý (dB / micro giây), cải tiến toàn diện tương quan pha find_displacement() (thêm xoay/tỷ lệ), và bổ sung get_similarity() (SSIM), chrominvar() / illuminvar(), bộ đệm khung hình bổ sung, và thư viện MQTT. Đây là bản phát hành gây lỗi lớn — hãy đọc các thay đổi gây lỗi bên dưới.
Điểm nổi bật¶
API cảm biến hiện đại —
set_auto_gain()/set_auto_exposure()/set_auto_whitebal()nay sử dụng dB / micro giây, với các hàm tương ứngget_gain_db()/get_exposure_us()/get_rgb_gain_db().Tương quan pha — cải tiến
find_displacement()với xoay / tỷ lệ vàfind_rotscale()/linpolar()/logpolar().SSIM —
image.get_similarity()đo độ tương đồng cấu trúc.Bộ đệm khung hình bổ sung —
sensor.alloc_extra_fb()/dealloc_extra_fb().MQTT — một thư viện MQTT mới.
Thay đổi gây lỗi: API độ khuếch đại/thời gian phơi sáng/cân bằng trắng của cảm biến,
find_displacement()/ kích thước khung hình FFT,find_number(), công cụ firmware WINC, vàz_rotation()của AprilTag đều đã thay đổi — xem các thay đổi gây lỗi.
Tính năng mới¶
Cảm biến — đã thêm
sensor.get_gain_db(),sensor.get_exposure_us(),sensor.get_rgb_gain_db(), từ khóagain_db_ceilingtrênset_auto_gain(), hỗ trợhmirror/vflipcho MT9V034, vàsensor.alloc_extra_fb()/sensor.dealloc_extra_fb()cho bộ đệm khung hình bổ sung trong RAM.Ảnh — đã thêm
remove_shadows(),min()/max()(so sánh khung hình),get_similarity()(SSIM) với ví dụ về độ tương đồng cấu trúc,chrominvar()/illuminvar(),find_rotscale(),linpolar()/logpolar(), các từ khóa threshold / offset / invert trên các bộ lọc thích ứngmean()/mode()/median()/midpoint(),len()/ lập chỉ mục trên đối tượng điểm đặc trưng, và bộ truy cập.match()trên đối tượng khớp điểm đặc trưng.Thư viện / mạng — đã thêm thư viện MQTT (với ví dụ WiFi MQTT) và chế độ
network.WINC.MODE_BSPđể lập trình firmware WINC qua UART gỡ lỗi.Ví dụ — đã thêm các tập lệnh tiêu thụ điện thấp
deep_sleep.py/stop_mode.py, dòng quang học nâng cao, và ví dụ về tọa độ cực tuyến tính/log; firmware nay phân tíchuart.inikhi khởi động để kích hoạt REPL UART.
Các thay đổi và cải tiến khác¶
get_regression()đã được bổ sung các từ khóaarea_threshold/pixels_thresholdvà hồi quy mạnh mẽ nhanh hơn (cho line-following / racing);get_pixel()nay hỗ trợ ảnh Bayer; đã thêm nền tảng STM32H7 (header CMSIS / HAL / bootloader — bo mạch H7 chưa sử dụng được); cập nhật firmware WINC1500 kèm theo (19.4.4 / 19.5.2).
Sửa lỗi¶
Hình ảnh:
Đã sửa lỗi truy cập ngoài biên trong tìm kiếm diamond của
find_template(), lỗi gây hỏnglogpolar/linpolar, vàilluminvar()hoạt động sai với các giá trị màu gần không.
Cảm biến và hệ thống:
Đã sửa các lỗi kiểm soát độ khuếch đại tự động, khôi phục kích thước
MAIN_FBtrênsnapshot()(đểcopy_to_fbở độ phân giải khác, thay đổi kích thước FB, và gộp dòng quang học hoạt động lại), thời gian chờgethostbynamecủa WINC, lệnhpydfuclear-status trên bootloader H7, và các chế độ tiết kiệm điện stop/standby.
Phần cứng và hỗ trợ bo mạch¶
STM32H7 — nền tảng (CMSIS / HAL / bootloader); bo mạch OpenMV H7 chưa sử dụng được trong bản phát hành này.
WINC1500 — cập nhật firmware kèm theo.
Các thay đổi API gây lỗi¶
Các thay đổi API hiển thị với người dùng giữa v2.6.0 và v2.7.0. Phạm vi: C-module Python trong modules/ và thư viện Python trong scripts/libraries/.
Mỗi thay đổi được gắn thẻ theo mức độ ảnh hưởng:
major — ảnh hưởng đến hầu hết các tập lệnh sử dụng tính năng này; bạn cần chỉnh sửa mã.
minor — API hẹp; chỉ ảnh hưởng đến các tập lệnh sử dụng nó.
behavior — cùng API, kết quả khác; hãy kiểm tra lại các tập lệnh đã được tinh chỉnh.
Các thay đổi được nhóm theo mức độ ảnh hưởng theo thứ tự đó. Nếu bạn chỉ muốn chuyển đổi mã của mình, hãy chuyển đến danh sách kiểm tra di chuyển ở cuối. Mỗi hash commit liên kết đến diff của nó trên GitHub.
sensor.set_auto_gain() cải tiến sang dB (major)¶
sensor.set_auto_gain() không còn chấp nhận từ khóa số nguyên value= và không còn trả về True / False. Hãy sử dụng sensor.set_auto_gain(False, gain_db=...) (giá trị dB kiểu float), đọc lại bằng sensor.get_gain_db() mới, và bọc lệnh gọi trong try / except vì lỗi nay phát sinh ValueError.
Commits: b906c5f19
sensor.set_auto_exposure() cải tiến sang micro giây (major)¶
sensor.set_auto_exposure() không còn chấp nhận từ khóa số nguyên value= và không còn trả về True / False. Hãy sử dụng sensor.set_auto_exposure(False, exposure_us=...), đọc lại bằng sensor.get_exposure_us() mới, và xử lý ValueError phát sinh khi thất bại.
Commits: 7be0a7a18
find_displacement() / kích thước khung hình FFT được cải tiến toàn diện (major)¶
Tương quan pha đã được cải tiến toàn diện. image.find_displacement() nay trả về đối tượng displacement (với x_translation() / y_translation() — trước đây là x_offset / y_offset — cùng rotation() / scale() và các từ khóa mới logpolar / fix_rotation_scale); đối tượng rot-scale riêng đã bị xóa và find_rotscale() được thêm vào. Các hằng số kích thước khung hình FFT đã được đổi tên/xóa: sensor.B40x30 đã bị xóa hoàn toàn, và sensor.B64x32 / B64x64 được đổi tên thành chữ hoa sensor.B64X32 / B64X64 (cùng với các hằng số mới B128X64 / B128X128).
sensor.set_auto_whitebal() cải tiến sang dB (minor)¶
sensor.set_auto_whitebal() đã thay thế từ khóa số nguyên value=[r, g, b] bằng rgb_gain_db=[r, g, b] (dB kiểu float) và nay trả về None (phát sinh ValueError khi thất bại) thay vì True / False. Hãy sử dụng sensor.get_rgb_gain_db() mới để đọc lại các giá trị độ khuếch đại.
Commits: 30ecbdc4f
set_hmirror() / set_vflip() trả về None (minor)¶
sensor.set_hmirror() và sensor.set_vflip() nay trả về None và phát sinh ValueError khi thất bại thay vì trả về trạng thái True / False. Hãy xóa bất kỳ mã nào rẽ nhánh dựa trên giá trị trả về của chúng.
Commits: aeb023804
Công cụ firmware WINC yêu cầu đường dẫn tệp (minor)¶
Công cụ firmware network.WINC đã thay đổi: wlan.fw_dump() / wlan.fw_update() nay nhận đối số đường dẫn tệp firmware bắt buộc và WINC được mở ở chế độ lập trình (network.WINC(mode=...)). Hãy cập nhật các lệnh gọi không có đối số để truyền đường dẫn (ví dụ: wlan.fw_update("/winc_19_5_2.bin")).
Commits: fcc3b0b9c
image.find_number() yêu cầu ROI 28x28 (behavior)¶
image.find_number() (LeNet) nay yêu cầu ROI chính xác 28x28 nằm trong ảnh và phát sinh lỗi nếu không (thay vì chạy trên ROI tùy ý/toàn ảnh). Hãy truyền roi=(x, y, 28, 28) tường minh.
Commits: 4d09a13f3
Dấu z_rotation() của AprilTag bị đảo (behavior)¶
z_rotation() (và rotation() liên quan) của AprilTag nay sử dụng quy ước tọa độ thuận tay phải, do đó góc trả về bị đảo dấu so với các bản phát hành trước. Các tập lệnh phụ thuộc vào dấu cũ phải đảo ngược giá trị hoặc điều chỉnh phép tính góc.
Commits: 7673aaf74
Danh sách kiểm tra di chuyển¶
Để chuyển đổi sạch sang v2.7.0, công việc điển hình là:
Chuyển đổi
set_auto_gain()sanggain_db=+get_gain_db()và xử lýValueError(cải tiến auto-gain).Chuyển đổi
set_auto_exposure()sangexposure_us=+get_exposure_us()(cải tiến auto-exposure).Cập nhật
find_displacement()sang đối tượng displacement và đổi tên các hằng số kích thước khung hình FFT (cải tiến toàn diện find_displacement).Chuyển đổi
set_auto_whitebal()sangrgb_gain_db=+get_rgb_gain_db()(cải tiến cân bằng trắng) và dừng kiểm tra giá trị trả về củaset_hmirror()/set_vflip()(thay đổi mirror/flip).Truyền đường dẫn firmware cho công cụ WINC
fw_*(thay đổi công cụ WINC).Truyền
roi28x28 chofind_number()(thay đổi find_number) và điều chỉnh phép tính góc AprilTag cho dấuz_rotation()bị đảo (thay đổi z_rotation).
Tất cả các tập lệnh khác chạy không thay đổi.