【第15章 機器跑通】
------------------------------------------
當天下午,林辰沒再看書。
兩百五十五萬的事剛談完,腦子還熱著。與其讓這股勁耗在等待上,不如拿手底下的東西開刀。
桌上那個紙板機械臂被他拆了個乾淨。熱熔膠粘的底座掰成兩半扔進垃圾桶,舵機和傳感器拆下來碼在防靜電墊上,杜邦線一根根拔出來理順。
前兩天在網上下單的鋁型材和亞克力板到了,靠在書房門邊還沒拆封。林辰蹲下來劃開快遞箱,把材料一樣一樣擺到桌麵上。
2020鋁型材,截麵兩公分見方,輕,剛性夠用。亞克力板三毫米厚,拿來做末端夾持結構正好。配套的角碼、T型螺母、內六角螺絲,一小包一小包分裝好的。
四個關節,四個舵機。
底座用兩根鋁型材交叉固定,比之前紙板糊的玩意兒穩了不止一個檔次。大臂、小臂各一根型材,關節處用角碼連接舵機,旋轉軸居然還挺順滑——鋁型材的槽口公差控製得比預想中好。
末端是個新東西。
林辰從抽屜裡翻出一隻積灰的舊鼠標——去年換新的時候沒扔,丟在雜物盒最底層。拆開外殼,取出光電傳感器模組,用鑷子把排線焊到Arduino的模擬輸入引腳上。
嚴格說,這東西不能叫視覺傳感器。它隻能檢測桌麵上的明暗變化,分辨率低得可憐。但拿來定位一顆白色乒乓球——在深色桌麵上,亮度差異足夠大,勉強能湊合。
程序從頭寫。
代碼量是上一版的三倍多。核心邏輯分三個模塊:掃描、計算、執行。
掃描模塊控製底座舵機做180度慢速旋轉,光電傳感器每隔一度采集一次亮度值,存進數組。亮度超過閾值的角度區間對應乒乓球的方位——原理粗暴,但管用。
計算模塊把方位角轉成關節角度。四個關節的運動學逆解,他在草稿紙上推了半小時的三角函數。公式不長,但每一個角度值都要做邊界檢查——舵機的物理極限是零到一百八十度,超出去會堵轉燒電機。
執行模塊最簡單,按計算好的角度依次驅動四個舵機,到位後末端夾持機構閉合。
寫完編譯,零錯誤。
上傳到Arduino板子裡,上電。
第一次測試。底座轉了一百二十度後停住,大臂動了,小臂沒動。排查——小臂舵機的信號線接到了錯誤的PWM引腳。換線,重新上電。
第二次。四個關節全動了。底座掃描完畢後準確鎖定了乒乓球方向,大臂伸出去——但伸過了頭。末端從球的上方劃過去,夾持器在球後麵三公分的位置空合了一下。
運動學逆解的大臂長度參數填錯了。鋁型材比紙板長兩公分,他忘了改。
改參數,重新編譯,上傳。
請前往oop.tw閱讀本書最新內容
第三次到第六次,各種稀奇古怪的問題輪番上陣。夾持器閉合速度太快把球彈飛了一次;底座掃描的步進角太大,傳感器直接跳過了球的位置;有一次更離譜——四個舵機同時動了,整台機械臂在桌上抽搐了兩秒,把自己擰成一個別扭的姿勢,鋁型材關節處發出刺耳的摩擦聲。
每一次失敗都是一個bug。每一個bug排掉,代碼就紮實一層。
第七次。
乒乓球放在桌麵右側。上電,底座旋轉,鎖定,大臂抬起,小臂展開——四個舵機依次到位,末端穩穩懸停在球的正上方。
夾持器閉合。
兩片亞克力板碰到球麵的一瞬間,左側那片沒夾緊。球從縫隙裡滑出去,滾到桌沿,掉在地板上彈了兩下。
林辰盯著空夾持器看了三秒。
左側舵機的閉合角度差了兩度。兩度。
改。
第八次。
乒乓球擱在桌麵右側二十五公分的位置。
上電。
底座啟動,勻速旋轉。光電傳感器掃過桌麵——深色、深色、深色——亮度值跳了一下。底座回擺了三度做二次確認,鎖定。
大臂抬起,小臂展開。四個舵機依次到位,末端懸停在乒乓球上方大約一公分。
夾持器閉合。
兩片亞克力板把球夾住了。不緊不鬆,球沒變形也沒滑脫。
底座反向旋轉四十五度——預設的放置位置。到位後夾持器張開,球滾到桌麵上,又往前溜了兩公分才停住。
全程十一秒。定位偏差目測兩公分左右。
。了通跑
。程流整完套這”好放——住抓——著夠——見看“了成完,下況情的預乾工人何任有沒在,器機材型鋁的扭扭歪歪台這上桌
。上oniudrA的錢塊十三塊一在跑序程,的拚材型鋁是構結,的拆標鼠是器感傳
。了通跑但
——來出蹦連接示提統係
】5+驗經礎基人器機業工【
】4+驗經程編言語C【
】3+驗經動驅服伺【
。來出彈著跟緊條四第,完看及得來沒還辰林
】2+驗經計設械機,3+驗經製控氣電:發觸勵獎同協能技跨【
。條五了刷性次一。條五
。上字數行一在釘力意注,板麵能技眼一了掃他
】)001/49(1VL程編CLP【
。點六差
。”目項訓實合綜“和”絡網與信通CLP“——碰沒還章兩後,了爛翻章八前。》門入程編CLP《本那上桌看頭轉他
。讀始開行一第章九第從,開翻
。驗校與發收的號信是還心核,子殼個了換——配匹率特波、配分址地、式格幀據數。承相脈一輯邏層底言語C的啃天幾這跟構結的棧議協,PD-SUBIFORP、UTR-SUBDOM、584SR。快得讀塊這議協信通
】1+驗經程編CLP【
。了59
案,目項訓實合綜章十第