【RT-Thread作品秀】寫字機器人
作者:喬城陽
概述(說明應(yīng)用產(chǎn)生的背景、實現(xiàn)功能)
寫字機器人在實際生產(chǎn)線上由于效率趕不上打印機,應(yīng)用不是很廣,然而由于其結(jié)構(gòu)簡單,成本低,并且符合人手寫風(fēng)格,在學(xué)習(xí)階段很有價值。寫字機器人設(shè)計上包含了路徑規(guī)劃、直線插補、加減速控制等常用電機運動控制算法,在軟件上也會用到DXF文件解析、openCV圖像處理等G代碼生成工具,對后期深入研究激光切割機、雕刻機、3D打印機等大型設(shè)備有很好的鋪墊作用。因此我的作品以寫字機器人為題目分享我的制作過程和學(xué)習(xí)體驗,希望對各位小伙伴的學(xué)習(xí)有所幫助。
開發(fā)環(huán)境(所采用的軟、硬件方案)
硬件:ART-PI、arduino、TM4C123GXL
RT-Thread版本:3.14
開發(fā)工具及版本:MDK-ARM5.31、VSCode
RT-Thread使用情況概述(簡要總結(jié)下應(yīng)用中RT-Thread使用情況:內(nèi)核部分、組件部分、軟件包部分、內(nèi)核、其他)
內(nèi)核部分:線程調(diào)度,資源分配、同步通信、設(shè)備驅(qū)動框架
組件:DFS文件系統(tǒng)、UART串行異步通信、CAN通信
其他:UDP通信、cJSON編解碼
硬件框架(概述應(yīng)用所采用的硬件方案框圖,并對核心部分做介紹)
軟件框架說明(介紹應(yīng)用所采用的軟件方案框圖、流程圖等,并加以解說)
在寫字機器人設(shè)計上我將其分為三個部分:
圖像處理模塊 |
運動控制模塊 |
G代碼生成模塊 |
圖像處理模塊負(fù)責(zé)把文本圖像和照片等圖像文件做預(yù)處理,去除雜點,然后以合適的算法將圖像二值化,突現(xiàn)主要信息,然后提取輪廓骨架以適合機器書寫。
G代碼生成模塊將圖像輪廓序列化后進行路徑規(guī)劃,選取一個適合的加工精度,然后按數(shù)控加工常用的G代碼規(guī)范生成NC加工文件。另外對于標(biāo)準(zhǔn)的DXF文件則通過文件解析的方法生成G代碼。
運動控制模塊是寫字機器人中最雜的一個模塊,負(fù)責(zé)各個運動機構(gòu)的精準(zhǔn)快速移動。收到G代碼指令后需要結(jié)合前后指令信息生成當(dāng)前指令的合適初速度、最大運行速度,根據(jù)運動軌跡進行直線插補點,最后按SPTA梯形加減速算法向電機發(fā)出脈沖。
軟件模塊說明(介紹應(yīng)用軟件關(guān)鍵部分的邏輯、采用的實現(xiàn)方式等)
Grbl是一種高性能低成本的開源CNC控制器,基于ATmega328型芯片輸出高速精準(zhǔn)的電機控制脈沖,完美支持各種標(biāo)準(zhǔn)G代碼,并包含了完整的前瞻性加速控制,可以實現(xiàn)平穩(wěn)的加速和無沖擊的轉(zhuǎn)彎動作。
正是由于grbl的前瞻性速度控制功能,所以要保證grbl控制器內(nèi)一直保持著16-20個G代碼指令。這需要ART-PI通過讀取grbl控制器緩沖區(qū)狀態(tài),及時發(fā)送G代碼指令,避免出現(xiàn)緩沖溢出和緩沖區(qū)為空等現(xiàn)象出現(xiàn)。
因此需要運行RT-thread實時操作系統(tǒng),通讀讀取SD卡上的NC文件,并與grbl控制器通信,控制設(shè)備正常運行。另外RT-thread也可提供豐富的人機交互功能,將設(shè)備工作路徑、進度等狀態(tài)實時顯示在屏幕上,也可以增加暫停續(xù)寫等功能。
演示效果(演示效果請采用3張高清圖片,并錄制一段不少于1min視頻解說應(yīng)用所實現(xiàn)的效果,視頻上傳至B站或者騰訊視頻或其他視頻平臺,給出鏈接即可)
演示視頻
比賽感悟
同樣是C代碼,為什么別人寫得那么好,這次比賽用到兩個開源軟件,一個是RT-thread,負(fù)責(zé)人機交互和發(fā)送控制指令,另一個是grbl,用來完成運動控制。兩款軟件都設(shè)計的非常精巧,只需在2kB大小的RAM上運行,而功能卻又非常強大,實現(xiàn)了很多復(fù)雜的功能,所有的代碼封裝的很好,模塊啟用只需打開對應(yīng)的宏定義即可。這次專門去圖書館借閱了RTT相關(guān)的圖書,了解線程是如何調(diào)度,設(shè)備驅(qū)動應(yīng)該怎么實現(xiàn),但是內(nèi)部還是有很多內(nèi)容不理解,后期需要繼續(xù)不斷充實自己。運動控制一直是我的興趣所在,這次也終于有機會把它實現(xiàn),看著電機在一行行指令的控制下乖乖地轉(zhuǎn)動,聽著不斷變化著頻率的電機聲音,真正體會到了伺服servo的含義,非常開心~