<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 一種物流機器人的設計與實(shí)現*

一種物流機器人的設計與實(shí)現*

作者:嚴毓培,馬維旻,楊裕,尹雪梅,潘強,湯佩豫,黎偉(珠海城市職業(yè)技術(shù)學(xué)院,廣東珠海 519090) 時(shí)間:2023-01-17 來(lái)源:電子產(chǎn)品世界 收藏
編者按:為了節省機器人開(kāi)發(fā)的成本和功耗,工業(yè)領(lǐng)域一般采用非ROS系統開(kāi)發(fā)機器人,本文闡述的倉儲物流機器人的設計基于A(yíng)RM架構的S5PV210的CPU,運行嵌入式Linux操作系統,降低了硬件成本,節省了電池功耗,同時(shí)根據定制需求開(kāi)發(fā),實(shí)時(shí)性比較高。機器人的ARM主板和單片機主板間通過(guò)定制的通信協(xié)議通信,外接了各種傳感器以加強機器人的感知能力,通過(guò)嵌入式Linux下多進(jìn)程的開(kāi)發(fā)以實(shí)現多功能同步,圖形界面采用嵌入式QT開(kāi)發(fā),通過(guò)mjpeg-streamer實(shí)現web遠程視頻監控,并設計了安卓APP以提供操控的便攜性。


本文引用地址:http://dyxdggzs.com/article/202301/442706.htm

*基金項目:

1)廣東省普通高校特色創(chuàng )新類(lèi)項目(自然科學(xué))(2018GKTSCX056)

2)廣東普通高校重點(diǎn)項目(自然科學(xué))(2019GZDXM014)

3)珠海城市職業(yè)技術(shù)學(xué)院2021年科研項目(KY2021Y01Z)

4)2020年教育部高等學(xué)校項目(2020ITA03008)

5)2022年廣東省科技創(chuàng )新戰略專(zhuān)項資金(pdjh2022b0992)

6)2021年校級質(zhì)量工程師資項目(ZLJS2020120622,ZLJS2020120623,ZLJS2020120624)

0   引言

目前大部分的機器人都是基于ROS系統實(shí)現,一般ROS 在Ubuntu 系統中的穩定性最好,因此需要Intel或者高性能 架構的CPU 的支撐,但存在的問(wèn)題是硬件成本高,功耗高,產(chǎn)品的體積大。同時(shí)ROS 系統中有很多功能對于某些特定的應用場(chǎng)景而言是冗余的,這些冗余的功能會(huì )使系統龐大,占用很多內存和CPU的資源,而且機器人反應不夠靈敏,實(shí)時(shí)性較差。如果將ROS 移植到基于 架構的低成本低功耗的CPU上,或者對ROS 系統進(jìn)行裁剪以去掉冗余的部分,存在工作難度大周期長(cháng)的問(wèn)題,而且ROS 后期運行時(shí)不夠穩定。因此要設計一款在特定應用場(chǎng)景中運行的低成本低功耗的機器人,不應采用ROS 系統開(kāi)發(fā),而應根據具體需求采用適用于特定應用場(chǎng)景下的定制化的軟硬件設計方案,在降低成本功耗體積的同時(shí)可以提高系統的穩定性和實(shí)時(shí)性。

1   硬件設計

本文中所設計的如圖1 所示,硬件部分由 主板和電路板組成,具體的硬件框架如圖2所示。

image.png

圖1 設計的

1673929768216626.png

圖2 硬件框架圖

其中ARM 主板采用了S5PV210 的CPU,帶有512MB的RAM和512 M的flash,LCD 觸摸屏,SD 卡插槽,3 個(gè)USB接口和4 個(gè)串口,運行 操作系統[1],如圖3 所示。利用該主板可實(shí)現機器人的激光雷達掃描,LCD 觸摸屏顯示,機器人與手機APP 之間的藍牙通信,運行mjpeg-streamer 的實(shí)時(shí)web 遠程視頻監控等功能。

1673929857913889.png

圖3 ARM開(kāi)發(fā)板

