亚洲精品亚洲人成在线观看下载-亚洲精品色情app在线下载观看-欧美孕妇变态孕交粗暴-中国农村熟妇性视频-真人作爱免费视频

工業焊接機器人
立體倉庫分揀機器人,顏色分類機器人的制作
2022-12-29
快遞自動分揀機器人系統引進郵件分揀機器人

步調1:硬件

那是我之前用來構建的這個。我利用來自的部件和我躺正在屋子周圍的器材100%構建它。

PhidgetsBoards,Motors,Hardware

HUB0000-VINTHubPhidget

1108-磁傳感器

2xSTC1001-2.5AStepperPhidget

2x3324-42STH38NEMA-17雙極無齒輪步進器

3x3002-Phidget電纜60厘米

3403-4端口集線器

3031-母尾5.5

3029-2線100‘絞線

3604-10mm紅色LED

其他部件

24VDC2.0A電源

車庫廢木跟金屬

拉鏈

底部堵截的塑料容器

第2步:計劃機器人

咱們須要計劃一些可以從輸入料斗中掏出一個珠子,將其放在收集攝像頭下,然后將其挪動到得當的箱子中的器材。

珠子皮卡

我決意用2片圓形膠合板做第1部門,每一個膠合板正在同一個處所鉆一個洞。底部件流動,頂部件毗鄰到步進機電,步進機電可以正在裝有珠子的料斗下方扭轉。當孔正在料斗下挪動時,它會拾取一個珠子。然后我可以正在收集攝像頭下扭轉它,然后進一步扭轉,直到它與底部的孔婚配,此時它便會落下。

正在這張圖片中,我正在測試體系能行得通。一切都是流動的,除頂部的圓形膠合板,它與上面的步進機電相連。收集攝像頭還沒有裝置。我此刻只是利用Phidget控制面板轉向機電。

珠子存儲

下一部分是計劃用于連結每種顏色的bin體系。我決意利用上面的第二個步進機電去支持跟扭轉存在平均距離隔間的圓形容器。那可以用來扭轉珠子將從此中失落出的孔下方的精確隔間。

我利用紙板跟膠帶去構建它。這里最緊張的是一致性-每一個隔間該當是不異的尺寸,全部器材該當平均減輕,以便扭轉而不會跳過。

經由過程慎密貼合的蓋子實現珠子的移除一次只有一個隔間,以是可以倒出珠子。

收集攝像頭裝置正在料斗跟下板孔地位之間的頂板上。那容許體系正在掉落之前窺察珠子。LED用于照亮相機下方的珠子,而且環境光被阻攔,以供給同等的照明情況。那關于精確的顏色檢測十分緊張,由于環境光可以真正天消弭感知顏色。

地位檢測

體系可能檢測到珠子的扭轉十分緊張分開器。那用于正在啟動時設置初始地位,但也用于檢測步進機電是不是曾經沒有同步。正在我的體系中,一個珠子有時會正在拾取時卡住,體系須要可能檢測并處置懲罰這類環境-經由過程備份跟測驗考試agian。

