火星車輪:A 軸傾斜 0.005°,0.75 mm 的輪皮從轉台端 0.733 mm 漸變到尾座端 0.767 mm,校正過的控制器也改不了(4 軸)

原始來源
只取數字、沒有模型:A. Rankin 等(噴射推進實驗室 JPL),Assessing Mars Curiosity Rover Wheel Damage,IEEE Aerospace Conference 2022(JPL 網站上的 PDF);E. Lakdawalla,Curiosity wheel damage: The problem and solutions,行星學會(The Planetary Society),2014(planetary.org);真實輪子的照片見 NASA 的頁面 Curiosity's and Perseverance's Wheels。
搜尋關鍵字
Curiosity's and Perseverance's Wheels、Rankin 2022 Mars rover wheel wear、Curiosity wheel damage Planetary Society
授權
只從來源取事實(尺寸與數量);IEEE 論文是 © 2022 IEEE,只用它的數字。這裡看到的輪子是超級高科技的代理依這些數字自建的模型;NASA 的示意圖沒有轉載,因為 NASA 的影像不屬於公有領域,推廣以外只能作編輯用途。所有畫面都是 HiNC 的截圖、由 HiNC 的結果畫成的圖表,或代理自己畫的示意圖。機台、程式與誤差都是代理自己的,誤差的大小與正負號不是任何機台的量測值。
標註
基案來源紀錄的標註原文: Wheel numbers and reference image: NASA/JPL-Caltech. Rebuilt for machining simulation by Tech Coordinate's agent; not a NASA or JPL design file and not endorsed by NASA.
輪子的數字與參考圖來自 NASA/JPL-Caltech;參考圖是 NASA 的比較示意圖,只在案例內部用來估人字的形狀,這裡不放。加工模擬用的模型由超級高科技的代理重建,不是 NASA 或 JPL 的設計檔,NASA 未為本案背書。超級高科技的代理在模擬機台上加了一條誤差項連接,它的種類、大小、正負號與樞軸都是代理選的;EB0A 是 ISO 230-7 對這種誤差的代號,數值不是任何機台的量測。
關於這個案例
火星車輪驗收過的程式:依公開數字與照片重建的好奇號輪子,取一個輪刺節距、全寬 400 mm,夾在通用四軸機 A 軸轉台的面板與尾座頂心之間,用兩支 Fanuc 四軸程式銑到 0.75 mm 的輪皮。這裡替那台機放進一個固定的幾何誤差:A 軸對 X 行程繞 Y 傾斜 0.005°(ISO 230-7 的 EB0A),兩頂心的連線在 531 mm 上,尾座端低 46 µm。這是代理選的典型值,這台通用機沒有人量過。

故事

基案裡,AI 代理依公開數字與照片重建好奇號的輪子,把一個輪刺(grouser)節距、全寬 400 mm,夾在通用四軸機的轉台面板與尾座頂心之間,寫了兩支用 G43 H 刀長補正的 Fanuc 定位式程式:T1 是 Ø12 端銑刀,粗銑人字槽;T2 是 Ø10 端銑刀,精修槽底與槽牆,留下 0.75 mm 的輪皮。這一案以 0.125 mm 的格子驗收過。程式沒有 RTCP:刀軸永遠對著輪心,A 軸轉動輪子,X 軸沿輪寬走。

這一次,代理替那台機放進一個常見的幾何誤差:A 軸,也就是轉台面板頂心與尾座頂心的連線,對 X 行程繞 Y 傾斜 0.005°,即 ISO 230-7 的 EB0A(A 軸繞 Y 的方向誤差)。換成現場的話:531 mm 的頂心距上,尾座端比面板端低 46 µm。這個誤差放在機台上一條標記為誤差項的連接,就在 A 軸的正上游;樞軸放在 A 0 時寬度中央的槽底,也就是案例假設工廠碰數的那一點。控制器解各軸時,當作這條連接不存在;專案的「啟用誤差項」開著時,模擬的機台卻帶著它移動、切削。程式一行都沒改,G54 也沿用案例原本的值:照假設的碰數,量到的工件座標與原本最多差 2.25 µm。

第一次播放前,代理先提交計畫:預期的刀尖偏移、每個特徵的偏差,以及七條通過標準。先以 0.25 mm 播修剪案(外側 150 mm,含第一個人字轉折與加強環上方),用來驗建置與逐步公式;再以 0.125 mm、只看幾何,把整條槽播三次:

