張紀寬,彭力,陳志勇
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,無錫 214122)
張紀寬,彭力,陳志勇
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,無錫 214122)
摘要:智能監(jiān)控系統(tǒng)的快速發(fā)展對云臺控制精度要求不斷提高,由此設(shè)計并實現(xiàn)了一款雙軸監(jiān)控云臺精準控制系統(tǒng)。本系統(tǒng)利用USART串口接收標準數(shù)控程序指令G代碼,通過移植CNC雕刻機運動控制器GRBL到云臺控制器STM32F103RBT6中控制兩臺步進電機協(xié)同工作,實現(xiàn)云臺精準控制。將數(shù)控機床中精準的直線插補和弧形、圓形運動功能運用到監(jiān)控云臺中,提高控制精度,實現(xiàn)云臺快速響應(yīng)和平穩(wěn)加速以及無沖擊的轉(zhuǎn)彎。本系統(tǒng)在智能家居、區(qū)域安防等智能監(jiān)控領(lǐng)域有很好的實用價值,適合現(xiàn)代視頻監(jiān)控領(lǐng)域的發(fā)展要求。
關(guān)鍵詞:監(jiān)控云臺;雙軸控制;GRBL;STM32F103RBT6;G代碼
引言
為了擴大攝像機的搜索范圍,減少同一區(qū)域布防攝像機的個數(shù),通常使用帶有云臺的攝像機,監(jiān)控人員可通過遠程客戶端控制云臺轉(zhuǎn)動,擴大監(jiān)控范圍,滿足對監(jiān)控固定目標實現(xiàn)快速定位及對大范圍環(huán)境監(jiān)測的要求[1]。隨著計算機視覺的發(fā)展,智能視頻監(jiān)控技術(shù)成為當前的研究熱點[2],通過圖像、視頻處理等技術(shù)可自動實現(xiàn)運動目標檢測、跟蹤[3],因此手動、低精度、單軸的云臺控制方式已不能滿足當今智能視頻監(jiān)控的需求。針對上述問題,本文基于STM32微控制器設(shè)計并實現(xiàn)了一款雙軸監(jiān)控云臺精準控制系統(tǒng)。與參考文獻[4]結(jié)合,可實現(xiàn)完整的智能監(jiān)控系統(tǒng)前端設(shè)計。
1系統(tǒng)設(shè)計及工作原理
文中實現(xiàn)的系統(tǒng)采用STM32F103RBT6作為雙軸云臺控制器,通過串口接收智能監(jiān)控前端[4]發(fā)送的控制指令,控制指令也可通過典型的PELCO協(xié)議[5]攜帶。將開源CNC雕刻機控制器GRBL[6-7]移植到STM32控制器,通過對STM32 C語言軟件編程調(diào)用GRBL依次實現(xiàn)G代碼[6]解析,控制兩個定時器協(xié)同工作,最后通過STM32的I/O引腳輸出PWM電機控制脈沖給電機驅(qū)動,從而控制兩臺步進電機協(xié)同運行,實現(xiàn)監(jiān)控云臺的精準控制。系統(tǒng)整體結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)圖
2基于GRBL的雙軸云臺控制
GRBL是一款針對Arduino/AVR328單片機用于CNC 雕刻的嵌入式G代碼編譯和運動控制器。GRBL性能高、成本低,由C編寫并優(yōu)化,針對嵌入式芯片的靈巧特性實現(xiàn)精準時序和異步控制。它接受標準的G代碼,可以保持超過30 kHz的穩(wěn)定、無偏差的控制脈沖,完美支持弧形、圓形和螺旋形的運動,并且包含完整的前瞻性加速度控制,可提前16~20個運動來規(guī)劃速度,從而實現(xiàn)平穩(wěn)的加速和無沖擊的轉(zhuǎn)彎。為了實現(xiàn)云臺的精準控制,本系統(tǒng)移植GRBL中的G代碼解析、插補運動、脈沖控制等功能。GRBL軟件框架結(jié)構(gòu)圖如圖2所示。
圖2 GRBL軟件框架圖
protocol模塊接收串口命令并傳遞給gcode模塊,gcode模塊解析G代碼為運動控制命令并傳遞給motion_control模塊和spindle_control模塊(此模塊控制雕刻機中的主軸,在本系統(tǒng)中未使用),motion_control模塊給planner模塊和stepper模塊提供命令接口,planner模塊根據(jù)命令計算運動數(shù)據(jù)并將其寫入準備運動計劃(數(shù)據(jù)緩沖區(qū))中,stepper模塊則根據(jù)運動計劃控制兩個定時器協(xié)同工作,從而輸出脈沖控制兩臺步進電機運動。
2.1串口指令解析
該系統(tǒng)采用USART1作為通信串口,GRBL通過protocol模塊接收串口發(fā)送的用戶或者數(shù)據(jù)指令,例如發(fā)送指令“$”用來查詢GRBL支持的用戶命令。圖3(a)顯示的用戶指令可方便用戶完成想要的操作,例如發(fā)送“$$”用戶指令設(shè)置或查看使用的參數(shù),如圖3(b)所示。
圖3 串口打印圖
G代碼是數(shù)控機床中一門易于理解的程序語言,也被稱為G指令[6]。protocol模塊將攜帶數(shù)據(jù)指令的G代碼傳遞給gcode模塊,gcode模塊解析G代碼為運動控制命令,設(shè)置運行模式,保存運行數(shù)據(jù)到緩沖區(qū)供motion_control調(diào)用,串口指令解析過程的程序流程圖如圖4所示。
圖4 串口指令解析流程圖
2.2插補運動
指令①~③是3條常見的G指令,指令①是快速定位指令,運行軌跡如圖5(a)所示,X和Y軸同時同速運行到A點,然后X軸不動,Y軸運行到B點,進給速度為默認值,由圖3(b)可知進給速度為參數(shù)“$4”默認400 mm/min。指令②是直線插補指令,運行軌跡如圖5(b)所示,X和Y軸同時以不同速度運行到B點,以2 000 mm/min的進給速度運行且軌跡是一條直線。指令③是順時針圓弧插補指令,運行軌跡如圖5(c)所示,從0點開始,以I、J為弧線原點坐標(相對當前位置的坐標),以X、Y為終點坐標(絕對坐標),運行弧形軌跡。
圖5 G代碼運行軌跡圖
如圖5所示,直線插補運行模式下,監(jiān)控云臺運行距離最短,此模式適合快速跟蹤目標;快速定位模式適合從一個點運行到另一固定點的場所。三種模式的配合使用可實現(xiàn)單攝像機立體空間中任何不規(guī)則區(qū)域的監(jiān)控。
插補運動的實現(xiàn)原理如下:
① planner模塊從motion_control模塊獲得運動控制命令,然后計算運行所需要的數(shù)據(jù)并保存到數(shù)據(jù)緩沖區(qū)供stepper模塊使用。
② 分別計算X和Y軸需要運行的絕對步數(shù),如式(1)所示。steps_per_mm數(shù)組是圖4中初始化時的參數(shù)(代表每毫米需要運行多少步),position數(shù)組中存放著上一次循環(huán)時的步數(shù),兩者之差便是本次運動的絕對步數(shù)。
(1)
③ 計算本次運行向量的模d,如下式所示(單位為mm):
(2)
④ 計算沿此軌跡運動時的運行速度,如式(3)所示。feed_rate為進給速度,像指令②中指定進給速度時此參數(shù)便為指定值,若指令中未指定則為圖4中初始化默認值,單位為mm/min;rate是步速,每分鐘運行的步數(shù),單位為steps/min。
(3)
⑤ 在當前運行軌跡上的加速度如式(4)所示,單位為step/min/acceleration_tick。其中accelerate是圖4中初始化的加速度默認值(單位為mm/min2),ACC_TICKS_PER_SECOND為常量50。
(4)
計算這些參數(shù)是為了避免因電機的啟動停止造成漂移,影響運動精度,因此電機的運行速度呈梯形,根據(jù)中點法則,啟動時按照默認加速度緩慢加速,到達預(yù)定速度后勻速運行,停止時緩慢減速 ,速度-時間(v-t)圖如圖6所示。
圖6 運行速度-時間圖
2.3GRBL脈沖控制
GRBL通過stepper模塊獲取planner模塊計算的數(shù)據(jù),換算成定時器計數(shù)個數(shù),然后通過兩個定時器協(xié)同工作輸出步進脈沖,從而控制兩臺步進電機運行。第一個定時器負責(zé)控制輸出脈沖的周期,步進電機脈沖周期決定電機運行速度;第二個定時器控制每個脈沖周期中低電平的時間,對步進電機而言,脈沖占空比并不重要,重要的是脈沖周期,所以只要保證步進電機驅(qū)動能夠檢測到脈沖即可。本系統(tǒng)采用STM32微控制器的16位定時器TIM3和TIM4控制脈沖輸出,配合控制方式如圖7所示。
圖7 定時器脈沖控制圖
TIM4定時器裝入值如式(5)所示,因為TIM4定時器控制的是每個脈沖的低電平時間,為固定值。
T4=((pulse_microseconds-2)×
(5)
pulse_microseconds代表真正的延時時間,單位為μs,TICKS_PER_MICROSECOND代表每μs系統(tǒng)時鐘頻率,這里為72,右移3位是因為定時器為8分頻。
TIM3定時器寄存器裝入值如式(6)所示,因為TIM3定時器控制的是脈沖周期,決定了電機轉(zhuǎn)速,且每運行一單位距離,電機運行速度都以梯形變化,因此TIM3寄存器的裝入值為變值。
(6)
式(6)中分子代表定時器每分鐘跳動次數(shù),分母steps_per_minute代表電機運動速度(每分鐘需要多少脈沖),兩者之商就是每個脈沖定時器需要跳動的次數(shù),代表了每個脈沖的周期。
GRBL移植到STM32微控制器中,定時器控制脈沖輸出程序流程圖如圖8所示。
圖8 定時器控制脈沖程序流程圖
3硬件設(shè)計
該系統(tǒng)硬件電路簡單,只需要引出單個串口的微控制器最小系統(tǒng)、步進電機驅(qū)動模塊和兩臺步進電機三部分??刂破鞑捎靡夥ò雽?dǎo)體公司基于Cortex-M3內(nèi)核的32位增強型微控制器STM32F103RBT6,可工作在72 MHz頻率下,具有20 KB SRAM和128 KB FLASH,擁有3個普通16位定時器、1個16位高級定時器、3個USART串口以及51個通用I/O接口,在嵌入式產(chǎn)品中被廣泛應(yīng)用[7]。本系統(tǒng)使用到的I/O引腳與功能如表1所列。
表1 I/O引腳與功能
電機驅(qū)動采用信捷DP-308D-L細分步進電機驅(qū)動器,最大輸出直流電壓可達80 V,輸出電流為3.0 A,采用純正弦波電流控制技術(shù),適用于數(shù)控機床等控制精度要求較高的設(shè)備,采用集電極開路共陽極接法,接線圖略——編者注。
4系統(tǒng)測試
按照表1連接硬件,通過MDK軟件JTAG仿真器將程序燒錄到STM32中。先將串口通過USB轉(zhuǎn)串口線連接PC機,通過串口調(diào)試助手調(diào)試用戶命令,結(jié)果如圖3所示。再將串口與參考文獻[4]中嵌入式前端服務(wù)器DM365的控
制串口相連,通過上位機發(fā)送手動控制云臺命令,觀察到云臺能夠進行相應(yīng)的運動,通過上位機的自動跟蹤算法,使云臺能夠?qū)θ肭帜繕藢崟r跟蹤,效果圖如圖9所示。
圖9 云臺自動跟蹤效果圖
結(jié)語
本文設(shè)計并實現(xiàn)了一個雙軸監(jiān)控云臺精準控制器,移植CNC雕刻機的精準控制算法GRBL到STM32微控制器,通過串口接收標準的G指令,經(jīng)GRBL解析、計算后輸出精準控制脈沖給電機驅(qū)動,從而對兩臺步進電機實現(xiàn)精準控制,在智能監(jiān)控系統(tǒng)快速發(fā)展的時代,本方案具有很高的實用價值。
參考文獻
[1] 紀鋼,司洞洞,吳萍萍.基于反饋式可定位云臺控制系統(tǒng)設(shè)計與實現(xiàn)[J].計算機測量與控制,2015,23(5):1582-1585.
[2] 黃凱奇,陳曉棠,康運鋒,等.智能視頻監(jiān)控技術(shù)綜述[J].計算機學(xué)報,2015,38(6):1093-1118.
[3] 張建倉,楊哲輝,孫啟富.基于二自由度云臺的目標跟蹤系統(tǒng)設(shè)計[J].計算機測量與控制,2013,21(9):2579-2581.
[4] 張紀寬,彭力,陳志勇.基于嵌入式前端服務(wù)器的音視頻監(jiān)控系統(tǒng)設(shè)計[J].江南大學(xué)學(xué)報:自然科學(xué)版,2015,14(1):38-42.
[5] 楊軼龍,徐馳,翁麗娜,等.基于閉環(huán)控制的云臺通信協(xié)議設(shè)計[J].安防科技,2011(11):18-20.
[6] Javed M Y,Rizvi S T H,Saeed M A,et al.LOW COST COMPUTER NUMERIC CONTROLLER USING OPEN SOURCE SOFTWARE AND HARDWARE[J].Sci. Int. (Lahore),2015,27(5):4041-4045.
[7] 徐洋,馬躍.STM32F103系列微控制器在應(yīng)用編程技術(shù)研究[J].單片機與嵌入式系統(tǒng)應(yīng)用,2013,13(8):35-37.
張紀寬、陳志勇(碩士研究生),研究方向為網(wǎng)絡(luò)視頻傳輸應(yīng)用;彭力(教授),研究方向為視覺傳感器網(wǎng)絡(luò)、人工智能、計算機仿真。
Zhang Jikuan,Peng Li,Chen Zhiyong
(School of IoT,Jiangnan University,Wuxi 214122,China)
Abstract:The PTZ control accuracy requirement is increasing with the rapid development of intelligent monitoring system,thus a precision control system for double-axis monitoring PTZ is designed and implemented.The system uses the USART serial port to receive the standards-compliant G code,and PTZ control precision is achieved by transplanting GRBL into PTZ controller (STM32F103RBT6) to control two stepper motors working in coordination.In order to improve the control precision and achieve fast response,the smooth acceleration and non-impact turn of PTZ are achieved through applying the precise linear interpolation and arc or circular motion in NC machine tool to the monitoring PTZ.The system has good practical value in the field of intelligent monitoring,such as smart home,area safety defending,which is adapt to the development requirements of modern video surveillance.
Key words:monitoring PTZ;double-axis control;GRBL;STM32F103RBT6;G code
* 基金項目:江蘇省產(chǎn)學(xué)研聯(lián)合創(chuàng)新資金-前瞻性聯(lián)合研究項目(BY2014023-25)。
中圖分類號:TP36
文獻標識碼:A
收稿日期:(責(zé)任編輯:薛士然2016-01-11)