共通:機制與方法論
這一區的 23 篇在 5.1 與 6.0.1 上都成立——講的是機制怎麼運作、參數為什麼那樣排序、實驗怎麼設計才算數,而不是某一版的 API 長相。各篇內文標明實測所用的版本與環境;凡是只在單一版本成立的操作細節,已經移到 5.1 或 6.0.1 區。
起步:把模擬跑起來
| # |
主題 |
一句話 |
| 01 |
安裝與執行模式 |
GUI / headless / streaming 是同一核心的三種前端;版本×驅動相容性、Python 環境隔離 |
| 02 |
不碰 UI:用 Python 操作 |
--exec 啟動腳本、ScriptNode、UDP 遠端命令通道三層做法 |
| 03 |
模型格式與匯入 |
一切都先轉 USD:CAD/URDF 轉換流程、依賴解析、資產授權 |
| 04 |
建立物理世界 |
PLAYING 才有物理;虛擬世界關節建模法;teleport vs drive;互斥的控制路徑 |
| 25 |
官方資產的預先下載與離線佈署 |
場域主機不能對外時怎麼辦:四條對外連線各自的替代方案;資產包分片與 MD5;檔名帶修訂號而目錄名不帶;ISAACSIM_ASSET_ROOT 蓋過命令列;離線失敗會表現成 ModuleNotFoundError |
接進外部系統
| # |
主題 |
一句話 |
| 05 |
ROS2 橋接 |
官方 bridge 機制;headless 下 OmniGraph 不 tick 的實案與 UDP 解耦架構 |
| 06 |
WebRTC 串流 |
單 client 限制與 relay 分流架構;兩個「症狀騙人」的排錯實例 |
| 12 |
長跑維運 |
重啟造成的兩份狀態分歧(表現形式是「成功」)、看門狗分層、串流靜默卡死偵測、三個殼層陷阱 |
物理:引擎怎麼算,場景怎麼搭
| # |
主題 |
一句話 |
| 09 |
物理模擬基礎 |
timestep/substep、contact/rest offset、CCD、joint drive PD 公式、PGS/TGS solver、kinematic target vs teleport、reset 語意——接進穿模/暴走/reset 三個實戰案例 |
| 10 |
場景資產的物理結構 |
剛體與碰撞為什麼一定要分層、質量比是隱藏參數、物理材質綁定(ComputeBoundMaterial 幾乎不會回 None)、執行期補綁的三個邊界 |
| 13 |
接觸與抓握的第一性原理 |
Signorini 互補條件 + 摩擦錐推出「μ 是乘在一個可能為零的量上」;碰撞近似是有損編碼、凸包填實凹特徵是定義的後果;調參順序為何必然是幾何→質量→offset→摩擦;為什麼模擬器永遠不報錯 |
| 26 |
從規格表到會動的叉車 |
VDI 2198 欄位逐欄對到 USD 屬性與 prim 層級;軸荷推質心、牽引力乘輪半徑才是力矩;articulation 的兩條建法與四個不報錯的坑(body0/body1 順序、閉合運動鏈、零質量、散裝 joint) |
夾不住、叉不起來、東西在載具上滑掉——這類問題最常見的處理順序是先調摩擦係數,而 13 篇要說明的是這個順序在相當多情況下從一開始就錯了,錯得可以從接觸力學的定義直接推出來,不必靠試誤。
資產與幾何:數字都對,件還是插不進去
| # |
主題 |
一句話 |
| 18 |
建場域時,物理參數要去哪裡找 |
PhysX 對未授權質量的預設是「網格體積 × 1000 kg/m³(水)」——鋼構件因此輕 7.9 倍且不會有任何警告;四種來源的優先順序與盲點;規格書公布的是載重能力不是自重;查不到時怎麼估 |
| 21 |
CAD 資產的判讀與轉換 |
同一物件在資產庫常有三份而哪份能用不寫在檔名上;不開 CAD 軟體判讀 IGES;stage.Traverse() 對 instanced 資產回 0 mesh;驗證三層與三個「看起來合理但錯誤」的陷阱 |
| 22 |
幾何的量測紀律 |
決定成敗的是姿態掃過的垂直包絡而不是件的厚度;prim 原點不是功能面;七種不會報錯的錯誤查法;驗證用行為不用回讀 |
實驗、工程紀律與控制
| # |
主題 |
一句話 |
| 19 |
調參實驗的方法論 |
極端值正對照(旋鈕接上了嗎)、耦合參數等比例動、二元判準的統計陷阱與連續量出路、逐輪交錯 A/B、每輪閘門、間歇性問題的宣告門檻 |
| 20 |
用 Claude Code 跑調參的工作法 |
agent 不是常駐進程 → 兩層監看(安靜≠順利);批次腳本自己守門;模型成本分工;「固定參數重試 N 次不是實驗」;長時間工具要冪等 |
| 23 |
物理模擬不可以偷懶 |
繞過物理的每個捷徑,症狀不會消失、只會搬到一個沒人會聯想到成因的地方;算數量級再決定要不要調參;捷徑的前提會過期而捷徑不會自己失效 |
| 24 |
把「會瞬移的底盤」換成「真的有輪子的車」 |
位置控制底盤與輪系底盤是兩個系統,中間有一條順序不能顛倒的前提鏈,而每一環沒滿足時的症狀都不指向那一環;車重到不了輪子的三個成因、轉向符號用資料驗、追蹤參考點要是不側滑的固定軸、pure pursuit 三前提 |
| 27 |
失效模式分類學 |
把「東西壞了」變成可歸因的類別:一個 bit 換不到歸因(32 輪裡 12 輪根本不是物理失敗);判準要標門檻出處;待判桶是分類器的自我檢驗;只看失敗當下的窗口不掃全 log;x 與 z 分開判會把兩種病混成一類;⚠ 驗法要有鑑別力——問「假說為假的世界裡這個觀測會不會也長成這樣」;分好類才算得出「消除滑移只解決 7/13」 |
| 28 |
誤差累積與「補償反而有害」 |
誤差在載運途中被注入、車一停被靜摩擦凍結(放貨九步只動 0.3°);容差 ÷ 單趟誤差 算得出撐幾趟;⚠ 補償被執行了(增益 0.86)卻讓事情更糟——0° 成功、−4°/−8° 全部留在齒上;歪 4° 換來 71 mm 額外包絡而餘裕只有 15 mm;相對角與世界角是兩件事;正解是截斷傳遞而不是修正誤差;推翻斷言前先算新條件往哪個方向推 |
| 29 |
長跑才會浮現的兩件事 |
PhysX 錯誤上限預設 1000,填滿它的是無害的 API 警告(951 筆佔 86%);⚠ 物理死了而容器/log/探針/畫面全部正常,唯一有鑑別力的是模擬時鐘有沒有前進;修掉一類不夠要看總量;控制端走牆鐘而物理 RTF 0.21 → 軌跡被 3.5 倍速播放,四個症狀同一個原因;降速沒用因為根因是比例;RTF 由機器負載主導(探針只佔 9%),修好之前所有 A/B 都被汙染 |
| 30 |
驗收探針與實驗預先登記 |
預期落點由機構原理推導不是靠樣本統計;兩條互相獨立的證據鏈;⚠ 只跑正對照不算驗過——永遠回 ✅ 的閘門與正確的閘門輸出相同;表頭有 64 欄而 13632 格全是 nan;樣本數決定能問什麼(6 輪全過的整輪下界只有 61%,要 ≳90% 得跑 29 輪);組態連不改變的觀測條件都寫死;修壞掉的尺 ≠ 換一把尺;停止規則要跟統計目的對齊;附三層紀錄範本 |
兩條常見的入場路徑
完全不熟 Isaac Sim,但手上有一個物理跑不對的場景要修 → 跳到 6.0.1 區的 16 篇,它從「一個會被搬動的箱子由哪些東西組成」講起,不預設前置知識。
從零開始學 → 01 → 04 → 09 → 13,然後照自己的版本跳 5.1 或 6.0.1 區動手;要建能跑物理搬運的場景,接著讀 10 → 12。每篇都可獨立閱讀,已有經驗的直接跳對應篇。