這個項目是由加泰羅尼亞高級建筑學院(IAAC)開發(fā)的,作為緊急未來設計碩士(MDEF)項目的一部分。
1. 介紹
在《Microchallenge II》中,我們的任務是探索智能的概念,即由智能系統(tǒng)處理輸入并生成輸出。我們的項目通過研究螞蟻的運動模式和交流,將人工智能與生物智能相結合。我們探索兩種智能如何協(xié)作和相互告知,使用數(shù)字制造作為可視化的手段。
通過使用機器學習來分析螞蟻的運動和相互作用,我們影響粘土3D打印的g代碼生成。結果是一個與自然共同設計的對象,回歸到螞蟻的運動模式的啟發(fā)結構。
2. 概念和系統(tǒng)圖
我們的系統(tǒng)捕捉螞蟻的運動并將其轉化為可打印的形式,遵循以下關鍵步驟:
?跟蹤螞蟻的運動-通過視頻分析記錄螞蟻的運動。
?Python中的圖像映射-使用OpenCV將運動數(shù)據(jù)覆蓋到單個圖像中。
?在Grasshopper (Firefly + Rhino)中生成3D表面-將圖像轉換為3D表面。
?G代碼生成在Grasshopper -準備模型粘土3D打印。
?粘土印刷&回歸螞蟻-制作結構并將其放回螞蟻棲息的環(huán)境中。
我們設計的主要原則是保留螞蟻使用的路徑,創(chuàng)造自由流動的區(qū)域,同時通過負空間定義邊界,確保它們的運動不受限制。
3. 早期的實驗
最初,我們探索了P5.js來映射螞蟻的運動,這導致了它們軌跡的點云表示。我們還嘗試在Grasshopper中使用基于圖像的映射進行直接處理。
從p5 .js生成的圖像中,我們使用Rhino 3D和Grasshopper來創(chuàng)建所需的區(qū)域,但是處理點云的復雜性使其不切實際。這促使我們探索其他方法,最終轉向Python和OpenCV。
4. Python和OpenCV的最終映射
我們在Python中實現(xiàn)了計算機視覺(OpenCV)(通過Visual Studio Code和Terminal執(zhí)行)來分析螞蟻的視頻片段。我們的工作流程:
?輸入視頻-兩只螞蟻移動的記錄。
?處理-識別螞蟻的黑暗區(qū)域,提取他們的質心,并標記他們的運動。
?輸出圖像-疊加幀以捕獲其連續(xù)運動。
初始輸出-稀疏點表示運動。
熱圖(可以有未來的應用)-顯示頻率和停留時間。
最終覆蓋-通過高斯濾波實現(xiàn)的連續(xù)統(tǒng)一區(qū)域,將單個軌道合并成一個有凝聚力的形狀。
這個最終輸出作為螞蟻運動的理想映射,可以在Grasshopper中用于表面生成。
5. 將Python集成到Grasshopper中
我們的目標是使管道自動化,消除手動圖像處理的需要。我們嘗試在Grasshopper中直接運行Python,遇到了多種挑戰(zhàn):
Rhino 7問題:
Rhino 7中的Python腳本不允許執(zhí)行外部庫(如OpenCV)。
Rhino 7的Python解釋器使用一個單獨的目錄,需要在其特定的終端中安裝依賴項。
遠程Python插件:
我們探索了Anaconda集成以調用外部Python腳本。
然而,在Grasshopper中仍然無法訪問OpenCV。
Rhino 8的改進:
Rhino 8中的Python腳本允許我們執(zhí)行OpenCV。我們設法在Grasshopper中安裝了所有的庫并運行腳本,但下一步是將這些點轉移到Rhino中,而不是OpenCV預覽本身。由于時間原因,我們決定將原型分成兩步:首先,Python單獨運行,生成圖像,然后在Grasshopper中處理圖像。
6. 從位圖到輪廓
使用Firefly for Grasshopper,我們處理了python生成的位圖:
?反轉區(qū)域以突出顯示路徑。
?根據(jù)亮度值生成基于高度的網格。
結果是一個懸崖狀的地形,白色的區(qū)域對應于凸起的表面,留下螞蟻的路徑作為低地。
然而,由于位圖是基于像素的,而不是矢量化的,網格有過多的面,使其不切實際。為了解決這個問題:
?我們使用高斯模糊平滑過渡。
?我們用XY平面切割網格,提取干凈的輪廓線。
7. 生成G代碼的最終表面
為了生成用于粘土3D打印的g代碼,我們從預構建的Grasshopper定義開始,該定義將表面轉換為可打印的工具路徑。
但是,Grasshopper沒有將輪廓擠壓識別為有效的表面,因此我們應用了以下修復:
簡化輪廓
?提取的曲線包含的點太多,處理困難。
?使用重建曲線,我們減少不必要的點,同時保持形狀的保真度。
表面識別問題
?Grasshopper最初沒能識別出擠壓出來的形狀是一個表面。
?簡化后,它成功地識別了單獨的表面。
合并單獨的表面(我們探索了兩種解決方案)
?為結構的完整性創(chuàng)造了堅實的基礎。
?添加外部邊界以統(tǒng)一形狀。
8. 打印測試
9. 原型
?第一次混合:500g粘土+ 30g水+ 5g + 5g
?第二次混合:第一次混合+ 3g
?第三種混合:500g粘土+ 34g水+ 5g + 3g
?第四次混合:第三次混合+ 8g
?第五次混合:第3次混合+ 5g(最后一次)
最后的原型
本文編譯自hackster.io