ARM 主板的CPU 是S5PV210,運行系統, 系統是非實(shí)時(shí)系統,無(wú)法準確讀取25 kHz 的光電編碼器的脈沖,因此用進(jìn)行電機控制和光電編碼器的脈沖讀取,與ARM 主板之間用自定義的通信協(xié)議傳輸光電編碼器讀取的數據[2],如圖4 所示。

1673929974826046.png

圖4 單片機主板

機器人外接模塊可以為機器人提供更加豐富的功能,如圖5 所示,其中USB 攝像頭用來(lái)提供機器人現場(chǎng)的視頻,USB-Wi-Fi 模塊用來(lái)將攝像頭的視頻傳輸到遠程客戶(hù)端的web 頁(yè)面,串口藍牙模塊用來(lái)和手機APP連接,飛控模塊包含GPS,陀螺儀,電子羅盤(pán),加速度計等傳感器,并內置了傳感器融合等算法,為室內機器人判斷運動(dòng)方向提供參考[3]。

image.png

圖5 外接模塊

機器人可連接激光傳感器,該傳感器可以?huà)呙柚車(chē)沫h(huán)境,得到周?chē)? m 范圍內的每個(gè)障礙物的角度和距離,如圖6 所示。

1673930096855733.png

圖6 激光傳感器

2   軟件設計

2.1 單片機的軟件設計

機器人的直流電機連接著(zhù)減速電機,因此光電編碼器一秒鐘可以讀入25 kHz 的脈沖,但嵌入式Linux 操作系統是非實(shí)時(shí)的操作系統,讀取脈沖不夠準確[4],因此用單片機來(lái)讀取25 kHz 的脈沖,并將脈沖值通過(guò)串口自定義的簡(jiǎn)單協(xié)議傳給ARM 開(kāi)發(fā)板。

單片機采用STC15F2K60S2,其中外部中斷0 和外部中斷1 分別用來(lái)讀取左右兩個(gè)電機的光電編碼器的脈沖,定時(shí)器0 設置為8 位重裝用以設置波特率為115 200。定時(shí)器1 每4 ms 中斷一次,在中斷服務(wù)程序里,生成可以驅動(dòng)直流電機轉速的占空比,每200 ms 計算一次輪子的速度,假設兩個(gè)電機的光電編碼器的脈沖數為P,輪子轉一圈是25 000 個(gè)脈沖,輪子的半徑是r,則輪子的速度為2×3.14×9/25 000,并進(jìn)行1 s 的定時(shí)[5]。

串口中斷服務(wù)程序根據從ARM 板獲取到的串口信息控制兩個(gè)電機的啟動(dòng)停止、轉動(dòng)方向、設定速度,如圖7 所示,可通過(guò)手機APP 或者機器人的液晶觸摸屏上的按鈕控件來(lái)發(fā)送這些指令,因點(diǎn)擊按鈕是間斷性的動(dòng)作,同時(shí)發(fā)送兩次設定速度的按鈕的時(shí)間間隔會(huì )比較久,所以在獲取設定速度時(shí)如果buffer[2]的值有可能等于13,即’/’,也不會(huì )認為這是新的一條指令。

1673930322820294.png

圖7 單片機串口中斷服務(wù)程序

主程序每秒鐘發(fā)送兩個(gè)電機的速度到ARM板,因嵌入式Linux 系統底層讀取串口數據是不定時(shí)的,很多情況下會(huì )讀取到一個(gè)不完整的包[6],考慮到機器人的速度不可能達到65 535 mm/s,因此可以將通信協(xié)議簡(jiǎn)單設計如下:

當嵌入式Linux 讀到兩個(gè)連續的0xFF,則認為是一個(gè)新的包的開(kāi)始,將后面接收到的數據存放起來(lái),直到讀滿(mǎn)6 個(gè)字節再開(kāi)始計算兩個(gè)輪子的速度。

主程序中每秒將計算設定速度的上下限,上限是設定速度的105%,下限是設定速度的95%,當電機的速度在上下限之間不需調節占空比,否則每200 ms 調節一次占空比。

1673930406351697.png

