國中科展 · 生活與應用科學科(一)· 研究規畫書 · 2026-11-10

基於張拉整體(Tensegrity)結構的無輪式翻滾探測器運動效能分析

結論:可行,建議執行。 用 Google DeepMind 的 MuJoCo 物理引擎建立「六桿二十面體張拉整體機器人」,靠依序收縮 24 條鋼索讓重心移出支撐三角形而翻滾。先導模擬(45 組條件、每組 6 步)已跑通:平地 6 步可前進 1.3–2.9 m;同時收縮兩條相鄰鋼索並維持收縮,最陡能爬上 15°;20° 時所有策略都會滑落或滾落。只需要一台電腦,另加 NT$300–800 做實體模型驗證。

題目新穎度:高(NASA SUPERball 同類結構) 模擬程式:已完成原型、8 項測試通過 先導數據:已產出 45 組 實體模型驗證:待 12 月製作 模擬與真實差距:需討論 參考文獻:學生須逐筆查證
6 桿 · 24 索12 個節點的二十面體張拉整體
15°先導模擬最陡可爬坡度(k = 800 N/m,雙索保持)
2.85 m5° 坡 6 步最佳淨爬升
8 項實驗E1–E6 模擬主線,E7–E8 選做
題目與研究問題

研究動機

火星車、月球車都靠輪子,但輪子怕沙坑、怕石頭、怕從高處掉下來。NASA Ames 研究中心的 SUPERball 計畫提出另一種想法:用「張拉整體」結構做探測器——它由硬桿和繃緊的鋼索組成,掉下來時整個結構會變形吸收衝擊,著地後再收縮鋼索讓自己「滾」著走。沒有輪子、沒有關節,結構本身就是身體也是腳。

我們想問:這種滾動的機器人,到底該怎麼「拉線」才能走得遠?碰到斜坡時,鋼索的彈性與拉線順序又會怎麼影響它爬不爬得上去?

研究目的

  1. 用 MuJoCo 建立六桿二十面體張拉整體機器人的物理模型,並驗證它在平地上能靜止平衡。
  2. 找出單條鋼索收縮造成的翻滾方向與距離,整理成「鋼索—位移地圖」。
  3. 用程式自動搜尋步態時序(Gait Sequence),比較「單索放鬆式」「單索保持式」「雙索保持式」三種策略。
  4. 探討坡度(0°–20°)與鋼索彈性係數(100–800 N/m)對爬坡距離的影響,找出最大可爬坡度。
  5. 製作吸管(或竹筷)+橡皮筋的實體模型,驗證模擬找到的拉線順序在真實世界是否也會朝同方向翻滾。

創新點

結構新穎

張拉整體機器人是近十年軟體機器人的熱門題目,國中科展少見;它「極度耐摔」的特性和太空探測直接相關。

方法新穎

用研究級物理引擎 MuJoCo(Google DeepMind 開源)做「數位雙生」,可大量、可重複、零成本地測試上千種拉線組合,再用實體模型抽樣驗證。

張拉整體原理

張拉整體(Tensegrity = Tension + Integrity)是建築師富勒(Buckminster Fuller)和雕塑家斯奈爾森(Kenneth Snelson)提出的結構:硬桿只受壓力、鋼索只受拉力,硬桿彼此不相碰,整體靠鋼索的預拉力撐住形狀。

六桿二十面體

6 根桿分成 3 對,每對互相平行,分別沿 x、y、z 三個方向。12 個桿端剛好落在正二十面體的 12 個頂點上。

正二十面體有 30 條邊;拿掉 6 條「平行桿之間」的邊,剩下的 24 條就是鋼索,每個節點連 4 條。

20 個三角形面中,8 個是封閉面(三邊都是鋼索),12 個是開放面(只有兩邊是鋼索)。機器人靜止時,就是用某一個面的 3 個節點貼地。

橘色粗線=硬桿(受壓),藍色細線=鋼索(受拉)。圖由程式依實際節點座標投影畫出。

為什麼耐摔

衝擊力會沿著鋼索分散到整個結構,沒有任何一根桿需要承受彎曲;鋼索的彈性像避震器把能量吸收掉。這就是 NASA 想把它當成「不需要降落傘與氣囊」的著陸器的原因。

翻滾力學模型

鋼索:只拉不推的彈簧

F = k · (L − L0) 當 L > L0; F = 0 當 L ≤ L0

k 是彈性係數(N/m),L 是鋼索目前長度,L0 是「自然長度」。收縮鋼索=把 L0 調短:L0′ = (1 − r) · L0,r 是收縮比。

