基於張拉整體(Tensegrity)結構的無輪式翻滾探測器運動效能分析
結論:可行,建議執行。 用 Google DeepMind 的 MuJoCo 物理引擎建立「六桿二十面體張拉整體機器人」,靠依序收縮 24 條鋼索讓重心移出支撐三角形而翻滾。先導模擬(45 組條件、每組 6 步)已跑通:平地 6 步可前進 1.3–2.9 m;同時收縮兩條相鄰鋼索並維持收縮,最陡能爬上 15°;20° 時所有策略都會滑落或滾落。只需要一台電腦,另加 NT$300–800 做實體模型驗證。
題目與研究問題
研究動機
火星車、月球車都靠輪子,但輪子怕沙坑、怕石頭、怕從高處掉下來。NASA Ames 研究中心的 SUPERball 計畫提出另一種想法:用「張拉整體」結構做探測器——它由硬桿和繃緊的鋼索組成,掉下來時整個結構會變形吸收衝擊,著地後再收縮鋼索讓自己「滾」著走。沒有輪子、沒有關節,結構本身就是身體也是腳。
我們想問:這種滾動的機器人,到底該怎麼「拉線」才能走得遠?碰到斜坡時,鋼索的彈性與拉線順序又會怎麼影響它爬不爬得上去?
研究目的
- 用 MuJoCo 建立六桿二十面體張拉整體機器人的物理模型,並驗證它在平地上能靜止平衡。
- 找出單條鋼索收縮造成的翻滾方向與距離,整理成「鋼索—位移地圖」。
- 用程式自動搜尋步態時序(Gait Sequence),比較「單索放鬆式」「單索保持式」「雙索保持式」三種策略。
- 探討坡度(0°–20°)與鋼索彈性係數(100–800 N/m)對爬坡距離的影響,找出最大可爬坡度。
- 製作吸管(或竹筷)+橡皮筋的實體模型,驗證模擬找到的拉線順序在真實世界是否也會朝同方向翻滾。
創新點
結構新穎
張拉整體機器人是近十年軟體機器人的熱門題目,國中科展少見;它「極度耐摔」的特性和太空探測直接相關。
方法新穎
用研究級物理引擎 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 想把它當成「不需要降落傘與氣囊」的著陸器的原因。
翻滾力學模型
鋼索:只拉不推的彈簧
k 是彈性係數(N/m),L 是鋼索目前長度,L0 是「自然長度」。收縮鋼索=把 L0 調短:L0′ = (1 − r) · L0,r 是收縮比。
翻滾條件:重心離開支撐三角形
機器人靠底面三個節點站著。從上往下看,只要重心的投影還在三角形裡面就不會倒;收縮鋼索讓結構變形,把重心推出三角形的某一條邊,它就會以那條邊為軸翻過去,換下一個面著地——這就是一「步」。
斜坡上更難:重力會把重心往下坡拉
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 座標
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 使用範圍
說明書章節規畫
依全國中小學科展作品說明書格式(正文建議 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 |
| 彈簧秤 | 量橡皮筋的彈性係數,對應模擬的 k | 0–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 使用說明)
- 製作展板與口頭報告,演練評審問答
參考文獻(學生須逐筆查證)
- 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.
- Skelton, R. E., & de Oliveira, M. C. (2009). Tensegrity Systems. Springer.
- 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.
- 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.
- Koizumi, Y., Shibata, M., & Hirai, S. (2012). Rolling tensegrity driven by pneumatic soft actuators. IEEE International Conference on Robotics and Automation (ICRA), 1988–1993.
- 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).
- Google DeepMind. MuJoCo Documentation. https://mujoco.readthedocs.io/