修剪案播了這三趟,另加一趟清掉標記的,相當於運動學校正過、知道這個傾斜的控制器。這兩支是定位式四軸程式:控制器只用程式字、工件座標與刀長算機械座標,根本不讀機台鏈。所以計畫寫明:這一趟必須與有標記那一趟逐位元相同。

HiNC:誤差項開那一趟切出的工件連同 Diff 放回畫布;主軸鼻、熱縮刀把與 Ø10 端銑刀在槽的外側端上方,左邊是轉台面板與定子環,下方是有人字輪刺的輪子,右下是心軸與尾座頂心;看得到的 Diff 面是綠的;右下角是 Df 色條
有誤差,控制器不知道:把那一趟記下的完成件連同 Diff 放回 HiNC 畫布,再播一段停刀程式,讓 T2(Ø10 三刃端銑刀,裝在熱縮刀把上)停在外側槽口 X −201 的槽底。左邊是轉台面板與定子環,右下是 Ø80 心軸與尾座頂心。這個鏡頭平視槽口,刀旁那段槽底(輪皮薄了 17 µm)被近側的輪刺擋住;看得到的 Diff 面是綠的。
正上方俯視整條人字槽的 Diff,±0.02 mm,原地交替:標示誤差項開的那一幀,槽底從左端的橘紅經黃、綠到右端的藍,牆是綠的;標示誤差項關的那一幀全綠
比較圖:正上方俯視整條槽,輪寬 400 mm 橫跨畫面(左=轉台端 x −200,右=尾座端 x +200),原地交替誤差項開(有標記)與誤差項關(對照)。開的那一幀,槽底從轉台端的橘紅(過切,約 −17 µm)經寬度中央的綠,到尾座端的藍(留料,約 +17 µm),色帶與輪軸垂直;牆與輪刺頂維持綠色。關的那一幀整條綠。槽底上偏白的亮點是畫布打光的反光,兩幀都有。
側視示意圖:左邊是轉台面板,右邊是尾座頂心,實際的 A 軸線往尾座端沉到虛線的名目軸線之下;上方的輪子跟著傾斜,三支端銑刀連刀把在程式的高度,轉台端是紅色的過切楔、尾座端是藍色的留料楔,兩者在寬度中央的碰數點相接
誤差做了什麼,用側視示意圖說明(不按比例,傾斜與厚度差都放大很多倍):A 軸,也就是面板頂心與尾座頂心的連線,往尾座端下沉 0.005°(531 mm 上 46 µm),輪子跟著傾斜;刀照程式在固定高度沿 X 走。碰數點(寬度中央的槽底)不變;往轉台端,刀吃進輪皮越深(紅:x −200 過切 17.45 µm,輪皮 0.7325 mm),往尾座端越淺(藍:x +200 留料 17.45 µm,輪皮 0.7675 mm)。
槽底偏差對輪寬位置 x(−200 到 +200 mm)的圖:40 個藍點落在虛線 x·sin α 上,從轉台端約 −17 µm 經碰數點的 0 到尾座端 +17 µm,橘色的對照線在 0,右軸是 0.730 到 0.770 mm 的輪皮厚;下圖量測減預測在 ±0.02 µm 內
主結果:槽底(也就是輪皮的外表面)沿輪寬 x 的偏差。藍點是誤差項開那一趟每 10 mm 的中位數(40 箱,1,505,688 個頂點),落在預測的 x·sin α(虛線)上;橘線是對照趟,在 0。右軸換算成輪皮厚(0.75 mm 加偏差):轉台端 x −200…−199 是 −17.40 µm、輪皮 0.7326 mm,尾座端 +17.41 µm、0.7674 mm。下圖是量測減預測,最多 0.0183 µm。偏差軸正負對稱 ±20 µm。
HiNC 拓樸欄裡機台的連接圖(GeneralMechanism):台側 O、base、Y、X、Aerr、A、w,刀側 base、Z、S、t;X 與 Aerr 之間的 EB0A(StaticRotation)畫成粗線、帶橘色「誤差項」徽章,A(DynamicRotation)在 Aerr→A、標「工具機 · A 軸」;下方放大 X 到 A 這一段
誤差放在哪:HiNC 設備頁拓樸欄的機台叢集。X 與 A 之間多了一個錨點 Aerr。X→Aerr 這條連接叫 EB0A,是繞 (0, 1, 0) 轉 0.005° 的靜態旋轉,樞軸在 X 錨點座標系裡的 (0, 0, 572.5) mm,也就是碰數點;它畫成粗線、帶橘色「誤差項」徽章。A 軸的旋轉原封不動搬到 Aerr→A。下方是同一張擷取 X→Aerr→A 這一段的放大。
從外側那一端斜看整顆輪子的 Diff,±0.02 mm,原地交替:標示誤差項開的那一幀,切的那個節距的槽底從靠鏡頭的紅橘經綠到遠端的藍綠;標示誤差項關的那一幀全綠;心軸與輪轂板在前,其他槽是灰色
整顆輪子斜視,從外側 x −200 那一端看進去,輪轂板與 Ø80 心軸在前,原地交替。開的那一幀,切的那一個節距的槽底從近端(轉台端)的紅橘經綠,到遠端(尾座端)的藍綠;關的那一幀全綠。其餘 26 個槽是夾具,灰色。