翻滾條件:重心離開支撐三角形

機器人靠底面三個節點站著。從上往下看,只要重心的投影還在三角形裡面就不會倒;收縮鋼索讓結構變形,把重心推出三角形的某一條邊,它就會以那條邊為軸翻過去,換下一個面著地——這就是一「步」。

斜坡上更難:重力會把重心往下坡拉

往上坡翻滾的條件: d移 > d邊 + h · tan θ

d移=鋼索收縮讓重心往上坡移動的距離,d邊=重心投影到上坡那條邊的距離,h=重心高度,θ=坡度。坡越陡,重力額外造成的「下坡偏移」h·tanθ 越大,所以需要更大的變形才翻得過去。另外,若 tan θ > μ(摩擦係數),整台機器人會直接滑下去。

模型假設與誤差來源

  • 桿是剛體、不會彎;鋼索沒有質量。
  • 斜坡用「傾斜重力方向」模擬(地面不動、重力斜過來),在物理上與真的斜坡等價。
  • 桿與桿之間不計算碰撞(真實結構中桿也不應相碰),只計算桿與地面的碰撞。
  • 鋼索收縮瞬間完成到目標長度(實際馬達有速度限制)。
MuJoCo 模型建置

MuJoCo(Multi-Joint dynamics with Contact)是 Google DeepMind 維護的開源物理引擎,機器人研究常用。本研究使用 Python 套件 mujoco(目前 4.0.0)。

真實結構MuJoCo 元素設定
硬桿 ×6<body> + <freejoint/> + capsule geom長 1.0 m、半徑 2 cm、質量 0.5 kg
桿端節點 ×12<site>正二十面體頂點 (0, ±1, ±φ) 的循環排列,φ=黃金比例
鋼索 ×24<tendon><spatial>連接兩個 site,阻尼 5
鋼索的馬達<position tendon=… kp=k>forcerange="-200 0":只能拉、不能推
收縮指令mjData.ctrl[i]=第 i 條鋼索的自然長度 L0,調小就是收縮
斜坡<option gravity=…>(−9.81 sinθ, 0, −9.81 cosθ),上坡方向= +x

關鍵程式片段

# 收縮第 5、12 條鋼索 40%,維持 1 秒,量重心往上坡移動多少
robot = Robot(slope_deg=10, stiffness=300)
robot.data.ctrl[:] = robot.nominal_rest            # 先全部回到預拉長度
robot.data.ctrl[[5, 12]] = robot.nominal_rest[[5, 12]] * (1 - 0.4)
robot.run(1.0)                                     # mj_step 500 次(每次 2 ms)
print(robot.com()[0])                              # 重心 x 座標
踩過的坑:鋼索收太緊時桿會互相穿過、模擬爆掉(MuJoCo 出現 NaN 後會偷偷把模擬重設回原點,數據會變得很怪)。解法:改用 implicitfast 積分器、關閉桿與桿的碰撞,並在程式裡讀 mjWARN_BADQACC 計數,爆掉的試驗直接判為無效。
研究變因

操縱變因

  • 坡度 θ:0°、5°、10°、15°、20°
  • 鋼索彈性係數 k:100、300、800 N/m
  • 收縮策略:單索放鬆式/單索保持式/雙索保持式
  • 收縮比 r:0.2–0.6(E4)
  • 摩擦係數 μ:0.4、0.7、1.0(E6)

應變變因

  • 6 步後重心沿上坡方向的淨位移(m)
  • 成功率:淨位移 > 0 的比例
  • 最大可爬坡度 θmax
  • 每公尺消耗的鋼索功(E8 選做)

控制變因

桿長 1.0 m、桿質量 0.5 kg、預拉比 0.9(自然長度=幾何長度 × 0.9)、鋼索最大拉力 200 N、模擬時間步長 2 ms、每步收縮 1 秒、每次試驗 6 步、起始姿勢相同。

先導模擬結果(已完成)

以「貪婪搜尋」產生步態:每一步都從同一個狀態試遍所有候選動作,挑讓重心最往上坡移動的那個執行。下圖是 6 步後的淨位移(綠=往上爬、紅=滑落)。完整動畫可在模擬控制台重播。

初步發現

  • 雙索保持式最會爬坡:10° 時 k = 300、800 都能爬 1.8 m;單索策略幾乎原地踏步。
  • 鋼索太軟爬不動,但也不容易滾下去:k = 100 在 10°–20° 都幾乎不動(−0.66 到 +0.12 m)——結構太軟,收縮後只是變形,重心推不出支撐面。
  • 鋼索硬、坡又陡時最危險:20° 時 k = 300 的放鬆式滑落 25 m。放鬆鋼索的瞬間結構回彈,反而把自己彈下坡。
  • 臨界坡度約在 15°:只有 k = 800 雙索保持式還能前進(+0.51 m)。