圖8 發(fā)送實(shí)時(shí)電機速度的協(xié)議

2.2 嵌入式Linux的軟件設計

系統從QT 的TMainForm 進(jìn)入后分別對mjpegstreamer,GPIO,串口,液晶屏,攝像頭進(jìn)行初始化,并啟動(dòng)QT 的定時(shí)器,每1 s 刷新一次控件。

在robot_start 的進(jìn)程中設置一個(gè)死循環(huán),不斷從串口0 連接的串口藍牙模塊來(lái)獲取手機APP 發(fā)送過(guò)來(lái)的命令并加以執行,同時(shí)不斷從串口3 連接的單片機來(lái)獲取機器人的速度,通過(guò)與設定的速度對比后向單片機發(fā)送占空比,并根據累積的脈沖數計算機器人行走的總里程和某時(shí)刻的朝向。

由于GPS 傳感器、陀螺儀、加速度計、磁力計和電子羅盤(pán)等傳感器在室內無(wú)法使用[7],該方法使用里程計信息對機器人的位置和角度進(jìn)行計算,因此機器人的朝向可以通過(guò)剛體的運動(dòng)計算得出。

1674009235117774.png

圖9 嵌入式Linux的應用程序框架圖

移動(dòng)機器人的輪子由電機帶動(dòng),輪子的直徑為D,則輪子的周長(cháng)為1675307760265180.png,電機轉動(dòng)的圈數m 可以由光電編碼器獲取,當機器人在前進(jìn)或者后退狀態(tài),移動(dòng)機器人移動(dòng)的距離S 可以由1675307797679048.png得到。

機器人在每1 s 求1 次角度,并計算角度的累計和,以此判斷出機器人的朝向,因為激光數據處理的進(jìn)程也會(huì )對角度數據進(jìn)行讀寫(xiě)操作,因此在以上流程執行前需要加上互斥鎖mutex_lock,執行完畢后關(guān)閉互斥鎖[8]。

串口3 連接飛控模塊,根據模塊提供的通信協(xié)議,每1 s 獲取1 次飛控模塊的經(jīng)緯度的數據,經(jīng)度和緯度數據都是4 個(gè)字節,需要拼接后得到十進(jìn)制的經(jīng)緯度,當機器人如果到室外運動(dòng)時(shí)可以通過(guò)經(jīng)緯度對機器人進(jìn)行粗略的定位。

1674009383120417.png

圖10 嵌入式Linux下液晶觸摸屏的QT界面圖

機器人每1 s 也會(huì )判斷設定速度是否發(fā)生改變,如果改變了就會(huì )根據新的設定速度計算占空比并下發(fā)到單片機,如果機器人按照設定速度來(lái)調整占空比,會(huì )出現機器人的速度忽大忽小的情況,因此將速度上限定為設定速度的105%,速度下限定為設定速度的95%,誤差率為±5%,當機器人的速度在速度的上下限范圍內則不用調整占空比,機器人可以運行得更平穩[9]。

機器人的液晶觸摸屏采用QT 的圖形界面進(jìn)行設計,其中界面布局可以在QT designer 中完成,并在QTdesigner 中直接添加槽函數[10],可通過(guò)qt_second() 函數每秒鐘對界面的控件進(jìn)行刷新,當按鈕單擊后按鈕文本會(huì )發(fā)生變化,可通過(guò)PushButton->setText 函數完成按鈕文本的設計,同樣設定速度的輸入框可以通過(guò)LineEdit1->setText(QString::number(setup_speed)); 完成設計,單擊+、- 兩個(gè)按鈕可以修改機器人的設定速度,當機器人的設定速度大于1 m/s 或者小于0 時(shí),彈出警告框QMessageBox::information(this,”Error”,“speed should be in range 0-999 mm/s”); ,設定速度、兩個(gè)電機的速度、經(jīng)緯度數據可通過(guò)以下TextLabel2->setText(QString::number(setup_speed)+”mm/s”); 等函數完成顯示。

1674009527704177.png

圖11 基于mjpeg-streamer的web遠程視頻監控