有良多方式可以處置懲罰這個(工作。我決意利用1108磁傳感器,正在頂板的邊緣嵌入磁鐵。那容許我驗證每次扭轉的地位。一個更好的解決方案能夠是步進機電上的編碼器,但我有一個1108擺布,以是我利用它。

實現機器人

此時,所有皆曾經實現出來,并測試。此刻是時間裝置好一切器材并轉向編寫軟件。

2個步進機電由STC1001步進控制器驅動。HUB000-USBVINT集線器用于運轉步進控制器,和讀取磁傳感器跟驅動LED。收集攝像頭跟HUB0000皆毗鄰到一個小型USB集線器。利用3031引線跟一些電線和24V電源為機電供電。

步調3:編寫代碼

C#跟VisualStudio2015用于此名目。下載本頁頂部的源代碼并依照步調停止操縱-次要部門概述以下

初始化

起首,咱們必需創立,翻開跟初始化Phidget工具。那是正在表單加載事宜跟Phidget附加處理程序中實現的。

privatevoidForm1_Load(objectsender,EventArgse){

/*InitializeandopenPhidgets*/

=0;

+=Top_Attach;

+=Top_Detach;

+=Top_PositionChange;

;

=1;

+=Bottom_Attach;

+=Bottom_Detach;

+=Bottom_PositionChange;

;

=2;

=true;

+=MagSensor_Attach;

+=MagSensor_Detach;

+=MagSensor_SensorChange;

;

=5;

=true;

=0;

+=Led_Attach;

+=Led_Detach;

;

}

privatevoidLed_Attach(objectsender,e){

=true;

=true;

=true;

}

privatevoidMagSensor_Attach(objectsender,e){

=true;

=_1108;

=16;

}

privatevoidBottom_Attach(objectsender,e){

=true;

蜘蛛分揀機器人結構

=bottomCurrentLimit;

=true;

=bottomVelocityLimit;

=bottomAccel;

=100;

}

privatevoidTop_Attach(objectsender,e){

=true;

=topCurrentLimit;

=true;

=-1;

=-topVelocityLimit;

=-topAccel;

=100;

}

咱們借正在初始化時代讀取任何已保留的顏色信息,是以可以繼承之前的運轉。

機電定位

機電處置懲罰代碼包羅用于挪動機電的便當功用。我利用的機電每轉3,2001/16步,以是我為此創立了一個常量。

關于頂部機電,咱們愿望可能將3個地位發送到機電:收集攝像頭,孔跟定位磁鐵。有一個功用可以達到每一個地位:

privatevoidnextMagnet(Booleanwait=false){

doubleposn=%stepsPerRev;

+=(stepsPerRev-posn);

if

while;

}

privatevoidnextCamera(Booleanwait=false){

doubleposn=%stepsPerRev;

if

+=;

else

+=+stepsPerRev);

if

while;

}

privatevoidnextHole(Booleanwait=false){

doubleposn=%stepsPerRev;

if

+=;

else

+=+stepsPerRev);

if

while;

}

正在開始運行之前,利用磁傳感器對齊頂板??梢噪S時挪用alignMotor函數去對齊頂板。該功用起首快捷將板遷移轉變至1轉,直至其磁鐵數據高于閾值。然后它略微前進一點并逐步向前挪動,捕獲傳感器數據。最初,它將地位設置為最大磁鐵數據地位,并將地位偏移重置為0.是以,最大磁鐵地位應一直為

ThreadalignMotorThread;

BooleansawMagnet;

doublemagSensorMax=0;

privatevoidalignMotor{

//Findthemagnet

=;

sawMagnet=false;

+=magSensorStopMotor;

=-1000;

inttryCount=0;

tryagain:

+=stepsPerRev;

while

;

if{

if{

;

=false;

=false;

runtest=false;

return;

}

tryCount++;

(“Arewestuck?Tryingabackup.。.”);

-=600;

while;

gototryagain;

}

=-100;

magData=newList》;

+=magSensorCollectPositionData;

+=300;

while;

-=magSensorCollectPositionData;

=-topVelocityLimit;

KeyValuePairmax=magData[0];

foreach(KeyValuePairpairinmagData)

if

max=pair;

;

magSensorMax=;

=0;

while;

(“Alignsucceeded”);

}

List》magData;

