LEGO-EV3-影像掃描儀
使用樂高 Mindstorms EV3 教育套裝和額外的輪子來建造影像掃描器。包括 Mindstorms EV3 軟體的原始碼和建置說明。掃描 8.5 英吋寬的紙張,但可以適應類似的頁面尺寸。
輸入
- 磚塊按鈕 – 控製配置選單
- 超音波 – 偵測紙張何時插入
- 觸控感應器 – 透過碰撞重置顏色感應器位置
- 光感應器 – 掃描像素以建立影像
輸出
- 44 x 32 像素 8 位元灰階影像
- 代表灰階 8 位元位圖資料值的 CSV 文件
- 螢幕上的抖動影像
部分
此構建需要來自一套樂高 MINDSTORMS EV3 套裝的零件和一個額外的大輪,該輪子可以從另一套相同套裝或汽車套裝中獲得。
構建和傳感器詳細信息
- 機器人採用兩種力齒輪配置,一種透過單軌在水平軸上移動光感測器,第二種為包含要掃描的影像的紙張提供捲軸機構。
- 繞線機構和單軌均使用大型馬達。
- 配重用於使單軌車輪與單軌表面施加的法向力對齊。
- 捲軸附近有一個紅外線感測器,可以偵測紙張何時插入。
- 兩個觸控感應器放置在掃描器的每個角落。它們用於檢測單軌列車何時到達角落。目前僅使用右側的感測器。
軟體註釋
程式由四個階段組成:UI、掃描、列印影像、保存影像。 UI 的建置採用了 MVC 範式以適應順序區塊程式設計。它允許 n 個配置螢幕,每個螢幕配置一個值。程式中稍後使用的變數對應於每個設定。
配置螢幕
- uiPrintScreen : bool – 如果為 true,則會在 EV3 的螢幕上列印抖動的 1 位元影像,以類似於 RAM 中的灰階影像。
- uiSaveState : bool – 如果為 true,將從 RAM 中的資料產生 CSV 檔案。該文件類似於位圖文件,可以使用 A-VEKT Image CSV Converter 等外部程式轉換為點陣圖。
- XStartPos :數字 – 指示 X 軸上的起始位置(以英吋為單位)。
- YStartPos :數字 – 指示 Y 軸上的起始位置(以英吋為單位)。
- width : numeric – 表示影像的寬度(以英吋為單位)。
- height : numeric – 表示影像的高度(以英吋為單位)。
掃描階段
- 掃描前,系統會提示使用者插入待掃描的紙張,並將光感應器的位置重設為初始位置。
- 掃描包括在單軌上移動影像感測器以及在捲軸上移動紙張,以建立獨立掃描點的矩陣。
- 掃描時,一行從右向左掃描,下一行則從左向右掃描。這減少了掃描時間。
- 掃描完成後,剩餘的紙張將從掃描器背面捲起。
列印階段
- 此階段是可選的並且預設為啟用。它包括在螢幕上列印圖像。
- 掃描的影像包含灰階數據,但 EV3 的螢幕為 1 位元黑白。為了補償,每個掃描像素都使用有序(拜耳)抖動轉換為 4 x 4 像素圖案,然後列印在螢幕上。
保存階段
- 此階段是可選的。
- 由於 EV3 的檔案區塊僅限於保存可列印字符,因此無法以程式設計方式產生點陣圖影像。相反,使用 CSV 檔案。
- 可使用具有 8 位元 Alpha 通道設定的「A-VEKT Image CSV Converter」將 CSV 轉換為點陣圖。
- 建立 CSV 時,反向掃描的行將在第二個陣列中重新排序。
改進
- 使用第二組可以提高掃描器精度,該組可用於建立雙軌 x 軸而不是單軌。
- 由於電纜施加的力,單軌有時不穩定,這會導致在捕獲某些像素時發生焦點變化。
- 該軟體可以改進。我按照我停止工作時的樣子發布它。
- 在樂高發布適用於 Linux 作業系統的 LEGO MINDSTORMS EV3 版本或我找到另一個令人信服的理由購買我自己的 Mindstorms EV3 套件之前,我沒有計劃繼續開發該專案。
許可和版權
- 原始檔在 GNU 通用公共授權 2.0 下共用
- 說明圖片和附加內容是根據 Creative Commons License Attribution 4.0 International 分享
- 版權由波多黎各大學阿雷西博分校和我自己共享。
免責聲明
- 我開發這個是為了好玩,作為波多黎各大學阿雷西博分校機器人入門課程的一部分。
- 掃描器大致基於「非官方樂高 MINDSTORMS NXT 2.0 發明家指南」中的印表機。
- LEGO、MINDSTORMS、MINDSTORMS EV3、MINDSTORMS NXT 是樂高集團的商標和/或版權。使用它們並不意味著與它們有任何隸屬關係或得到它們的認可。