機器人通過(guò)以上mjpeg-streamer 組件的代碼完成了web 遠程視頻監控的功能,可在遠程打開(kāi)firefox 瀏覽器看到機器人上攝像頭拍到的視頻[11],相關(guān)實(shí)現代碼如下:

1675306755894024.png

激光探頭可以測量到周?chē)系K物的距離和角度,當激光探頭發(fā)現在320° ~ 40° 的范圍內,在距離激光探頭1 m 的范圍內有移動(dòng)障礙物,則變量stop_forward=1,否則該變量為0,該角度和距離可以根據實(shí)際機器人的情況做相應調整。同理當激光探頭發(fā)現在40° 到140° 的范圍內,在距離激光探頭1 m 的范圍內有障礙物,則變量stop_right = 1,否則該變量為0。如果變量stop_forward = 1,則此時(shí)機器人需要旋轉到某個(gè)角度,從周?chē)系K物的縫隙中出去。

表1 終點(diǎn)角度和旋轉方向的關(guān)系

1674009693423709.png

根據表1 的內容,移動(dòng)機器人可判斷下一秒是前進(jìn)、右轉、左轉或者后退,如果沿著(zhù)終點(diǎn)角度的方向有障礙物,則根據表2 的判斷,移動(dòng)機器人計算出一個(gè)與終點(diǎn)角度最近且縫隙間隔大于機器人寬度的角度,沿著(zhù)該角度的中線(xiàn)方向移動(dòng)出去[12]。

表2 前方1米范圍內有障礙物時(shí)的判斷

1674009798395679.png

1675307029266299.png

可利用狀態(tài)機處理該部分代碼,一共有3 種狀態(tài),第1 種是在左轉或者右轉中以尋找終點(diǎn)方位的狀態(tài),第2 種是前進(jìn)或者后退中不斷向終點(diǎn)靠近,第3 種狀態(tài)是尋找新的空隙的狀態(tài)。

1674009944250434.png

圖12 機器人動(dòng)作決策的狀態(tài)機圖

2.3 安卓端的軟件設計

image.png

圖13 Android APP

機器人通過(guò)串口藍牙模塊和安卓手機連接,主要修改的文件是安卓系統里的BluetoothChat.java 文件,以下是控件的初始化:

mInputEditText = (EditText) findViewById(R.id.editText1);

mInputEditText.setGravity(Gravity.TOP);

mInputEditText.setSelection(mInputEditText.

getText().length(),mInputEditText.getText().length());

mInputEditText.clearFocus();

mInputEditText.setFocusable(false);

mStartButton=(Button)super.findViewById(R.id.button_start);

forward=(ImageButton)super.findViewById(R.id.imageButton_forward);

backward=(ImageButton)super.findViewById(R.id.imageButton_backward);

left=(ImageButton)super.findViewById(R.id.imageButton_left);

right=(ImageButton)super.findViewById(R.id.imageButton_right);

mStartButton.setOnClickListener(newShowStart());

forward . set On Click Listener(new Show Forward());

right.setOnClickListener(new ShowRight());

backward.set On Click Listener(new ShowBackward());

left.setOnClickListener(new ShowLeft());

mTitle = (TextView) findViewById(R.id.title_left_text);

mTitle.setText(R.string.app_name);

mTitle = (TextView) findViewById(R.id.title_right_text);

HEXCheckBox = (CheckBox) findViewById(R.id.radioMale);

breakButton = ( Button) findViewById(R.id.button_break);

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

checkBox_sixteen = (CheckBox) findViewById(R.id.checkBox_sixteen);

如果在A(yíng)PP上按下啟動(dòng)按鈕,按鈕的文本會(huì )變成“停止”,同時(shí)向機器人的串口藍牙模塊發(fā)送”Start”字符串,機器人通過(guò)串口收到后調用start() 函數啟動(dòng)機器人,以下是安卓端的具體實(shí)現。

1675307219170191.png