畫面由 HiNC 依超級高科技的代理用公開數字自建的輪子模型繪出,機台是代理建的模擬機台,誤差項連接也是它加的;都不是 NASA 或 JPL 的設計檔。切好的工件是連同 Diff 放回畫布拍的,不是重播;第一張另播一段停刀程式,把刀帶進畫面。顏色是 HiNC 的幾何差異(色條上的 Df),比對對象是名目那一趟切出的工件;色階 ±0.02 mm,正負對稱:紅=過切、藍=留料、綠=0。格距 0.125 mm。圖表由 HiNC 的逐步結果與匯出的切削件畫成;側視圖是示意圖。

關鍵數字意思
0.005° · 46 µm誤差:A 軸(面板頂心與尾座頂心的連線)對 X 行程繞 Y 傾斜 0.005°(ISO 230-7 的 EB0A),531 mm 的頂心距上,尾座端低 46 µm。這是代理選的典型值,不是量測值;這裡每個偏差都與它成正比
4.07×10⁻¹³ mm71,562 步量到的刀尖偏移,與第一次播放前寫下的公式最多只差這麼多。機械座標 X、Y、Z、A 與名目趟逐位元相同
17.98 µm切削步上最大的刀尖偏移(預測 17.98 µm):T1 在切削範圍盡頭的 x −206 進刀那一步。碰數點的偏移是 0
0.7326 → 0.7674 mm轉台端(x −200…−199)與尾座端(x 199…200)的輪皮厚,設計 0.75 mm:兩端差 34.8 µm;預測在 x = ∓200 是 0.7325 與 0.7675 mm
0.0183 µm槽底 1,505,688 個頂點按 x 每 10 mm 分成 40 箱,各箱中位數離箱中心的 x·sin α 最多只差這麼多;槽底的直線擬合斜率是 1.00001·sin α。繞輪子一圈不變:每度 2.9×10⁻⁶ µm
±0.26 · ±0.49 µm槽牆最上面 0.5 mm 的中位數:朝轉台端的牆 +0.265 與 +0.494 µm(留料),朝尾座端的牆 −0.264 與 −0.494 µm(過切),分別是 24° 長段與 51° 短段;預測 +0.266、+0.496、−0.266、−0.496 µm
逐位元相同修剪案清掉標記(相當於校正過的控制器知道這個傾斜)的那一趟,與有標記那一趟比:11 個逐步序列、HiNC 的 Diff 統計與匯出件 3,139,116 個頂點全都相同。沒有 RTCP,控制器沒有東西可改
±4.8×10⁻¹⁰ mm對照趟對名目切削件,4,316,019 個頂點的 p01 到 p99:這是雜訊底,比誤差的 ±17 µm 小七個數量級以上
約 40 分鐘七趟播放的伺服器時間(2,427.7 秒)。在共用的 32 執行緒伺服器上,0.125 mm 的整條槽每趟 9.6–12.6 分鐘,記憶體最多 17.06 GB

九個難題中的四個

碰數會吃掉的誤差

最初的提議是 A 軸的旋轉中心偏移,讓輪皮繞一圈變化。可是程式零點就在 A 軸上,這種工作工廠本來就會在 A 軸上找 G54 的 Y、Z,所以軸的平移會整個吃進工件座標,零件上什麼都看不到;就算不碰數,輪皮也只是整圈一樣薄,每個角度都相同。要讓輪皮繞一圈變化,得把工件偏心夾,那是夾具或心軸的跳動,不是機台的誤差;HiNC 的夾具沒有誤差項,夾具要照它實際的位置擺。碰數吃不掉的是軸的方向,所以代理改放 EB0A。零件上的偏差只隨 x 變,繞圈項只有每度 2.9×10⁻⁶ µm。位置誤差會被 G54 吃掉,是設計階段的推導,這次沒有播放驗證。