先導數據只跑了一個起始姿勢、一次搜尋。正式實驗要加入不同起始面與多次重複,才能計算平均與標準差,結論才站得住。
實驗總表

編號實驗做法預期產出類型
E1單條鋼索反應地圖平地,24 條鋼索各自收縮 40%,量重心位移方向與距離24 支箭頭的俯視圖;觀察結構對稱性(成對出現相同大小)模擬
E2步態搜尋方法比較平地,比較隨機步態、人工設計步態、貪婪搜尋步態各 10 步前進距離長條圖;證明程式搜尋優於隨機模擬
E3坡度 × 彈性係數(主實驗)θ = 0–20°、k = 100/300/800,每組 5 種起始面重複熱度圖、θmax 對 k 的折線圖模擬
E4收縮比掃描10° 坡、k = 300,r = 0.2、0.3、0.4、0.5、0.6找出「縮越多越好」是否成立,或有最佳值模擬
E5收縮策略比較單索放鬆、單索保持、雙索保持(相鄰鋼索 72 組)三策略在各坡度的成功率模擬
E6地面摩擦係數μ = 0.4、0.7、1.0(模擬沙地、泥土、橡膠)區分「滑下去」與「滾下去」兩種失敗模擬
E7實體模型驗證吸管/竹筷+橡皮筋做六桿模型,手動依 E1 編號拉線,錄影記錄翻滾方向模擬與實體翻滾方向一致率實體
E8能量效率(選做)累加 Σ F·ΔL 算出每公尺的鋼索功「走得遠」與「省力」的取捨選做
Claude Code 的角色

Claude Code 是 AI 程式助理。本研究中它負責寫程式的苦工:產生 MuJoCo 模型檔、寫動態控制 mjData.ctrl 的迴圈、平行跑大量模擬、輸出數據與網站。

交給 AI

  • 二十面體座標與 24 條鋼索的自動配對
  • 貪婪搜尋步態的迴圈與狀態存取(mj_getState/mj_setState)
  • 多核心平行運算 45 組條件(約 17 秒)
  • 資料轉成 JSON、畫網站圖表

學生自己做

  • 提出問題、決定要測哪些變因
  • 推導翻滾條件 d移 > d邊 + h·tanθ
  • 解讀數據:為什麼軟鋼索爬不動?
  • 製作實體模型、錄影、比對
  • 撰寫說明書並如實揭露 AI 使用範圍
科展評審會問「這是你做的嗎?」。建議保留與 AI 的對話紀錄,並在說明書「研究過程」中寫一小節說明哪些程式由 AI 協助、學生如何驗證程式正確(例如:測試確認每個節點剛好連 4 條鋼索、鋼索只拉不推)。
說明書章節規畫

依全國中小學科展作品說明書格式(正文建議 30 頁以內,實際頁數依當屆簡章為準)。

