當(dāng)代版木牛流馬?國(guó)外網(wǎng)友造出「會(huì)走路的桌子」,引百萬人圍觀
你想喝瓶啤酒,于是就把桌子叫了過來。這不是吃了菌子才有的場(chǎng)景,而是國(guó)外網(wǎng)友的一項(xiàng)發(fā)明,名叫 Carpentopod。
整個(gè)桌子有 12 條腿,里面內(nèi)置了電機(jī),是木工、電子和編程結(jié)合的產(chǎn)物。只要按下遙控器,桌子就會(huì)向你走來,像一個(gè)家用機(jī)器人一樣。
從圖上可以看出,Carpentopod 走起來非常平穩(wěn),這是它的腿部參數(shù)不斷「進(jìn)化」的結(jié)果。這個(gè)「進(jìn)化」過程在軟件的虛擬環(huán)境中進(jìn)行,數(shù)千個(gè)虛擬腿部變體在該環(huán)境中競(jìng)爭(zhēng),只有得分高的腿部變體才能混合「基因」。
如此精巧的結(jié)構(gòu)制作起來自然是非常不易。作者表示,「早在 2008 年,我就寫了一些有趣的軟件來生成各種優(yōu)化的步行機(jī)制。近年來,我掌握了一些電子和木工技能,于是能夠?qū)⑵渲幸环N機(jī)制變成一個(gè)真正的無線步行木制咖啡桌。」
這種機(jī)器人技術(shù)與木工的結(jié)合令人眼前一亮。作者 @Giliam de Carpentier 表示將參加近期的一個(gè)活動(dòng),屆時(shí)會(huì)做更多介紹。
這個(gè)咖啡桌在網(wǎng)上吸引了上百萬人的關(guān)注,很多人表示想要一個(gè)。
在一篇文章中,作者介紹了從設(shè)計(jì)到材料選擇,再到加工和裝配的全過程。其中包括使用數(shù)控機(jī)床加工竹板部件,還包括控制電機(jī)和 Arduino 系統(tǒng)以實(shí)現(xiàn)桌子的移動(dòng)功能。
文章鏈接:https://www.decarpentier.nl/carpentopod
設(shè)計(jì)新連桿
Carpentopod 腿部連桿是由作者編寫的軟件生成的。這個(gè)軟件讓數(shù)千個(gè)虛擬腿部變體進(jìn)行競(jìng)爭(zhēng),以此進(jìn)化。為了挑選出最佳的變體,每個(gè)變體都被賦予一個(gè)基于其行走速度、間隙和材料使用的「適應(yīng)度」分?jǐn)?shù)。在行走周期中最低的三分之一階段,作者額外獎(jiǎng)勵(lì)了那些腿尖能更水平和更平滑移動(dòng)的變體。這樣的設(shè)計(jì)有助于三條腿協(xié)同作用,以最大程度減少行走時(shí)的晃動(dòng)和足滑。
通過比較每種變體的適應(yīng)度分?jǐn)?shù),只有最優(yōu)秀的變體才能混合其基因(即腿部參數(shù)),創(chuàng)造出一代又一代的新變體。除了通過「自然選擇」混合基因外,作者還定期引入基因突變,以幫助發(fā)現(xiàn)新的解決方案并保持多樣性,直到找到最佳解決方案。作者用 C++ 編寫了包括運(yùn)動(dòng)學(xué)求解器在內(nèi)的所有程序,使得這個(gè)模擬每秒可以進(jìn)化數(shù)十代,讓人可以清晰地看到從初步設(shè)計(jì)到高度優(yōu)化設(shè)計(jì)的轉(zhuǎn)變。
上面的動(dòng)圖展示了 20 秒鐘的進(jìn)化過程。每幀顯示 5000 個(gè)「存活」的變體中的一個(gè)。同時(shí),視頻中疊加了所有 5000 個(gè)個(gè)體的腿尖軌跡,這些軌跡隨時(shí)間推移合并成一個(gè)紅、綠色光暈,最終收斂成一個(gè)單一的解決方案。作者最終選擇的腿部連桿,是通過運(yùn)行一個(gè)規(guī)模更大、時(shí)間更長(zhǎng)的模擬程序簡(jiǎn)單選出的。命名結(jié)合了古拉丁語和希臘語單詞:carpentum(一種有蓋的馬車,如下圖)和 pod(代表腳或有腿的)。
看過 Theo Jansen 鼓舞人心的 Strandbeest 雕塑的人可能都會(huì)發(fā)現(xiàn),他的雕塑的腿部連桿機(jī)構(gòu)與 Carpentopod 連桿機(jī)構(gòu)十分相似。但 Carpentopod 的連桿具有一套完全不同的組件比率,以及一個(gè)額外的關(guān)節(jié)點(diǎn)和一個(gè)進(jìn)化過的圓形腳趾直徑。這些額外的參數(shù)使得進(jìn)化過程能夠找到一種更緊湊、減少腳部滑動(dòng)的解決方案。
Strandbeests 是荷蘭動(dòng)感雕塑藝術(shù)家 Theo Jansen 發(fā)明的「風(fēng)力仿生獸」,依靠機(jī)械原理和自然風(fēng)力移動(dòng)前行,結(jié)構(gòu)巧妙之處在于合理的利用平衡性進(jìn)行物理變量的轉(zhuǎn)化,能源轉(zhuǎn)化率非常高。
腳部滑動(dòng)的原因是不同的腳趾著地的速度不完全一致,因此在實(shí)踐中會(huì)導(dǎo)致這些腿試圖相互減速。(不過,Strandbeest 的腿似乎通常都采用某種靈活 / 滾動(dòng)的腳趾,而不是剛性的腳趾,這可能在一定程度上有助于彌補(bǔ)這種影響)。下面的動(dòng)圖比較了兩種不同的設(shè)計(jì),包括它們對(duì)尺寸、重心和腳滑動(dòng) / 滑行的影響。
設(shè)計(jì)會(huì)走的桌子
多年來,上述成果只是一個(gè)興趣項(xiàng)目的有趣結(jié)果。但最近幾年,作者也對(duì)制作實(shí)物產(chǎn)生了興趣。他嘗試制造的第一件東西是之前版本連桿的一個(gè)微型模型,由于其對(duì)緊湊性的優(yōu)化較少,因此不適合成為最終的 Carpentopod 桌子。這只是為了測(cè)試他新開發(fā)的技能, 并在嘗試更大項(xiàng)目之前試用新的 CNC(數(shù)控機(jī)床)。
接下來,他決定制作一個(gè)可以行走的木制咖啡桌,因?yàn)樗J(rèn)為這既實(shí)用又具有美觀價(jià)值。由于 Carpentopod 連桿中的每個(gè)獨(dú)立腿部只占行走周期的三分之一,因此這個(gè)桌子本身需要十二條腿以保持穩(wěn)定。為了保證行走的平滑性,腿部組件也需要以亞毫米級(jí)的精度制作并維持這種狀態(tài)。這就是作者選擇用層壓竹板進(jìn)行 CNC 加工的原因,這種材料堅(jiān)固、自然、耐用且穩(wěn)定,非常適合將機(jī)械元素與有機(jī)風(fēng)格結(jié)合起來。
作者使用 Autodesk Fusion 360 設(shè)計(jì)了桌子的所有組件,這使他能夠在同一個(gè)軟件包中完成建模、測(cè)試、渲染和所有 CNC 的準(zhǔn)備工作。能夠在其行走周期的任何階段從任何角度實(shí)際查看完全組裝的模型,極大地方便了美學(xué)調(diào)整和確保所有間隙都恰到好處。
在一端的六條腿和另一端的六條腿之間,作者還留出了一個(gè)中空的「腹部」,用來放置電子設(shè)備、電機(jī)和電池。為了讓它看起來不那么棱角分明,他把框架和腹部設(shè)計(jì)成弧形,就像一個(gè)倒置的百寶箱。這可能是有些人說它看起來像 Terry Pratchett《碟形世界》(Discworld)小說中的「行李箱」(如下圖)的原因之一。
中央的腹部還能使所有支腿至少與中心保持一定距離,從而使所有支腿都能更有效地參與轉(zhuǎn)彎。每組六條腿都被設(shè)計(jì)成與自己的曲柄軸相連,由一個(gè)電機(jī)驅(qū)動(dòng)。這樣,它們只需要兩個(gè)單獨(dú)控制的電機(jī)就能像坦克一樣「驅(qū)動(dòng)」和轉(zhuǎn)動(dòng)桌子。
構(gòu)建過程
為了將 3D 設(shè)計(jì)實(shí)物化,作者盡可能多地使用 CNC。這不僅因?yàn)榫_度的需要,也因?yàn)檫@樣可以更容易地批量制造出十二個(gè)相同的木制部件。由于這只是一個(gè)興趣項(xiàng)目而不是生產(chǎn)線,所以作者決定使用他便宜的三軸 CNC 路由器親手制作所有東西。
三軸 CNC 只能從頂部去除材料。但是由于許多零件也需要從底部和 / 或側(cè)面移除材料,以制造更復(fù)雜的形狀和凹陷,作者將大部分腿部零件設(shè)計(jì)成由三片層壓竹子制成,他可以分別加工每層竹子,然后將其粘合在一起。
當(dāng)然,即使是單個(gè)部件也可能需要使用不同尺寸和形狀的切削工具多次過刀,并可能需要精確地翻轉(zhuǎn)以進(jìn)行雙面加工。但這正是數(shù)控加工的現(xiàn)實(shí) —— 如果你不想買更貴的五軸 CNC,也不想使用塑料進(jìn)行 3D 打印的話,這就是你必須面對(duì)的。
除了作者自己數(shù)控加工、拋光、上漆并用更多的滾珠軸承和鋼軸組裝的 100 多個(gè)竹制部件外,設(shè)計(jì)還要求制作兩個(gè)曲軸。他最終通過將 D 形軸和帶 D 形孔的旋轉(zhuǎn)偏心體錘在一起,精心地從普通鋁桿和鋁板中數(shù)控加工出這些部件。
桌子的弧形「腹部門」是通過在同一層壓竹中精細(xì)地切割制成的,然后蒸汽處理使其更加柔韌,最后在彎曲夾具中干燥,以賦予其新的形狀。然后,這些部分被粘貼在兩個(gè)帶有嵌入式磁鐵的隱形鉸鏈肋上,使得門易于打開和關(guān)閉。最后,他還焊接了一件與之高度相同的電視柜,并將一塊芒果木加工成兩件家具的桌板,有效地將它們組合成一套。
讓桌子動(dòng)起來
兩個(gè)六腿部分應(yīng)由各自的電機(jī)驅(qū)動(dòng)。但實(shí)際上,是每個(gè)部分的單個(gè)曲軸協(xié)調(diào)腿部的相對(duì)運(yùn)動(dòng)。在下圖中可以看到,作者只是簡(jiǎn)單地推動(dòng)一個(gè)沒有電機(jī)的部分向前移動(dòng),該部分就可以表現(xiàn)得像一個(gè)輪子。
圖中還展示了腳趾是如何輕觸地面(由黑線表示),但并不試圖穿透它的。這意味著,桌子在行走時(shí)不會(huì)有太多的「顛簸」。當(dāng)然,最小化顛簸也是連桿在進(jìn)化過程中的適應(yīng)度指標(biāo)之一。
為了讓它自行移動(dòng),作者訂購了兩個(gè)便宜的齒輪驅(qū)動(dòng)的 24V 無刷電機(jī),這類電機(jī)通常用于自動(dòng)窗簾,輸出最大 1.5 Nm @ 130 RPM。它們內(nèi)置的電子設(shè)備還允許使用額外的 PWM 信號(hào)線直接控制速度。遺憾的是,當(dāng)嘗試讓它們低速運(yùn)行時(shí),電機(jī)幾乎立即進(jìn)入了一種因溫度過高而自動(dòng)持續(xù)幾秒的關(guān)機(jī)保護(hù)模式,即使僅在極小的負(fù)載下也是如此。幸運(yùn)的是,將 PWM 信號(hào)保持在 100%,并直接改變電壓,情況就好多了。如下圖所示,作者直接將可調(diào)試的實(shí)驗(yàn)室電源連接到其中一個(gè)六腿部分的電機(jī)上。
為了能自動(dòng)控制電機(jī)電壓,作者購買了兩個(gè)便宜的升降壓轉(zhuǎn)換器模塊,這些模塊可以將任何電池的電壓轉(zhuǎn)換成 0 至 24 伏之間的任意電壓。然后,他對(duì)這些模塊進(jìn)行了改造,使它們的輸出電壓可以直接通過一個(gè)來自改造后的 Arduino Nano 微處理器板的快速 PWM 信號(hào)來設(shè)定。這些電壓轉(zhuǎn)換模塊還提供了一個(gè)可調(diào)的最大電流設(shè)定功能,這使他能夠?qū)γ總€(gè)電機(jī)的最大堵轉(zhuǎn)扭矩進(jìn)行控制,從而確保了操作的安全性,尤其是保護(hù)了手指。
接下來,他將露出的霍爾效應(yīng)電機(jī)傳感器的信號(hào)接入了 Arduino 板,并用 C 語言編寫了一套軟件來實(shí)現(xiàn)自己的閉環(huán)電機(jī)控制系統(tǒng)。這樣一來,電機(jī)現(xiàn)在能夠獨(dú)立且精確地控制到任何可能達(dá)到的速度和位置,而且這種控制不受負(fù)載的影響。
在最后一步,作者將一個(gè)藍(lán)牙模塊連接到 Arduino 上,并編寫了一些 C 語言代碼,使其能夠連接并解析來自改造的無線 Nunchuck 操縱桿的數(shù)據(jù)。在安裝了一個(gè) 14.8V 的鋰電池之后,桌子就可以在客廳里任意走動(dòng)了,作者通過一個(gè)小型遙控器控制桌子。
最后,作者公開了他的連桿圖紙,想要復(fù)制該項(xiàng)目的讀者可以參考。