privatevoidmagSensorCollectPositionData(objectsender,e){

(newKeyValuePair;

分揀機器人的應用領域

}

privatevoidmagSensorStopMotor(objectsender,e){

if{

=-300;

-=magSensorStopMotor;

sawMagnet=true;

}

}

最初,經由過程將底部馬達發送到此中一個胎圈容器地位去節制底部馬達。關于這個名目,咱們有19個職位。算法取舍最短門路,順時針或逆時針遷移轉變。

privateintBottomPosition{

get{

intposn=%stepsPerRev;

if

posn+=stepsPerRev;

return(((posn*beadCompartments)/stepsPerRev));

}

}

privatevoidSetBottomPosition(intposn,boolwait=false){

posn=posn%beadCompartments;

doubletargetPosn=(posn*stepsPerRev)/beadCompartments;

doublecurrentPosn=%stepsPerRev;

doubleposnDiff=targetPosn-currentPosn;

//Keepitasfullsteps

posnDiff=*16;

if(posnDiff《=1600)

+=posnDiff;

else

-=(stepsPerRev-posnDiff);

if

while;

OpenCV用于從收集攝像頭讀取圖象。正在啟動主排序線程之前啟動相機線程。該線程不休讀入圖象,利用Mean計較特定區域的均勻顏色并更新全局顏色變量。該線程借利用HoughCircles去檢測珠子或頂板上的孔,以細化它正在探求顏色檢測的區域。閾值跟HoughCircles數字是經由過程重復實驗肯定的,而且正在很大水平上在于收集攝像頭,光照跟間距。

boolrunVideo=true;

boolvideoRunning=false;

VideoCapturecapture;

ThreadcvThread;

ColordetectedColor;

Booleandetecting=false;

intdetectCnt=0;

privatevoidcvThreadFunction{

videoRunning=false;

capture=newVideoCapture;

using(Windowwindow=newWindow{

Matimage=newMat;

Matimage2=newMat;

while{

;

if

break;

if

detectCnt++;

else

detectCnt=0;

if(detecting||circleDetectChecked||showDetectionImgChecked){

;

Matthres=;

thres=;

if(showDetectionImgChecked)

image=thres;

if(detecting||circleDetectChecked){

CircleSegment[]bead=(,2,/*/4*/20,200,100,20,65);

if{

(bead[0].Center,3,newScalar;

(bead[0].Center,bead[0].Radius,newScalar;

if(bead[0].Radius》=55){

=bead[0].+(bead[0].Radius/2);

=bead[0].-(bead[0].Radius/2);

}else{

=bead[0].+;

=bead[0].-;

}

=15;

=15;

}else{

CircleSegment[]circles=(,2,/*/4*/5,200,100,60,180);

if{

Listxs=;

;

Listys=;

;

intmedianX=xs[/2];

intmedianY=ys[/2];

if

medianX=-15;

if

medianY=-15;

(medianX,medianY,100,newScalar;

if{

=medianX-7;

=medianY-7;

=15;

=15;

}

}

}

}

}

Rectr=newRect,

,

;

MatbeadSample=newMat;

ScalaravgColor=;

detectedColor=avgColor[2],avgColor[1],;

(r,newScalar;

;

;

終端分揀機器人多少錢一臺

videoRunning=true;

}

videoRunning=false;

}

}

privatevoidcameraStartBtn_Click(objectsender,EventArgse){

if{

cvThread=newThread(newThreadStart(cvThreadFunction));

runVideo=true;

;

=“stop”;

while

;

}else{

runVideo=false;

;

=“start”;

}

}

顏色

此刻,咱們可以肯定珠子的顏色,并依據該顏色決意將其放入哪個容器。

這個步調依賴于顏色比力。咱們愿望可能劃分顏色以限定誤報,但也容許充足的閾值去限定假陽性。比力顏色實際上是非常復雜的,由于計算機將顏色存儲為RGB的方法,和人類感知顏色的方法并不是線性相關的。更蹩腳的是,借必需思量正在上面窺察顏色的光的顏色。

有龐大的計較色差的算法。咱們利用CIE2000,若是2種顏色與人類沒法劃分,則輸出瀕臨1的數字。咱們利用ColorMineC#庫來實現這些龐大的計較。已發明DeltaE值為5可正在假陽性跟假陽性之間供給優越的調和。

因為容器平常有更多顏色,是以最初一個地位保存為捕捉箱。我平常將這些設置為第二次經由過程機械。

List

colors=newList

;

List

colorPanels=newList

;

ListcolorsTxts=newList;

ListcolorCnts=newList;

constintnumColorSpots=18;

constintunknownColorIndex=18;

intfindColorPosition{

(“Findingcolor.。.”);

varcRGB=newRgb;

=;

=;

=;

intbestMatch=-1;

doublematchDelta=100;

for(inti=0;i《;i++){

varRGB=newRgb;

=colors[i].R;

=colors[i].G;

=colors[i].B;

doubledelta=(RGB,newCieDe2000Comparison;

//doubledelta=deltaE;

+“):”+;

if(delta《matchDelta){

matchDelta=delta;

bestMatch=i;

}

}

if{

(“Found?。≒osn:”+bestMatch+“Delta:”+matchDelta+“)”);

returnbestMatch;

}

if(《numColorSpots){

;

;

(newAction,newobject[]{-1});

writeOutColors;

return;

}else{

(“UnknownColor!”);

returnunknownColorIndex;

}

}

排序邏輯

排序功能將一切部門搜集正在一路以實際排序珠子。該函數正在專用線程中運轉;挪動頂板,檢測珠子顏色,將其放入垃圾箱,確保頂板連結對齊,計數珠子等。當垃圾箱變滿時,它也會終止運轉-不然咱們終極會溢出珠子。

ThreadcolourTestThread;

Booleanruntest=false;

voidcolourTest

=true;

if

=true;

while{

nextMagnet;

;

try{

if(《(magSensorMax-4))

alignMotor;

}catch{alignMotor;}

nextCamera;

detecting=true;

while

;

(“DetectCount:”+detectCnt);

detecting=false;

Colorc=detectedColor;

(newAction

,newobject[]{c});

inti=findColorPosition;

SetBottomPosition;

nextHole;

colorCnts[i]++;

(newAction,newobject[]{i});

;

if(colorCnts[unknownColorIndex]》500){

=false;

=false;

runtest=false;

(newAction,null);

return;

}

}

}

privatevoidcolourTestBtn_Click(objectsender,EventArgse){

if(colourTestThread==null||?。﹞

colourTestThread=newThread(newThreadStart;

runtest=true;

;

=“STOP”;

=;

}else{

runtest=false;

=“GO”;

=;

}

}

此時,咱們有一個事情順序。一些代碼被漏掉正在文章以外,以是看一下實際運轉它的源代碼。

物流分揀機器人方案自動分揀機器人制造商快遞分揀機器人廠家聯系方式
主站蜘蛛池模板: 精品一区二区三区国产在线观看| 精品无码人妻被多人侵犯av| 欧洲熟妇牲交| 不卡无码人妻一区三区| 欧美群交射精内射颜射潮喷| 无码h黄肉动漫在线观看999| 一本久道久久综合婷婷五月| 三上悠亚福利一区二区| 人人综合亚洲无线码另类| 精品人妻无码一区二区三区性| 亚洲成a人无码av波多野| 亚洲国产成人一区二区精品区 | 99久久国产精品免费高潮| 色狠狠av一区二区三区| 蜜臀aⅴ国产精品久久久国产老师| 深夜国产一区二区三区在线看| 精久国产av一区二区三区孕妇| 97国产露脸精品国产麻豆 | 性欧美牲交在线视频| 亚洲欧美日韩高清一区| 亚洲va中文字幕无码毛片| 免费?无码?国产?尺度粉嫩AV| 日本真人做爰免费的视频| 国产suv精品一区二人妻| 国产欧美二区综合| 色无码| 97婷婷狠狠成为人免费视频| 婷婷五月综合色视频| 国产成人av区一区二区三| 成人精品综合免费视频 | av无码爆乳护士在线播放| 一本到无码av专区无码| 国内揄拍国内精品少妇| 99久久精品免费看国产一区二区三区 | 国产亚洲欧美日韩二三线| 四库影院永久四虎精品国产| 欧美A√| 亚洲人成网网址在线看| 亚洲国产综合精品 在线 一区 | 国产精品福利视频萌白酱| 亚洲国内成人精品网|