步調1:組件
這是單條蛇的零件清單,若是你想建造兩條蛇,則需要將組件的體積更加。
10MG996R伺服系統*
1.75mm3D打印燈絲
10個滾珠軸承,零件編號608
20個小滾珠軸承,零件號r188,適用于車輪**
40個飛利浦頭螺釘6-32x1/2“
8個更長的螺絲
最少20件4英寸拉鏈
每根5米白色和玄色20號線或更厚的***
尺度22號線
30個公頭管針
ArduinoNano
3D打印部件
某種情勢的動力,我小我運用改良的ATX電源
1000uF25V電解電容器
種種尺寸的熱縮管,焊錫,膠水等雜項東西
*您能夠利用其他范例,但您需求從頭設計3D文件以順應您的伺服系統。另外,假如您實驗利用像sg90如許的較小的伺服器,您可能會發明它們不敷強健(我沒有測試過這個,您能夠自身試驗)。
**您不需要為車輪運用小型滾珠軸承,我只是躺了良多。大概,您能夠運用樂高輪或其他玩具輪。
***這根導線最多能夠經由過程10安培,太薄,電流會熔化它。
步調2:3D打印組件
如果您正在制造1D蛇打印這一些碎片。
若是您正在建造這一些碎片的2D蛇紋。
重要說明:刻度多是毛病的!我正在Fusion360中設計我的組件,將設計作為.stl文件導出到MakerBot軟件中,然后將其打印正在QidiTech打印機(MakerBotReplicator2X的克隆版本)上。正在這個事情步驟的某個中央有一個毛病,我的全部打印出來皆太小了。我一向沒法辨認毛病的位置,但臨時修復了MakerBot軟件中每一個打印尺寸縮放到106%的題目,這辦理了這個題目。
鑒于此,請注意,如果您打印上面的文件,它們也許會被毛病地縮放。我倡議正在打印之前打印一件并查抄它是不是合適您的MG996R伺服。
假如您打印任何文件,請讓我了解后果是什么:假如打印太小,恰如其分,太大,百分之幾。根據作為社區一同事情,我們能夠運用分歧的3D打印機和.stl切片器來辦理毛病的位置。
步調3:裝配蛇
兩個版本的蛇的裝配進程大抵不異。獨一的區別是正在2D蛇形中,每一個機電相對前一個扭轉90度,而正在1D蛇中,一切機電都正在一個軸上對齊。
首先擰下伺服,保留擰緊并取下玄色塑料框架的頂部和底部部件,謹慎不必要喪失任何齒輪!將伺服滑動到3D打印的框架中,如上圖所示。調換伺服外殼的頂部,并用四個6-321/2“螺釘將其擰緊到位。保留伺服框架的底部(如果您想在之后的項目中再次使用它)并將其調換為3D印刷外殼,獨一的區別是滾珠軸承滑動的附加旋鈕。將伺服器擰回到一同,反復10次。
主要提醒:正在持續之前,您必須將代碼上傳到Arduino并將每一個伺服器移動到90度。假如沒有如許干,可能會招致您斷開一個或多個伺服和/或3D打印的幀。假如您沒有確定如何將伺服器移動到90度,請參閱此頁面。根基大將伺服的紅線連收到Arduino上的5V,棕色線連收到GND,黃色線連收到數字引腳9,然后上傳鏈接中的代碼。
而今每一個伺服都在90度,繼承:
經過將3D打印的旋鈕從一個伺服盒插入第二段片的孔中來毗鄰10個片斷,然后用一點力將伺服器的軸推入其孔中(為清楚起見,請拜見上面的圖片和視頻)。如果您正在制造1D蛇,則全部線段都應對齊,如果您正在制造2D蛇,則每一個線段應扭轉90度到前一個線段。請注意,尾部和頭頂部框架只是其他部門長度的一半,毗鄰它們但在完成布線之前沒有要對金字塔外形的部件舉行解釋。
安裝x形伺服臂并將其擰緊到位。將滾珠軸承滑過3D打印旋鈕,這需要將兩個半圓柱悄悄擠壓在一起。根據您運用的燈絲品牌和添補密度,柱子也許太脆并且會卡住,我不認為會泛起這類情形,可是不必要過分用力。我小我運用10%添補的PLA長絲。一旦滾珠軸承翻開,它應該被旋鈕上的懸伸鎖定。
步調4:電路
兩條機器人蛇的電路不異。正在布線過程中,確保每一個段都有充足的布線空間完整扭轉,特別是正在2D蛇形中。
以上是唯一2個伺服的布線電路圖。我試著用10個舵機做一個電路圖,但它太甚擁擠了。這張照片取現實生活中獨一的區分在于,您須要并聯8個伺服機電,并將PWM信號線連收到ArduinoNano上的引腳。
當毗鄰電源線時,我利用了單件18號線作為重要的5V線沿著蛇的長度延長。利用剝線鉗,我以10個劃定規矩的距離移除一小部分絕緣體,并由這一些距離中的每個焊接了一小段電線,一組3個插頭。關于玄色18規格GND線和第二個插頭引腳,再次反復此操縱。末了將較長的導線焊收到第3個插頭引腳,該引腳將PWM旌旗燈號由蛇形頭頂部的ArduinoNano傳送到伺服系統(導線必需充足長能力達到,縱然分段蜿蜒)。根據需要安裝熱縮管。將3個插頭引腳連收到伺服電線的3個母插頭引腳。對10個伺服系統中的每個伺服系統反復10次。終極實現的是并行毗鄰伺服系統并將PWM旌旗燈號線連收到Nano。公/母插針的原因是您能夠很容易地將線段拆開并改換伺服機電,假如它們正在沒有拆焊的情況下斷開。
將GND和5V電線焊收到尾部的3x7孔穿孔板上電容器和螺絲端子。電容器的目標是清除啟動伺服系統時導致的任何電流耗損尖峰,能夠重置ArduinoNano(若是您沒有電容器,您能夠正在沒有它的情況下脫離,但最好是平安的)。請記著,電解電容器的長插腳需求連收到5V線路,而較短的插腳連收到GND線路。將GND線焊收到Nano的GND引腳,將5V線焊收到5V引腳。請注意,若是您利用差別的電壓,請說一個7.4V的Lipo電池,然后將紅線連收到Vin引腳,而不管是5V引腳,如許干會損壞引腳。
將10根PWM旌旗燈號線焊收到ArduinoNano上的引腳。我按以下按次連接了我,您能夠挑選以分歧方法連接您的,但只記得您須要變動代碼中的行。若是您不確定我在說什么,只需根據我的方法連線,您就不會有題目。由蛇的尾部伺服到蛇的頭頂部,我根據以下按次連接了我的蛇。將旌旗燈號引腳連收到:A0,A1,A2,A3,A4,A5,D4,D3,D8,D7。
運用拉鏈來清理接線。正在繼承查抄之前,一切部份都能夠挪動,并且有充足的空間讓電線挪動而沒有會被拉開。現正在接線已完成,我們能夠擰上頭頂部和尾部金字塔形的帽子。請注意,尾部有一個適用于系繩出來的孔,頭頂部有一個適用于Arduino編程電纜的孔。
步調5:為Snake供電
由于伺服系統并聯銜接,它們皆得到雷同的電壓,但必需加上電流。檢察MG996r伺服系統的數據表,他們能夠正在運行時繪制高達900mA的電流。因而,若是一切10個伺服系統與此同時挪動,則總電流消費為0.9A*10=9A。因而,一般的5v,2A墻壁插座適配器將沒法一般事情。我決議修正ATX電源,能夠正在20A時到達5v。我沒有準備注釋若何保證這一點,由于已經正在Instructables和YouTube上進行了良多議論。正在線快速搜索將向您展現若何修正個中一個電源。
假定您已建改了電源,只需正在電源和螺釘端子之間銜接一根長繩便可。蛇。
另一種挑選是利用板載鋰電池組。我沒有試過這個,所以您需要為電池設計一個安裝座并將它們接入。請記著伺服機電和Arduino的事情電壓,電流損耗Arduino上的5v引腳,如果有更高的電壓,請轉到Vin引腳。)
菜鳥agv分揀機器人步調6:測試一切正常
持續讓我們測試一切正常。上傳此代碼。您的蛇應該在0-180之間獨自挪動每一個伺服,然后經由過程直線安排完成。若是沒有,則出現問題,很多是接線不正確大概伺服系統最初沒有居中,如“蛇的裝配”局部所述。
步調7:代碼
現在沒有蛇的遙控器,所有的行動全是預先編程的,您能夠挑選您想要的。我將正在第2版中開辟一個遙控器,然則若是您想長途節制它我會認為正在Instructables上檢察其他教程并調解蛇取藍牙兼容。
若是您正在制造1D蛇上傳此代碼。
如果您要讓2D蛇上傳此代碼。
我激勸您利用代碼,開展本人的變動并創立新算法。瀏覽接下來的一些部門,理解每種范例的活動的具體詮釋和它的代碼若何事情。
步調8:稱重Vs輪
蛇的首要方法之一能夠向前挪動是經過他們的鱗片的外形。秤能夠更輕易向前活動。有關進一步闡明,請旁觀3:04之后的視頻,理解鱗片若何幫忙蛇向前挪動。正在統一視頻中旁觀3:14表現了當蛇正在袖子中時的結果,消除鱗片的磨擦。正如我的YouTube視頻中所示,當機器人1D蛇試圖正在沒有鱗片的草地上滑行時,它既沒有向前或向后挪動,由于氣力總和為零。是以,我們需要正在機器人的下腹部增加一些人工標準。
經過標準重修活動的研討正在哈佛大學完成,并正在此視頻中進行了演示。我沒法設計一品種似的方法來正在我的機器人上高低挪動音階,反而是布置將被動的3D打印音階附加到下腹部。
不幸的是,這被證實是無效的,由于鱗片仍然在地毯表面上擦過,而是不是捉住纖維并增長摩擦力。
假如您想實驗我制造的音階,您能夠由我的GitHub3D打印文件。假如您本人勝利,請在下面的批評中告訴我!
我實驗利用r188滾珠軸承制成的輪子,外面有熱縮管作為“輪胎”。您能夠由我的GitHub上的.stl文件中3D打印塑料輪軸。雖然車輪正在生物學上沒有正確,但它們類似于秤,由于正向扭轉很輕易,可是側向活動要堅苦很多。您能夠正在我的YouTube視頻中看到輪子的勝利成果。
第9步:滑動行動
我們曾經計議了鱗片若何贊助蛇行進,但我們若何編程蛇?簡短的答復是我們經過伺服鏈泵送正弦波。然則有關詳細信息的更詳細分析,請檢察代碼。請注意,鄙人面的代碼塊中,我省略了絕多數細節,只存眷數學層面。不必要將此代碼放入Arduino中,它不起作用,僅適用于注釋目標。反而是利用這個完備的代碼。
該行向10個伺服器中的每一個伺服器寫入一個正弦波。基線角度為90度,偏移量變量將掌握蛇是向前照舊向左或向右,拜見上面的GIF。正弦波輸出一個介于[-1,1]之間的值,該值能夠根據乘以幅度來放大。
for(intj=0;j《10;j++){
myServos[j].write(90+offset+Amplitude*sin(Speed*rads+j*Wavelengths*Shift));
}
因為伺服的范疇為[0,180]度,我們必需確保以上值沒有會使輸出低于0或高于180.以下while輪回適用于將幅度限定正在這一些邊界內。正在數學上我們必需知足這個前提:|offset|+|amplitude|《=90
while(MaxAngleDisplacement》90){
Amplitude=abs-1;
MaxAngleDisplacement=abs+Amplitude;
}
要從正弦波得到所需的輸出,我們必需利用弧度而并不是度數。如果您不確定這里的弧度是一個簡短的先容。基本上2*pi弧度=360度。以下行進行了這類轉換。
for(inti=0;i《360;i++){
rads=i*pi/180.0;
智能分揀機器人優點}
由于每一個伺服沿著正弦波比前一個伺服更遠,我們必須在正弦波代碼中移動每一個陸續的機電。這是利用以下行完成的。然后能夠在上面的for輪回中看到移位變量。
floatpi=3.14159;
intTotalNumberofServos=10;//changeasrequired
floatShift=2*pi/TotalNumberofServos;
我們目下當今已設置了底子事情。我鼓動勉勵您轉變以下變量的值:振幅,速度和波長,以檢察它們對正弦波輸出的危害。
步調10:英寸蠕蟲
根據旁觀英寸蠕蟲的挪動,能夠直觀地明白這類舉措。代碼正在蛇體上流傳一個簡樸的撞擊,每一次皆向前挪動一點。我不愿正在這插入另一個代碼塊,所以我將引誘您到我的GitHub來檢察名為‘InchWorm’的函數中的代碼。
須要注重的一點是經過增添比例能夠提高服從。假如您在7:24觀看我的YouTube視頻,特殊存眷尾段,您會發覺它會前后發抖。這表明蛇不只是向前挪動,每一次挪動還會稍微滑回,下降服從。
步調11:其他多少外形,Cshape函數全是相稱自我表明的,由于它們創建了C形蜿蜒,U形蜿蜒等,只管若是您想要我會說為了攜帶蛇,我發明ubend是最好的外形,不然蛇就會正在任何地方翻轉,由于即便沒有動力,舵機還會正在本身重量下挪動。
第12步:SidewindingMotion
正在檢察代碼之前,請看一下真正的繞行蛇。正在前面的鏈接中,經過周期性地抬起局部蛇體并將其本身推向側面的進程來描寫響尾蛇的活動。為此,我們將正在2D蛇的水溫和垂直平面上發送正弦波。正在代碼中,這個舉措是正在函數‘sidewind’中寫的。
您可能會注意到GIF中的側向活動比質量更好。我的YouTube視頻中的側卷剪輯。這證明了實驗的重要性,并為變量找到精確的值.GIF中運用的變量招致比我的YouTube視頻更勝利的側繞。正在GIF中,變量是:
速度=2
波長=1.5
速度=1
波長=1.0
要實現側繞活動,必需經過一個平面發送正弦波,經過另一個平面發送余弦。為此,我經過劃分運用偶數和奇數編號體系分別垂直平面中的5個機電和程度中的5個來點竄1D情況下的代碼。我們期望此中一條線作為正弦波挪動而另一條線作為余弦波挪動。為了掌握挪動標的目的,我加加了一個帶有乘數變量的表達式。依據乘數變量的值,代數表達式:-*pi/4和+*pi/4,將為0或+pi/2。請注意sin=cos。因而,我們已實現了我們的方針:一個平面中的正弦波和另一個平面中的余弦波,反轉波的次序將轉變活動標的目的。
食品分揀機器人怎么選for(intj=0;j《5;j++){
myServos[2*j].write(90+offset+amplitude*sin(Speed*rads+j*Wavelengths*shift-*pi/4));//movesservosinverticalplane
myServos[2*j+1].write(90+offset+amplitude*sin(Speed*rads+j*Wavelengths*shift+*pi/4));//movesservosinhorizontalplane
}
為了實現轉彎活動,我只是略微建改了上面的代碼,以便蛇的前半一些(引腳A5,4,3,8,7上的機電)向右邊和后側側向扭轉蛇的一半(A0,A1,A2,A3,A4上的機電向左邊)向左邊遷移轉變,招致向右遷移轉變。
for(intj=0;j《3;j++){
myServos[2*j].write(90+offset+amplitude*sin(Speed*rads+j*Wavelengths*shift+*pi/4));
myServos[2*j+1].write(90+offset+amplitude*sin(Speed*rads+j*Wavelengths*shift-*pi/4));
}
for(intj=3;j《5;j++){
myServos[2*j].write(90+offset+amplitude*sin(Speed*rads+j*Wavelengths*shift-*pi/4));
myServos[2*j+1].write(90+offset+amplitude*sin(Speed*rads+j*Wavelengths*shift+*pi/4));
}
步調13:敲擊
受到眼鏡蛇的啟示,運用此代碼,蛇坐期待歇工。代碼是相稱直接的,由于蛇維持靜止,直到它有時候擊打,此時它將針腳3和7上的伺服器向前推動以攻擊,然后返回其靜止位置。將來的改善將包羅靠近傳感器。
步調14:批評樹和管道攀爬
《我想要研討的此中一個舉措是爬樹算法,它包孕一個像煙圈一樣的螺旋狀螺旋轉動。不幸的是,我的2D蛇不敷長,不可以纏繞在樹上。如今,我將為您帶來卡內基梅隆大學的視頻,以取得靈感。假如您想實驗自身下手,我會引導您瀏覽參考一些中的一些鏈接,以相識數學。
第15步:將來開展
以下是我想要做的革新列表,可是瀏覽這篇Instructable可能會鼓舞您本身脫手往打敗我!如果您運用這一些功效構建本身的蛇我很想曉得!
車載電池,脫節系繩!
更多伺服系統,更長的蛇形長度,但更松散的設計
移除松散的電線,而在段之間有針腳接觸
靠近傳感器/和/或相機
嘴巴/舌頭/尖牙/眼睛/嘶嘶聲
自主運動
爬樹才能
倉儲分揀機器人視頻地道穿越本領
遙控操縱
將技能應用到機器人水下鰻魚
或許最主要的是:從頭設計3D打印片斷,使片斷能夠輕松扭轉90度讓你在1D蛇和2D蛇之間快速切換而不需要打印全新的蛇
快遞分揀機器人價格快遞分揀機器人操作分揀機器人介紹