APP 的其他控件介紹如下:buletooth data buffer 區域顯示的是機器人和安卓手機通過(guò)藍牙通信的數據,full screen 按鈕可將該區域全屏顯示,hex display 單選框可以切換該區域數據的十六進(jìn)制和十進(jìn)制的顯示,clear screen按鈕可以清空該區域的數據顯示,connect按鈕可以啟動(dòng)或者關(guān)閉安卓手機和機器人之間的連接,stop按鈕可以啟動(dòng)或者停止機器人,speed(mm/s)用來(lái)顯示機器人的實(shí)時(shí)速度,hex output 單選框用來(lái)切換速度的十六進(jìn)制或十進(jìn)制的顯示,longitude 顯示機器人所在位置的經(jīng)度,latitude顯示機器人所在位置的緯度,angle需要輸入機器人相對于導航終點(diǎn)的朝向角度,distance需要輸入機器人相對于導航終點(diǎn)的距離,這是一種角坐標的表示,有了這兩個(gè)數據就可以確定導航終點(diǎn)相對于機器人的具體位置,laser scan stop 按鈕可以切換激光傳感器的啟動(dòng)和停止,send speed 按鈕可以發(fā)送機器人的設定速度,send position 按鈕會(huì )將angle 輸入框和distance 輸入框的內容發(fā)送到機器人,以便機器人了解導航終點(diǎn)的位置,navigation 按鈕用來(lái)切換手動(dòng)移動(dòng)和自動(dòng)導航模式,整體界面左下方的上下左右四個(gè)箭頭按鈕可以控制機器人前進(jìn),后退,左轉和右轉,界面右下方顯示機器人的實(shí)時(shí)速度,電機1 和電機2 的速度,以及距離機器人最近的障礙物的距離。

3   結束語(yǔ)

本文闡述了一種非ROS系統的定制化的軟硬件設計方案,該設計方案可以節省機器人的成本和功耗,并增強了系統的穩定性和實(shí)時(shí)性,通過(guò)實(shí)驗驗證,機器人運行穩定高效,說(shuō)明該設計方案具有一定的實(shí)用性和可靠性。

參考文獻:

[1] 毛文平,李帥永,謝現樂(lè ),等.基于自適應機制改進(jìn)蟻群算法的移動(dòng)機器人全局路徑規劃[J].控制與決策,2022,(2):19-25.

[2] 潘圓媛.物聯(lián)網(wǎng)環(huán)境下的移動(dòng)機器人定位的應用[J].科技資訊,2022,20(16):20.

[3] 蘇青.多機器人路徑規劃與協(xié)同避碰研究[D].南京:南京郵電大學(xué),2014.

[4] 鮑敦橋.仿真類(lèi)人機器人設計及高層決策方法的研究[D].合肥:合肥工業(yè)大學(xué),2009.

[5] 馬斌奇.多機器人協(xié)作與控制策略研究[D].西安:西安電子科技大學(xué),2009.

[6] 朱可平,王菲菲,吳加.移動(dòng)機器人核心技術(shù)發(fā)展趨勢[J].物流技術(shù)與應用,2022,27(9):5.

[7] 毛福新,閆光輝,陳俏銳,等.智能物流場(chǎng)景搬運機器人系統優(yōu)化[J].天津職業(yè)技術(shù)師范大學(xué)學(xué)報,2022,32(3):7.

[8] 韓雪峰.導盲機器人[D]. 哈爾濱:哈爾濱工程大學(xué),2009.

[9] 馬斌奇.多機器人協(xié)作與控制策略研究[D].西安:西安電子科技大學(xué),2009.

[10] 李橙,衛星,周游,等.基于激光視覺(jué)引導的智能物流分揀機器人控制研究[J].激光雜志,2022,43(8):43.

[11] 張文輝,齊乃明,尹洪亮.自適應神經(jīng)變結構的機器人軌跡跟蹤控制[J].控制與決策,2011,26(4):4-6.

[12] 付曉艷,白雪,魏博凝.基于機器學(xué)習的物流自動(dòng)分揀機器人定位精度檢測算法[J].自動(dòng)化與儀器儀表,2022(8):5-9.

(本文來(lái)源于《電子產(chǎn)品世界》雜志2023年1月期)

image.png


image.png


image.png


image.png




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>