樞軸放在碰數點

靜態旋轉要一個樞軸,樞軸放在哪,決定整個零件跟著移多少。放在面板中心(軸在那裡不動、尾座端往下沉),同樣的傾斜還會多出 (+21.2, 0, −24.4) µm 的常數平移,正好是在寬度中央碰數會吃進 G54 的量。所以樞軸直接放在碰數點:A 0 時寬度中央的槽底 R242.5,那裡的偏差對每個 A 都是 0。案例假設的碰數(Z 在寬度中央碰毛胚頂、X 碰外側端面),量到的 G54 與原本最多差 2.25 µm,所以七趟都沿用 (0, 0, −670)。寬度中央 0.5 mm 內的 20 個槽底精修步偏 0.0016–0.0374 µm,正是 |x|·sin α。工廠若在面板端找 A 軸中心,只多一個常數平移,錐度不變。

0.125 mm 的格子讀 17 µm

最大的偏差 17.5 µm 只有 0.125 mm 格寬的 14%,牆上的半個微米只有 0.4%。設計代理備好了 ×10 的展示值(0.05°,兩端 ±174.5 µm),以防格子讀不出真實值;它根據批次先前一次 0.25 mm 的試跑(X–Y 垂直度 0.003° 留得住 ±2.7 µm),判斷真實值應該看得見。這一案在計畫前沒有試跑,修剪案與整條槽都直接用真實的 0.005° 跑。名目與開兩趟在相同的機械座標上分步,刀在兩件上留下同樣的紋路,相減後只剩偏移:槽底 40 箱的中位數與 x·sin α 差不到 0.0183 µm,牆差不到 0.003 µm。這裡每個數字與畫面都是真實的 0.005°,×10 那一趟沒有播。

牆腳讀到 −84 µm 的一條帶

距離搜尋讀到超過 0.02 mm(大於預測最大的 17.45 µm)的頂點,4,313,736 個裡有 284 個,全部對名目切削件附近的每一個三角形重算了精確距離。其中 19 個是 0:搜尋只看最近 12 個三角形的中心,旁邊若是大片的平面三角形,就會漏掉真正的那一面。其餘 265 個是兩個匯出網格真的不一樣:−83.74 到 +20.10 µm,全在槽底與牆交接的角落帶,264 個在轉台端那一半,也就是槽底切得比名目深的一側。誤差本身移不了切削面這麼多:每一步只是把同一把刀放到最多偏 17.98 µm、轉 0.005° 的姿勢,差別最多 18.82 µm。量到的和推理的對不上,紀錄記為一項發現。最可能的成因是兩趟在同一個 0.125 mm 格裡,把這個凹角萃取成不同的面(格的半對角線 88 µm),這一點沒有直接驗證。槽底的統計照基案量輪皮的做法,避開離牆 1.5 mm 以內的點。

其餘五個都在完整紀錄裡:模型裡尾座的實體留在原位,不跟著它頂住的軸線傾斜;為什麼清掉標記的那一趟只在修剪案跑;輪皮那一條標準的篩選條件寫得太寬,把沒切的內孔、輪緣與加強環也算進去,照原文不通過;對照趟裡距離搜尋讀到最多 0.179 mm 的毛胚側面頂點,對每個三角形精算都是 0;以及兩趟對「有沒有切到」判法不同的 35 個擦邊步,最大偏移的那一步也在其中。

結果

七趟播放的每支程式都播到最後一行,沒有碰撞:整條槽每趟 71,562 步,修剪案 29,525 步。

控制器不知道誤差時,每一步的刀尖都落在第一次播放前寫下的公式上,最多只差 4.07×10⁻¹³ mm。相對於輪子,刀尖幾乎只沿徑向偏 x·sin α:轉台端往輪心多進、切得深,尾座端少進、切得淺,切削步最多 17.98 µm。軸向分量是 −(ρ − 242.5)·sin α(ρ 是刀尖離 A 軸的距離,242.5 mm 是槽底半徑),切削步最多 0.35 µm,換刀高度的空移是 28.6 µm。每一步的機械座標都與名目趟逐位元相同,對照趟也與名目趟逐位元相同。