章節內容重點對應素材
摘要300 字內:問題、方法(MuJoCo + 實體)、最大可爬坡度、最佳策略E3、E5 結論
壹、前言(一)研究動機:火星車的輪子困境、NASA SUPERball
(二)研究目的:上方 5 點
(三)文獻探討:張拉整體定義、六桿結構、已知滾動方法
參考文獻 1–6
貳、研究設備及器材電腦、Python、MuJoCo 4.0、自製程式;實體模型材料預算表
參、研究過程或方法研究架構圖;模型建立(桿、鋼索、只拉不推);翻滾力學推導;貪婪搜尋流程圖;變因表;AI 使用說明本網站「原理」「MuJoCo」「變因」
肆、研究結果E1 箭頭圖、E2 長條圖、E3 熱度圖、E4 折線圖、E5 成功率表、E6、E7 照片與一致率控制台截圖、results/*.json
伍、討論(一)為什麼雙索保持式最好?(二)軟鋼索的兩面性(三)放鬆回彈造成滑落(四)模擬與真實的差距(五)研究限制力學模型
陸、結論條列回答每個研究目的;未來:馬達實體機、強化學習步態—
柒、參考資料APA 格式,期刊論文+官方文件參考文獻
時程

縣市科展初賽多在 3–4 月,實際日期以當年度各縣市簡章為準。

器材與預算
項目用途費用(NT$)
電腦(現有)跑 MuJoCo 模擬;一般筆電即可,45 組約 2 分鐘單核0
Python、MuJoCo、程式開源免費(Apache 2.0)0
粗吸管或竹筷 ×12、橡皮筋 ×50、細繩、迴紋針E7 實體六桿模型(做 2 個:硬索版、軟索版)150–300
木板+量角器+砂紙/毛氈可調坡度斜面、改變摩擦150–300
彈簧秤量橡皮筋的彈性係數,對應模擬的 k0–200
合計300–800
風險與備案
風險程度備案
評審質疑「只有模擬、沒有實作」中E7 實體模型+影片;用彈簧秤量橡皮筋 k,讓模擬參數有實測依據
模擬數值爆掉(NaN)低(已處理)implicitfast 積分器、偵測警告、無效試驗剔除並記錄次數
貪婪搜尋只看一步,可能錯過更好步態中討論中說明;選做兩步前瞻搜尋做比較
結果受起始姿勢影響中E3 每組 5 種起始面重複,報告平均 ± 標準差
撞題低12 月前查臺灣科展作品資料庫(關鍵字:張拉整體、tensegrity、翻滾機器人)
應用場域

行星探測

直接從軌道丟下、不需降落傘與氣囊,落地後滾動探勘(NASA SUPERball 的目標)。

災害搜救

從無人機投放到倒塌建築、土石流現場,摔不壞、可翻越瓦礫。

教育與建築

張拉整體也用於橋樑、穹頂與可展開結構;模擬方法可推廣到結構教學。

軟體機器人

剛柔並濟的身體是軟體機器人的研究主流,本研究的步態搜尋方法可用於其他形狀。

網站與部署
網址內容
/本規畫書
/app/模擬控制台:選坡度、彈性係數、策略,3D 重播翻滾過程與每步拉了哪條鋼索
/code/Python 原始碼(瀏覽器直接看)
/downloads/研究規畫書 Word 檔、程式壓縮檔

部署在 Contabo + Coolify,GitHub push 後自動重新部署。本機執行:

cd code
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/python -m pytest -q                # 8 passed
.venv/bin/python experiments/run_pilot.py    # 重跑先導模擬,輸出 results/pilot.json
行動清單

  • 安裝 Python 與 MuJoCo,跑通 pytest(8 passed)
  • 打開控制台,看懂 3D 重播中每一步是哪條鋼索在收縮
  • 查臺灣科展作品資料庫,確認沒有撞題
  • 逐筆查證參考文獻(作者、年份、期刊)
  • 完成 E1 單條鋼索反應地圖
  • 完成 E2 步態搜尋方法比較(加入隨機與人工步態)
  • 完成 E3 主實驗(加入 5 種起始面重複)
  • 完成 E4 收縮比、E5 策略、E6 摩擦
  • 製作實體模型、用彈簧秤量橡皮筋 k
  • 完成 E7 實體驗證並錄影
  • 自己推導並寫出翻滾條件公式
  • 撰寫說明書初稿(含 AI 使用說明)
  • 製作展板與口頭報告,演練評審問答
參考文獻(學生須逐筆查證)
  1. Todorov, E., Erez, T., & Tassa, Y. (2012). MuJoCo: A physics engine for model-based control. IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 5026–5033.
  2. Skelton, R. E., & de Oliveira, M. C. (2009). Tensegrity Systems. Springer.
  3. SunSpiral, V., Gorospe, G., Bruce, J., Iscen, A., Korbel, G., Milam, S., Agogino, A., & Atkinson, D. (2013). Tensegrity based probes for planetary exploration: Entry, descent and landing (EDL) and surface mobility analysis. International Journal of Planetary Probes.
  4. Bruce, J., Sabelhaus, A. P., Chen, Y., Lu, D., Morse, K., Milam, S., Caluwaerts, K., Agogino, A. M., & SunSpiral, V. (2014). SUPERball: Exploring tensegrities for planetary probes. i-SAIRAS 2014.
  5. Koizumi, Y., Shibata, M., & Hirai, S. (2012). Rolling tensegrity driven by pneumatic soft actuators. IEEE International Conference on Robotics and Automation (ICRA), 1988–1993.
  6. Kim, K., Agogino, A. K., Moon, D., Taneja, L., Toghyan, A., Dehghani, B., SunSpiral, V., & Agogino, A. M. (2014). Rapid prototyping design and control of tensegrity soft robot for locomotion. IEEE International Conference on Robotics and Biomimetics (ROBIO).
  7. Google DeepMind. MuJoCo Documentation. https://mujoco.readthedocs.io/