零件的每一面,只留下這個偏移在它法向上的分量,所以槽底全部吃下。槽底就是輪皮的外表面,下面的內孔沒有切,所以輪皮厚度的變化就是槽底的偏差:轉台端 0.7326 mm、碰數點 0.7500 mm、尾座端 0.7674 mm,兩端差 34.8 µm,沿寬度是一條直線。槽底 40 箱的中位數離 x·sin α 不到 0.0183 µm,繞輪子一圈也不變。

人字輪刺的牆只動零點幾微米。相對於輪子,刀上離槽底 h 的那一點往轉台端偏 h·sin α,每面牆只吃到其中沿它法向的那一份:朝轉台端的牆留料,朝尾座端的牆過切;51° 的短段比 24° 的長段多,從槽底的 0 長到最上面 0.5 mm 的約 ±0.26 與 ±0.49 µm。四種牆在每個高度都與預測差不到 0.003 µm。輪刺頂、內孔、兩側輪緣與加強環都沒有切,讀數是 0(5.1×10⁻¹⁰ mm 以內)。

修剪案清掉標記、相當於運動學校正過的控制器知道這個傾斜時,機台的移動與有標記那一趟完全相同,切出的也是同一個零件:11 個逐步序列、HiNC 的 Diff 統計與匯出件 3,139,116 個頂點,都與有標記那一趟逐位元相同。G43 H 的定位式程式從不要控制器去解機台鏈,所以控制器知道這個傾斜也沒有東西可改。17 吋鍛造鋁圈與 NIST 圓錐台的程式在 RTCP(G43.4)下跑,清掉標記就切回名目的工件。這裡要讓校正過的控制器有用,得把程式改寫成 RTCP;不然就只能靠機械對心:在兩頂心之間架試棒、沿 X 打表、墊尾座。

兩張圖:左,機械座標 X、Z、A 相對名目趟的差值,29,525 步是一條恰為 0 的平線;右,徑向刀尖偏移對 x(−206 到 −50 mm),標記與不標記兩趟重疊在虛線 x·sin α 上,從約 −18 到 −4.4 µm
修剪案(外側 150 mm、0.25 mm)清掉標記的那一趟,相當於運動學校正過、知道這個傾斜的控制器。左:這個控制器在機械座標上相對名目趟改了多少(X、Z,A 換算成 R242.5 上的弧長):29,525 步全部恰為 0,與有標記那一趟一樣。右:有標記(藍)與不標記(橘)兩趟的徑向刀尖偏移完全重疊,落在 x·sin α 上。偏差軸正負對稱 ±20 µm。

對照趟切出的就是名目工件:4,316,019 個頂點從 p01 到 p99,離名目切削件都在 ±4.8×10⁻¹⁰ mm 以內。距離搜尋讀到超過 10⁻⁶ mm 的 15 個頂點(最多 0.179 mm)全在毛胚沒切過的側面,對每一個三角形精算都是 0;換成精確值後,每個頂點都在 9.31×10⁻⁷ mm 以內。

第一次播放前寫下的七條標準,五條照原文通過,成本那一條也記下了。輪皮那一條照原文不通過:篩選條件「半徑 < 242.6 mm」把沒切的內孔、輪緣與加強環也算進去,分箱中位數最多差到 17.02 µm;照計畫的本意只取槽底,就以 0.0183 µm 通過。紀錄照原文記下判定,篩選條件寫得太寬則記成對計畫的發現。

這裡只放了這一個常數誤差。真實的 A 軸同時還有別的誤差:位置誤差(這種夾法下會被碰數吃掉)、水平面內的傾斜 EC0A(會扭轉槽的方位),以及隨角度變的徑向跳動與擺動;沿行程變化的誤差、背隙、伺服不匹配與熱變形,都不是常數誤差項表達得了的。大小與正負號是選的:若是尾座端高,所有偏差都會反號。碰數假設在寬度中央。模型裡傾斜的是面板、夾具與輪子,尾座的實體留在原位;對切削來說,這和兩頂心連線傾斜是一樣的。播放只看幾何,沒有算切削力與撓曲;只切了一個節距,其餘 26 個槽是夾具。一切都是模擬,沒有切過任何輪子。

帶來了什麼

看完整的案例紀錄:火星車輪,A 軸傾斜 0.005°

輪子、刀路與這些程式是怎麼做出來的:火星車輪。

所有實作案例