第116章 給蟲子接上神經
江臨在文檔最上方,寫下低熵工坊下一條視頻的暫定標題。
《規則相位與低公度相位對照實驗》
看兩秒,按下退格鍵,全部刪掉。
又寫:《n,不再等於一》。
還是刪掉。
太像回應了。
如果現在就發第二期,很容易。
做四台對照機,擺出規則板、隨機板、非重複間距板,再甩出一組比第一期更漂亮的數據。
確實能讓一大半爭論當場閉嘴。
可那樣一來,低熵工坊就被評論區牽著鼻子走了。
別人說你沒對照,你就補對照。
別人說你n=1,你就把n做大。
一路接招,看起來打得熱鬧,實際上就只能永遠站在原地,在別人的邏輯框架里打轉。
雖然江臨一直告訴自己不受網絡刻板印象的影響,但當看著後台那99+的紅點時,潛意識裡還是難免有些被帶著去思考。
他搖了搖頭,把腦子裡那些虛擬的喧囂全部清空。
第一期視頻里,六足那層最基礎的機械架構的殼子,他已經給出去了。
真正感興趣,有動手能力的人,自然會接著拆解。
用自己的失敗,把規則相位和低公度相位往下推。
他不必親自下場,去回答每一道題。
他要做的是下一步。
第一期的六足平台已經證明了用2022年的普通材料,普通加工,普通電機,天幕站那套被動容錯的機械邏輯,在桌面尺度上能重新跑起來。
但它有個毛病。
它只會走。
走得動就走,走不動就趴下。
可你要問它,剛才到底哪兒出了問題,它一個字也答不上來。
鐵屑老周說:「當某條腿沒按你想的方式受力,你怎麼讓剩下五條腿,別跟著它一起犯病。「
中部985在論文裡說:「錯誤不會集中在某一個機械節拍上連續放大。「
這兩句話,都只摸到了大象的一條腿。
江臨真正想做的,根本不是一台被動六足能不能在複雜地形里少摔幾次。
而是,既然機器的身體本身能扛下一部分容錯,那它為什麼不更進一步,而是停留在一台沒感知,沒記錄,摔了也說不清的被動測試架上?
在他的構想里,這個六足平台的下一階段至少該知道,自己身上發生了什麼。
哪條腿的足端先失去了載荷?
哪個位置的棘爪在不該咬合的相位提前咬合了?
主軸電機的瞬時電流,到底是在哪一幀、哪個毫秒突然抬起來的?
機身的橫擺失控,是從什麼時候開始陷入死循環重複的?
它的失敗,是一瞬間大廈傾覆般塌掉的,還是順著底層的機械結構,像金屬疲勞的裂紋一樣,一點點爬出來的?
這第二隻蟲子,得能把自己為什麼走不下去記下來。
他新建了一個文件夾。
G01_Embodied_Failure_Logger
【低熵工坊 G-01:一台會記錄自己怎麼趴窩的蟲子】
然後開始寫文案。
「上一期那隻蟲子,只會走路。這一期,我想讓它學一件更難的事:在摔倒,死鎖,甚至主軸燒毀之前,把自己身體裡正在發生的一切災難,一字不漏地記下來。「
往下,他開始列BOM(物料清單),每列一個硬核的電子零件,就在旁邊用最粗糙的大白話翻一遍。
高帶寬IMU(慣性測量單元)。
——你手機橫過來屏幕會自動轉,靠的就是類似這類MEMS慣性器件。把它裝在機身上,讓它隨時記錄自己是平的歪的,還是正在往下栽。
薄膜足端壓力傳感器(FSR)。
——腳底的體重秤。六六條腿哪條被壓到了,它能給出第一手線索。
主軸高邊電流採樣(INA240)。
——給電機把脈。腿一卡住、連杆一突然吃力,電流立刻往上竄。人使勁會憋紅了臉喘氣,電機使勁,這陡增的安培數就是它的喘。
全局快門高速攝像頭(OV9281)。
——一個沒有任何智能的隨身記錄儀。不用捲簾快門,因為果凍效應會毀了機械動作的瞬間。它不認人、不認路、不跑YOLO目標識別,只管把微距下的齒輪嚙合過程錄下來,留著事後一幀一幀回放。
邊緣計算與高精度時間戳對齊底板。
——機器的黑匣子。飛機摔了靠黑匣子復盤,這隻蟲子摔了,也得有自己的黑匣子。
所有傳感器數據和視頻幀,必須被綁定在同一條統一時間線上。
至少要精確到毫秒級,電流、IMU這些高速數據,再單獨保留更高頻採樣時間戳。
寫到這裡,江臨停頓了一下,把一開始打算用的樹莓派三個字刪掉。
Linux系統的非實時性會帶來不可控的調度延遲,對於分秒必爭的機械正時來說,那就是毒藥。
他改成了:【主控板:STM32H7高性能單片機。】
他現在還不需要強算力,只要穩定的硬體定時器,足夠快的ADC採樣,以及一套不會被SD卡寫入延遲拖亂的環形緩衝區。
強算力會像海妖的歌聲,勾著人去做極其複雜的感知,做全地形的步態規劃,做花哨的波士頓動力式的平滑控制。
這不是G-01該乾的活。
G-01的任務,不是在聚光燈下表演我很聰明,我能後空翻,而是像一個沉默的苦行僧,把身體裡那點機械結構失效的潰敗過程,老老實實地記下來。
底盤第一版的圖紙不必推翻,仍舊保持低速六足的構型。
六足在幾何學上的好處是接觸點極度清楚:每條腿什麼時候落地,什麼時候失去載荷,棘爪什麼時候鎖止,力學傳導路徑清晰,一筆一筆記得清。
他在旁邊用括號留了一行備忘:【備選:輪腿混合架構的複雜性太高,干擾變量太多,以後再說。】
接著,他在紙上畫了張簡圖。
中央主軸電機,兩側對稱的六條腿,每一個聚甲醛(POM)切削的足端內嵌一個壓力點。
機身正中的質心位置焊著一顆IMU,主軸電機的供電線上串聯著霍爾電流採樣,前方探出一個毫無美感的裸露攝像頭排線,側面掛著一小塊布滿綠油的PCB記錄模塊。
畫完,他端詳了一會兒。
這台長滿了飛線和傳感器的G-01,比第一隻光禿禿的蟲子更丑了
但它無疑也更有用。
……
最先到貨的是足端壓力傳感器。
一包薄薄的柔性薄膜片,裝在防靜電袋裡,輕飄飄的,拿在手裡像幾片被隨手裁成圓形的黑色劣質塑料紙。
賣家頁面的參數寫得天花亂墜。
航空級高靈敏,百萬次高重複性,零溫漂,完美適用於高仿生機器人足底壓力檢測及步態分析。
江臨拆開防靜電袋,用鑷子夾起一片,對著頭頂昏黃的白熾燈看了整整兩秒。
這東西絕對不能直接信。
哪怕標稱參數再好,也不能信。
做過底層硬體和非標自動化的人都知道,傳感器這種東西,最容易合法地欺騙系統。
即便它工作完全正常,輸出的電壓信號極其穩定,ADC(模數轉換器)讀到的數值也完全符合歐姆定律,也能憑實力把整個上位機的運動解算帶偏到姥姥家去。
這涉及到一個極度深淵的工程學難題。
觀測者效應在宏觀機械上的幽靈再現。
比如把這片薄膜直接貼到原本是球面的足端下面?
原本的點接觸,瞬間變成了面接觸,直接改變了足底的接觸面積和受力模型。
比如為了防止磨損,給它外面加一層硫化橡膠保護?
嗯,足底的靜摩擦係數和動摩擦係數全變了,原本能在木板上滑行的步態,現在會死死卡住。
比如為了採集信號,走線從腿側的連杆繞過去?
恭喜,幾根矽膠軟線的質量和拉扯力,直接改變了整條腿的擺動慣量,原本調好的機械諧振頻率全廢了。
如果用的雙面固定膠太硬,足端會失去原本設計好的柔順性,走起來像個踩高蹺的殭屍。
如果用的固定膠太軟,比如3M的厚泡棉膠,測試時足端受到側向剪切力,薄膜和保護層之間就會發生肉眼看不見的微小滑移。
……
說白了,江臨想讓G-01把平台的失敗記下來,可第一步遇到的問題就是記錄這個動作本身,會改變被記錄的平台物理特性。
這比買到壞件更麻煩。
買到壞東西,大不了退貨換新的。
但如果裝上這套傳感器網絡之後,機器的重量分布、摩擦力、柔順性全變了,它已經不再是原來那隻純粹的蟲子了。
那麼,它最終記錄下來的失敗,究竟是本體機械結構的翻車,還是記錄系統自己通過物理干涉,憑空製造出來的Bug?
這是硬體工程里的哲學問題。
上午九點半,教師樓後排的小車庫。
工作檯上攤著G-01第一版底盤。
它仍然沿用六足結構,但為了建立痛覺神經系統,江臨像給一具還沒縫合的機械身體接上神經,給它順手飛了幾條扎眼的線束。
紅黑相間的足端壓力線,屏蔽網包裹的IMU數據線,從電調上硬接過來的主軸電流採樣線,一條極寬的FPC攝像頭排線,以及腹部那塊他用嘉立創打樣,焊滿了0402阻容件的自研數據記錄板。
一眼看過去,它簡直像是一隻剛做完賽博義體植入手術,還沒縫合裝甲的金屬怪物。
江臨拿起第一片薄膜壓力傳感器,小心翼翼地墊在左前足的POM足底。
壓緊,貼上極薄的3M 468MP雙面膠,走線。
用鑷子引導著極細的漆包線,沿著鋁合金連杆的內側,繞過所有可能發生干涉的擺動死角。
最後,用一點點熱熔膠和小線夾固定。
一套標準的高密度組裝操作,看起來毫無破綻。
於是啟動電機。
「滴——」
電調發出清脆的上電提示音。
他輕輕推下啟動開關,啟動主軸電機。
G-01的機械齒輪開始咬合,發出低沉而規律的咔嗒聲。
它慢慢抬起左前腿,邁出第一步。
很穩健。
第二步,右中腿跟上。
沒問題。
第三步剛抬起來,然後毫無預兆地,迎來了整個項目最喜聞樂見的翻車環節。
左前腿那根順著連杆固定的極細的足端線束,在腿部擺動到最高點時,因為連杆的相對運動,產生了一個不到兩毫米的微小外凸。
就是這微小的兩毫米,讓線束的絕緣皮被旁邊的主傳動杆輕輕擦了一下。
真的只是像羽毛一樣擦了一下。
可就是這微不足道的一點點摩擦阻力,讓左前足在往下落的瞬間,由於被線扯了一下,慢了半個節拍。
電腦屏幕上,上位機實時滾動的壓力曲線上,立刻冒出一個刺眼的假峰值。
日誌窗口無情地輸出一行紅字。
【Error Code 0x1A】左前足端壓力異常,標記為疑似提前觸地。
江臨盯著屏幕,沒動。
此時,機器的電機還在轉,它繼續往前走,左中腿結結實實地接住了整個機身的載荷,機身姿態平穩,沒有任何要摔倒的跡象。
但在數據世界裡,數據已經髒了,這台機器已經死了。
江臨關掉電機電源。
左前足根本沒有提前觸地。
是那根用來探測觸地的線束,像一隻有形的手,在半空中拖住了它。
傳感器沒有記錄到失敗的真相。
相反,傳感器用它自己的物理實體,製造了一次失敗的影子。
江臨面無表情地拿起螺絲刀和斜口鉗。
把那根線拆下來,重新規划走線路徑,用遊標卡尺測量了間隙,從連杆的外側改到了不會發生摩擦的內側,又用新近購買的3D印表機臨時打了一個倒角平滑的限位線夾。
再試。
這一次,線完美避開了所有干涉區,沒有掃到連杆。
但墨菲定律永遠不會缺席。
新的Bug如期而至,且更加隱蔽。
由於之前擔心硬膠會改變足底摩擦,他採用的傳感器保護膠稍微軟了那麼一點點。
當G-01的足端踩上測試用的斜向尼龍障礙條時,薄膜傳感器和保護層之間,發生了肉眼無法察覺的微小滑移剪切。
上位機的數據曲線里,出現了一個異常優美平滑的緩慢上升段。
系統判定:「載荷平滑轉移,步態極佳。」
「神仙數據啊。」
江臨笑嘆,在這種剛性機械結構里,根本不可能存在這麼平滑的受力曲線。
他調出正對著足端的高速攝像頭,將幀率拉滿到240fps,開始一幀一幀地轉動滑鼠滾輪進行回放。
畫面在漆黑的屏幕上緩慢跳動。
停在第九十七幀。
畫面里,金屬足端早已死死地壓住了尼龍障礙條,足底的POM材料甚至發生了微小的彈性形變。
然而,旁邊同步顯示的壓力曲線,卻像個剛睡醒的樹懶,還在慢吞吞地往上爬升,根本沒有達到觸地閾值。
延遲。
還是足足14幀。
以當前240fps的幀率換算,14幀意味著58毫秒。
對一個在B站刷著擦邊舞蹈視頻的觀眾來說,58毫秒連眼皮眨一下的時間都算不上。
但對於一台依靠內部棘爪正時邏輯,在失衡邊緣瘋狂試探來活命的機械六足蟲來說,58毫秒的物理信號延遲,足夠把整條純機械的動力鏈送進火葬場。
58毫秒,棘爪早就錯過了最佳的咬合時機,齒輪會在錯誤的位置卡死,電機瞬間過載燒毀。
江臨在記錄本上寫——
【G-01踩坑記錄:傳感器安裝方式及材料力學引入假柔順。保護層剪切滑移與FSR遲滯共同引入讀數延遲,當前安裝方式下延遲約58ms。不能直接用於判斷觸地時刻,必須先改安裝結構,再與電流、IMU和視頻幀做交叉校驗。】
【G-01第一課:給身體接上神經,不等於身體真的會說實話。】
第一隻蟲子的難點,是攻克機械加工精度,讓它在複雜的相位中走起來。
第二隻蟲子的難點,是攻克系統工程,讓它說真話。
而在這個充滿摩擦,溫度,噪聲的現實物理世界裡,讓一台由無數零件拼湊起來的機器說出真話,比讓它走起來,難上百倍。
……
下午兩點,吃過午飯小睡了一覺的江臨開始收拾比足端壓力更讓人抓狂的東西。
IMU。
如果說足底的壓力傳感器是個喜歡用物理滑移來撒謊的騙子,那IMU就是個患有神經衰弱的敏感肌。
敏感本來是它的本職工作。
通過內部微機械結構,它能精準記錄機身在三維空間裡的橫擺、俯仰、微小的震動,以及每一次跌倒時的瞬時衝擊G值。
可問題在於,如果你把這個敏感的神經元固定在錯誤的位置,它就會把主軸電機的電磁高頻振動,某顆M3螺絲沒擰緊的鬆動,甚至是某根數據線在風中拍打機架的震顫,統統誤認為是機身的姿態變化。
江臨在這個小小的矽片上,經歷了三次痛苦的疊代。
V1.0方案(中置底盤直貼)。
他遵循了物理學中最直觀的邏輯,把IMU貼在機身的幾何中心,也就是底盤的正中央。
位置絕對準確。
可是那個功率高達150W的直流無刷主軸電機,就在它旁邊不到五厘米的地方。
主軸一通電開始旋轉,哪怕機器還沒落地,上位機里的數據波形直接炸裂。
高頻的電磁噪聲和電機的機械共振,順著剛性底盤全傳了過來。
機身明明穩如老狗,屏幕上的姿態曲線已經瘋得像在跳迪斯科。
V2.0方案(上層柔性支架)。
秉著惹不起躲得起的原則。
他用3D印表機打了一個尼龍小架子,把IMU挪到了遠離底盤和電機的上層空間。
電機噪聲確實小了,波形平滑了不少。
但江臨還沒來得及高興,一落地測試就原形畢露。
尼龍支架太薄,懸臂太長,機器只要邁開腿走路,整個機身帶動的低頻晃動,讓那個小支架自己開始產生共振顫抖。
最終,IMU記錄下來的根本不是真實的機身整體姿態,而是那個破支架在空中瘋狂的帕金森抖動。
V3.0方案(加厚金屬配重塊)。
江臨動了真火。
他用6061硬質鋁合金搓出了一個極厚、硬的固定底座,然後攻了幾個極緊的螺紋孔,把IMU鎖在上面。
這一次,剛性絕對足夠,數據瞬間乾淨得像教科書里的示例。
然後就是這塊沉重的實心鋁塊,增加了機身上半部分的質量分布。
機器的整體重心被憑空拔高了12毫米。
當這台機器再次爬上那些非重複間距板時,因為重心的改變,側傾風險明顯增加。
記錄系統,再一次無情地改變了被記錄的物理對象。
江臨冷靜地把這三次測試、三組截然不同的數據圖表並排放在屏幕上。
第一組:被電機高頻噪聲污染的假姿態。
第二組:被支架低頻自振污染的假姿態。
第三組:很乾淨,卻讓機器變得更容易摔倒的假數據。
三條路,每一條都不完美。
但這就是工程學,不用在真空球形雞的假設下尋找一個完美的解析解。
而是在一堆糟糕透頂的選項里,通過無數次的權衡,妥協,壓榨材料的極限,挑出一個錯得最少的。
最終,他配置了一個複合濾波方案。
機械層面,將IMU移到了靠近機身重心,但不在主軸正上方的側邊。
用一塊短小精悍的標準化鋁座固定,然後在鋁座和機架之間,墊入一層極薄的高密度丁腈橡膠片,用來做物理層面的低通濾波。
連續測試了四次不同厚度不同邵氏硬度的墊片,再配合軟體層面的卡爾曼濾波算法,才勉強把噪聲壓到了邊緣計算板能夠處理的閾值範圍以內。
……
傍晚時分,江臨放在一旁的手機屏幕不斷亮起,低熵工坊B站後台正在發送瘋狂湧入的消息提示。
這很正常。
一個沒有歷史投稿的新帳號,突然靠一條硬核機械視頻衝進科技區推薦池,又正好踩著非周期這個熱詞,必然會招來一堆亂七八糟的東西。
有人在耐心等低熵工坊的第二期技術解析。
有人在冷嘲熱諷,認定他江臨已經江郎才盡,不敢繼續往下做,生怕暴露理論的缺陷。
有人像催債一樣在評論區刷屏催他放出詳細的SolidWorks圖紙。
有人直接開口:【UP主,我是學生,CAD發我一份,我想學習一下。】
還有人更直白。
【哥們,你這個思路我感覺能搞創業,要不要一起做?我負責商業,你負責技術。】
江臨一條條滑過去,飛快瀏覽了一遍,關掉後台,接著調 G-01。
晚上七點三十五。
第一組乾淨的翻車數據終於出現。
測試環境其實很簡單,工作檯上只有一塊短小的木板,上面用強力膠固定著一根呈現30度斜角的尼龍條。
目標也只有一個:主動製造右前腿在特定相位下的斜向卡滯。
G-01以設定的極低速度,沉穩地向前邁進。
左前腿落地,一切正常。
右中腿支撐起一半的機身重量,正常。
右前腿在空中划過一條弧線,慢慢接近那根斜向尼龍條。
足端接觸的瞬間。
江臨盯著屏幕上被切分成四個象限的同步畫面。
第一象限(左下角):壓力曲線。
屏幕上,代表右前足的綠色壓力曲線輕輕抬頭。
第二象限(左上角):IMU姿態。
緊接著,紅色橫擺曲線出現了一小段幾乎微不可察的向右偏轉趨勢。
第三象限(右下角):主軸電流。
此時,電流波形依然是一條平靜的直線,電機還不知道災難即將降臨。
隨著高速攝像機的畫面逐幀推進,時間被無限拉長。
第十二幀:右前足的POM材料在光滑的尼龍條上,因為斜向受力,發生了一次極其微弱的側向滑移。
就在滑移發生的瞬間,壓力曲線突兀地分裂出兩個異常的雙峰。
第十五幀:側滑帶來的連鎖反應爆發了。
接觸角的微小偏差,通過連杆系統放大了數倍。原本應該完美避開的棘爪齒尖,悽厲地擦到了轉動中的齒條邊緣。
第十七幀:機械干涉的阻力瞬間反饋到主軸。
電流採樣晶片捕獲到了安培數的陡然暴增,一條黃色的直線如利劍般直插雲霄。同時,機身因為受力不均,橫擺角速度劇烈加速。
第二十幀:災難徹底降臨。
主軸電機的驅動板觸發了過載保護,切斷了PWM輸出,整台機器發出一聲沉悶的咔聲。
機器停住了。
江臨把這不到一秒鐘的慢動作回放,來來回回拉動了整整五遍。
再把四條時間軸絕對對齊的數據拖出來看。
足端壓力,IMU 橫擺,主軸瞬時電流,高速視頻捕捉幀。
在人類工程學的歷史長河中,這微不足道。
但在這個小車庫裡,這是第一次,四條原本孤立的物理證據鏈,嚴絲合縫地對上。
不是那種被濾波算法塗抹過的完美擬合,而是帶著真實物理世界粗糙毛邊的,足夠清晰的因果邏輯鏈。
錯誤,並不是從電機電流異常開始的。
錯誤,也不是從機身傾斜那一刻開始的。
錯誤,更不是從那聲刺耳的棘爪死鎖聲開始的。
一切災難的源頭,第一下真正要命的失效,是那次在第十二幀發生的,足端在斜向接觸里的微小側滑。
側滑,製造了毫米級的接觸角偏差。
偏差,把本該順暢工作的棘爪硬生生拖進了一個錯誤的機械相位。
棘爪在這個錯誤的時刻提前嚙合,這才引發了最終的整條運動鏈的死鎖。
邏輯完美閉環。
江臨看著屏幕,只覺得頭皮發麻。
這套神經系統太可怕了,但也太美了。
如果沒有那片該死的足端壓力傳感器,如果只看外部的錄像視頻,所有人都會理所當然地以為,是底部的棘爪設計有缺陷,發生了疲勞卡死。
如果沒有精確到度數的IMU,如果只看粗暴的電機電流曲線,大家都會判定是電機馬力不夠,遭遇了過載。
如果沒有那個全局快門的高速攝像頭提供絕對時序同步,如果單看壓力曲線那詭異的雙峰,又會很容易誤判成簡單的提前觸地干涉。
只有當這四條帶著雜音的線束合在一起,交叉印證,失敗,才終於第一次在這個狹小的車庫裡,開口說出了一句完整清晰的話語。
江臨在屏幕上按下了暫停鍵。
右前足端,斜斜地地壓在尼龍條上的瞬間。
此時的機身,還沒出現任何肉眼可見的傾斜。
決定翻車與否的棘爪,還沒有真正咬合鎖死。
而代表主軸電流的黃色曲線,才剛剛開始微微抬頭。
這是問題真正開始爆發之前,安靜隱秘的一幀。
截圖,保存,錄入日誌。
命名:G01_fail_001_initial_slip_frame.png
【Test_ID:G01-001】
【Terrain:斜向固定尼龍條極限測試】
【Start_Phase:初始運動相位 52.5°】
【First_Event:災難原點-右前足端斜向接觸後發生側滑】
【Propagation:因果鏈傳導-側滑→接觸角偏差畸變→棘爪提前擦齒干涉→瞬時負荷突增導致電流上升→觸發主控硬體保護停機】
【Final_Stop:系統狀態-運動鏈發生不可逆死鎖】
【Recoverable:自恢復可能-否】
第一條具有完整因果追溯能力的失敗日誌,在6月30日這個悶熱的夜晚,正式落筆。
夜裡九點。
江臨打開剪輯軟體,把剛才這個頗具歷史意義的翻車過程,隨手剪成了一段只有十六秒的分屏視頻。
視頻被切分成嚴謹的四宮格。
左上方,是足端接觸瞬間的超高清慢動作特寫。
右上方,是實時同步滾動的綠色壓力受力圖。
左下方,是隨著機身輕微晃動而波瀾起伏的紅色IMU橫擺曲線。
右下方,則是那條如同生命線一般,最終飆升至極限的黃色主軸電流。
十六秒的時間裡,每一幀的數據跳動,都精準踩在機械咬合的節點上,猶如心跳般震撼。
《規則相位與低公度相位對照實驗》
看兩秒,按下退格鍵,全部刪掉。
又寫:《n,不再等於一》。
還是刪掉。
太像回應了。
如果現在就發第二期,很容易。
做四台對照機,擺出規則板、隨機板、非重複間距板,再甩出一組比第一期更漂亮的數據。
確實能讓一大半爭論當場閉嘴。
可那樣一來,低熵工坊就被評論區牽著鼻子走了。
別人說你沒對照,你就補對照。
別人說你n=1,你就把n做大。
一路接招,看起來打得熱鬧,實際上就只能永遠站在原地,在別人的邏輯框架里打轉。
雖然江臨一直告訴自己不受網絡刻板印象的影響,但當看著後台那99+的紅點時,潛意識裡還是難免有些被帶著去思考。
他搖了搖頭,把腦子裡那些虛擬的喧囂全部清空。
第一期視頻里,六足那層最基礎的機械架構的殼子,他已經給出去了。
真正感興趣,有動手能力的人,自然會接著拆解。
用自己的失敗,把規則相位和低公度相位往下推。
他不必親自下場,去回答每一道題。
他要做的是下一步。
第一期的六足平台已經證明了用2022年的普通材料,普通加工,普通電機,天幕站那套被動容錯的機械邏輯,在桌面尺度上能重新跑起來。
但它有個毛病。
它只會走。
走得動就走,走不動就趴下。
可你要問它,剛才到底哪兒出了問題,它一個字也答不上來。
鐵屑老周說:「當某條腿沒按你想的方式受力,你怎麼讓剩下五條腿,別跟著它一起犯病。「
中部985在論文裡說:「錯誤不會集中在某一個機械節拍上連續放大。「
這兩句話,都只摸到了大象的一條腿。
江臨真正想做的,根本不是一台被動六足能不能在複雜地形里少摔幾次。
而是,既然機器的身體本身能扛下一部分容錯,那它為什麼不更進一步,而是停留在一台沒感知,沒記錄,摔了也說不清的被動測試架上?
在他的構想里,這個六足平台的下一階段至少該知道,自己身上發生了什麼。
哪條腿的足端先失去了載荷?
哪個位置的棘爪在不該咬合的相位提前咬合了?
主軸電機的瞬時電流,到底是在哪一幀、哪個毫秒突然抬起來的?
機身的橫擺失控,是從什麼時候開始陷入死循環重複的?
它的失敗,是一瞬間大廈傾覆般塌掉的,還是順著底層的機械結構,像金屬疲勞的裂紋一樣,一點點爬出來的?
這第二隻蟲子,得能把自己為什麼走不下去記下來。
他新建了一個文件夾。
G01_Embodied_Failure_Logger
【低熵工坊 G-01:一台會記錄自己怎麼趴窩的蟲子】
然後開始寫文案。
「上一期那隻蟲子,只會走路。這一期,我想讓它學一件更難的事:在摔倒,死鎖,甚至主軸燒毀之前,把自己身體裡正在發生的一切災難,一字不漏地記下來。「
往下,他開始列BOM(物料清單),每列一個硬核的電子零件,就在旁邊用最粗糙的大白話翻一遍。
高帶寬IMU(慣性測量單元)。
——你手機橫過來屏幕會自動轉,靠的就是類似這類MEMS慣性器件。把它裝在機身上,讓它隨時記錄自己是平的歪的,還是正在往下栽。
薄膜足端壓力傳感器(FSR)。
——腳底的體重秤。六六條腿哪條被壓到了,它能給出第一手線索。
主軸高邊電流採樣(INA240)。
——給電機把脈。腿一卡住、連杆一突然吃力,電流立刻往上竄。人使勁會憋紅了臉喘氣,電機使勁,這陡增的安培數就是它的喘。
全局快門高速攝像頭(OV9281)。
——一個沒有任何智能的隨身記錄儀。不用捲簾快門,因為果凍效應會毀了機械動作的瞬間。它不認人、不認路、不跑YOLO目標識別,只管把微距下的齒輪嚙合過程錄下來,留著事後一幀一幀回放。
邊緣計算與高精度時間戳對齊底板。
——機器的黑匣子。飛機摔了靠黑匣子復盤,這隻蟲子摔了,也得有自己的黑匣子。
所有傳感器數據和視頻幀,必須被綁定在同一條統一時間線上。
至少要精確到毫秒級,電流、IMU這些高速數據,再單獨保留更高頻採樣時間戳。
寫到這裡,江臨停頓了一下,把一開始打算用的樹莓派三個字刪掉。
Linux系統的非實時性會帶來不可控的調度延遲,對於分秒必爭的機械正時來說,那就是毒藥。
他改成了:【主控板:STM32H7高性能單片機。】
他現在還不需要強算力,只要穩定的硬體定時器,足夠快的ADC採樣,以及一套不會被SD卡寫入延遲拖亂的環形緩衝區。
強算力會像海妖的歌聲,勾著人去做極其複雜的感知,做全地形的步態規劃,做花哨的波士頓動力式的平滑控制。
這不是G-01該乾的活。
G-01的任務,不是在聚光燈下表演我很聰明,我能後空翻,而是像一個沉默的苦行僧,把身體裡那點機械結構失效的潰敗過程,老老實實地記下來。
底盤第一版的圖紙不必推翻,仍舊保持低速六足的構型。
六足在幾何學上的好處是接觸點極度清楚:每條腿什麼時候落地,什麼時候失去載荷,棘爪什麼時候鎖止,力學傳導路徑清晰,一筆一筆記得清。
他在旁邊用括號留了一行備忘:【備選:輪腿混合架構的複雜性太高,干擾變量太多,以後再說。】
接著,他在紙上畫了張簡圖。
中央主軸電機,兩側對稱的六條腿,每一個聚甲醛(POM)切削的足端內嵌一個壓力點。
機身正中的質心位置焊著一顆IMU,主軸電機的供電線上串聯著霍爾電流採樣,前方探出一個毫無美感的裸露攝像頭排線,側面掛著一小塊布滿綠油的PCB記錄模塊。
畫完,他端詳了一會兒。
這台長滿了飛線和傳感器的G-01,比第一隻光禿禿的蟲子更丑了
但它無疑也更有用。
……
最先到貨的是足端壓力傳感器。
一包薄薄的柔性薄膜片,裝在防靜電袋裡,輕飄飄的,拿在手裡像幾片被隨手裁成圓形的黑色劣質塑料紙。
賣家頁面的參數寫得天花亂墜。
航空級高靈敏,百萬次高重複性,零溫漂,完美適用於高仿生機器人足底壓力檢測及步態分析。
江臨拆開防靜電袋,用鑷子夾起一片,對著頭頂昏黃的白熾燈看了整整兩秒。
這東西絕對不能直接信。
哪怕標稱參數再好,也不能信。
做過底層硬體和非標自動化的人都知道,傳感器這種東西,最容易合法地欺騙系統。
即便它工作完全正常,輸出的電壓信號極其穩定,ADC(模數轉換器)讀到的數值也完全符合歐姆定律,也能憑實力把整個上位機的運動解算帶偏到姥姥家去。
這涉及到一個極度深淵的工程學難題。
觀測者效應在宏觀機械上的幽靈再現。
比如把這片薄膜直接貼到原本是球面的足端下面?
原本的點接觸,瞬間變成了面接觸,直接改變了足底的接觸面積和受力模型。
比如為了防止磨損,給它外面加一層硫化橡膠保護?
嗯,足底的靜摩擦係數和動摩擦係數全變了,原本能在木板上滑行的步態,現在會死死卡住。
比如為了採集信號,走線從腿側的連杆繞過去?
恭喜,幾根矽膠軟線的質量和拉扯力,直接改變了整條腿的擺動慣量,原本調好的機械諧振頻率全廢了。
如果用的雙面固定膠太硬,足端會失去原本設計好的柔順性,走起來像個踩高蹺的殭屍。
如果用的固定膠太軟,比如3M的厚泡棉膠,測試時足端受到側向剪切力,薄膜和保護層之間就會發生肉眼看不見的微小滑移。
……
說白了,江臨想讓G-01把平台的失敗記下來,可第一步遇到的問題就是記錄這個動作本身,會改變被記錄的平台物理特性。
這比買到壞件更麻煩。
買到壞東西,大不了退貨換新的。
但如果裝上這套傳感器網絡之後,機器的重量分布、摩擦力、柔順性全變了,它已經不再是原來那隻純粹的蟲子了。
那麼,它最終記錄下來的失敗,究竟是本體機械結構的翻車,還是記錄系統自己通過物理干涉,憑空製造出來的Bug?
這是硬體工程里的哲學問題。
上午九點半,教師樓後排的小車庫。
工作檯上攤著G-01第一版底盤。
它仍然沿用六足結構,但為了建立痛覺神經系統,江臨像給一具還沒縫合的機械身體接上神經,給它順手飛了幾條扎眼的線束。
紅黑相間的足端壓力線,屏蔽網包裹的IMU數據線,從電調上硬接過來的主軸電流採樣線,一條極寬的FPC攝像頭排線,以及腹部那塊他用嘉立創打樣,焊滿了0402阻容件的自研數據記錄板。
一眼看過去,它簡直像是一隻剛做完賽博義體植入手術,還沒縫合裝甲的金屬怪物。
江臨拿起第一片薄膜壓力傳感器,小心翼翼地墊在左前足的POM足底。
壓緊,貼上極薄的3M 468MP雙面膠,走線。
用鑷子引導著極細的漆包線,沿著鋁合金連杆的內側,繞過所有可能發生干涉的擺動死角。
最後,用一點點熱熔膠和小線夾固定。
一套標準的高密度組裝操作,看起來毫無破綻。
於是啟動電機。
「滴——」
電調發出清脆的上電提示音。
他輕輕推下啟動開關,啟動主軸電機。
G-01的機械齒輪開始咬合,發出低沉而規律的咔嗒聲。
它慢慢抬起左前腿,邁出第一步。
很穩健。
第二步,右中腿跟上。
沒問題。
第三步剛抬起來,然後毫無預兆地,迎來了整個項目最喜聞樂見的翻車環節。
左前腿那根順著連杆固定的極細的足端線束,在腿部擺動到最高點時,因為連杆的相對運動,產生了一個不到兩毫米的微小外凸。
就是這微小的兩毫米,讓線束的絕緣皮被旁邊的主傳動杆輕輕擦了一下。
真的只是像羽毛一樣擦了一下。
可就是這微不足道的一點點摩擦阻力,讓左前足在往下落的瞬間,由於被線扯了一下,慢了半個節拍。
電腦屏幕上,上位機實時滾動的壓力曲線上,立刻冒出一個刺眼的假峰值。
日誌窗口無情地輸出一行紅字。
【Error Code 0x1A】左前足端壓力異常,標記為疑似提前觸地。
江臨盯著屏幕,沒動。
此時,機器的電機還在轉,它繼續往前走,左中腿結結實實地接住了整個機身的載荷,機身姿態平穩,沒有任何要摔倒的跡象。
但在數據世界裡,數據已經髒了,這台機器已經死了。
江臨關掉電機電源。
左前足根本沒有提前觸地。
是那根用來探測觸地的線束,像一隻有形的手,在半空中拖住了它。
傳感器沒有記錄到失敗的真相。
相反,傳感器用它自己的物理實體,製造了一次失敗的影子。
江臨面無表情地拿起螺絲刀和斜口鉗。
把那根線拆下來,重新規划走線路徑,用遊標卡尺測量了間隙,從連杆的外側改到了不會發生摩擦的內側,又用新近購買的3D印表機臨時打了一個倒角平滑的限位線夾。
再試。
這一次,線完美避開了所有干涉區,沒有掃到連杆。
但墨菲定律永遠不會缺席。
新的Bug如期而至,且更加隱蔽。
由於之前擔心硬膠會改變足底摩擦,他採用的傳感器保護膠稍微軟了那麼一點點。
當G-01的足端踩上測試用的斜向尼龍障礙條時,薄膜傳感器和保護層之間,發生了肉眼無法察覺的微小滑移剪切。
上位機的數據曲線里,出現了一個異常優美平滑的緩慢上升段。
系統判定:「載荷平滑轉移,步態極佳。」
「神仙數據啊。」
江臨笑嘆,在這種剛性機械結構里,根本不可能存在這麼平滑的受力曲線。
他調出正對著足端的高速攝像頭,將幀率拉滿到240fps,開始一幀一幀地轉動滑鼠滾輪進行回放。
畫面在漆黑的屏幕上緩慢跳動。
停在第九十七幀。
畫面里,金屬足端早已死死地壓住了尼龍障礙條,足底的POM材料甚至發生了微小的彈性形變。
然而,旁邊同步顯示的壓力曲線,卻像個剛睡醒的樹懶,還在慢吞吞地往上爬升,根本沒有達到觸地閾值。
延遲。
還是足足14幀。
以當前240fps的幀率換算,14幀意味著58毫秒。
對一個在B站刷著擦邊舞蹈視頻的觀眾來說,58毫秒連眼皮眨一下的時間都算不上。
但對於一台依靠內部棘爪正時邏輯,在失衡邊緣瘋狂試探來活命的機械六足蟲來說,58毫秒的物理信號延遲,足夠把整條純機械的動力鏈送進火葬場。
58毫秒,棘爪早就錯過了最佳的咬合時機,齒輪會在錯誤的位置卡死,電機瞬間過載燒毀。
江臨在記錄本上寫——
【G-01踩坑記錄:傳感器安裝方式及材料力學引入假柔順。保護層剪切滑移與FSR遲滯共同引入讀數延遲,當前安裝方式下延遲約58ms。不能直接用於判斷觸地時刻,必須先改安裝結構,再與電流、IMU和視頻幀做交叉校驗。】
【G-01第一課:給身體接上神經,不等於身體真的會說實話。】
第一隻蟲子的難點,是攻克機械加工精度,讓它在複雜的相位中走起來。
第二隻蟲子的難點,是攻克系統工程,讓它說真話。
而在這個充滿摩擦,溫度,噪聲的現實物理世界裡,讓一台由無數零件拼湊起來的機器說出真話,比讓它走起來,難上百倍。
……
下午兩點,吃過午飯小睡了一覺的江臨開始收拾比足端壓力更讓人抓狂的東西。
IMU。
如果說足底的壓力傳感器是個喜歡用物理滑移來撒謊的騙子,那IMU就是個患有神經衰弱的敏感肌。
敏感本來是它的本職工作。
通過內部微機械結構,它能精準記錄機身在三維空間裡的橫擺、俯仰、微小的震動,以及每一次跌倒時的瞬時衝擊G值。
可問題在於,如果你把這個敏感的神經元固定在錯誤的位置,它就會把主軸電機的電磁高頻振動,某顆M3螺絲沒擰緊的鬆動,甚至是某根數據線在風中拍打機架的震顫,統統誤認為是機身的姿態變化。
江臨在這個小小的矽片上,經歷了三次痛苦的疊代。
V1.0方案(中置底盤直貼)。
他遵循了物理學中最直觀的邏輯,把IMU貼在機身的幾何中心,也就是底盤的正中央。
位置絕對準確。
可是那個功率高達150W的直流無刷主軸電機,就在它旁邊不到五厘米的地方。
主軸一通電開始旋轉,哪怕機器還沒落地,上位機里的數據波形直接炸裂。
高頻的電磁噪聲和電機的機械共振,順著剛性底盤全傳了過來。
機身明明穩如老狗,屏幕上的姿態曲線已經瘋得像在跳迪斯科。
V2.0方案(上層柔性支架)。
秉著惹不起躲得起的原則。
他用3D印表機打了一個尼龍小架子,把IMU挪到了遠離底盤和電機的上層空間。
電機噪聲確實小了,波形平滑了不少。
但江臨還沒來得及高興,一落地測試就原形畢露。
尼龍支架太薄,懸臂太長,機器只要邁開腿走路,整個機身帶動的低頻晃動,讓那個小支架自己開始產生共振顫抖。
最終,IMU記錄下來的根本不是真實的機身整體姿態,而是那個破支架在空中瘋狂的帕金森抖動。
V3.0方案(加厚金屬配重塊)。
江臨動了真火。
他用6061硬質鋁合金搓出了一個極厚、硬的固定底座,然後攻了幾個極緊的螺紋孔,把IMU鎖在上面。
這一次,剛性絕對足夠,數據瞬間乾淨得像教科書里的示例。
然後就是這塊沉重的實心鋁塊,增加了機身上半部分的質量分布。
機器的整體重心被憑空拔高了12毫米。
當這台機器再次爬上那些非重複間距板時,因為重心的改變,側傾風險明顯增加。
記錄系統,再一次無情地改變了被記錄的物理對象。
江臨冷靜地把這三次測試、三組截然不同的數據圖表並排放在屏幕上。
第一組:被電機高頻噪聲污染的假姿態。
第二組:被支架低頻自振污染的假姿態。
第三組:很乾淨,卻讓機器變得更容易摔倒的假數據。
三條路,每一條都不完美。
但這就是工程學,不用在真空球形雞的假設下尋找一個完美的解析解。
而是在一堆糟糕透頂的選項里,通過無數次的權衡,妥協,壓榨材料的極限,挑出一個錯得最少的。
最終,他配置了一個複合濾波方案。
機械層面,將IMU移到了靠近機身重心,但不在主軸正上方的側邊。
用一塊短小精悍的標準化鋁座固定,然後在鋁座和機架之間,墊入一層極薄的高密度丁腈橡膠片,用來做物理層面的低通濾波。
連續測試了四次不同厚度不同邵氏硬度的墊片,再配合軟體層面的卡爾曼濾波算法,才勉強把噪聲壓到了邊緣計算板能夠處理的閾值範圍以內。
……
傍晚時分,江臨放在一旁的手機屏幕不斷亮起,低熵工坊B站後台正在發送瘋狂湧入的消息提示。
這很正常。
一個沒有歷史投稿的新帳號,突然靠一條硬核機械視頻衝進科技區推薦池,又正好踩著非周期這個熱詞,必然會招來一堆亂七八糟的東西。
有人在耐心等低熵工坊的第二期技術解析。
有人在冷嘲熱諷,認定他江臨已經江郎才盡,不敢繼續往下做,生怕暴露理論的缺陷。
有人像催債一樣在評論區刷屏催他放出詳細的SolidWorks圖紙。
有人直接開口:【UP主,我是學生,CAD發我一份,我想學習一下。】
還有人更直白。
【哥們,你這個思路我感覺能搞創業,要不要一起做?我負責商業,你負責技術。】
江臨一條條滑過去,飛快瀏覽了一遍,關掉後台,接著調 G-01。
晚上七點三十五。
第一組乾淨的翻車數據終於出現。
測試環境其實很簡單,工作檯上只有一塊短小的木板,上面用強力膠固定著一根呈現30度斜角的尼龍條。
目標也只有一個:主動製造右前腿在特定相位下的斜向卡滯。
G-01以設定的極低速度,沉穩地向前邁進。
左前腿落地,一切正常。
右中腿支撐起一半的機身重量,正常。
右前腿在空中划過一條弧線,慢慢接近那根斜向尼龍條。
足端接觸的瞬間。
江臨盯著屏幕上被切分成四個象限的同步畫面。
第一象限(左下角):壓力曲線。
屏幕上,代表右前足的綠色壓力曲線輕輕抬頭。
第二象限(左上角):IMU姿態。
緊接著,紅色橫擺曲線出現了一小段幾乎微不可察的向右偏轉趨勢。
第三象限(右下角):主軸電流。
此時,電流波形依然是一條平靜的直線,電機還不知道災難即將降臨。
隨著高速攝像機的畫面逐幀推進,時間被無限拉長。
第十二幀:右前足的POM材料在光滑的尼龍條上,因為斜向受力,發生了一次極其微弱的側向滑移。
就在滑移發生的瞬間,壓力曲線突兀地分裂出兩個異常的雙峰。
第十五幀:側滑帶來的連鎖反應爆發了。
接觸角的微小偏差,通過連杆系統放大了數倍。原本應該完美避開的棘爪齒尖,悽厲地擦到了轉動中的齒條邊緣。
第十七幀:機械干涉的阻力瞬間反饋到主軸。
電流採樣晶片捕獲到了安培數的陡然暴增,一條黃色的直線如利劍般直插雲霄。同時,機身因為受力不均,橫擺角速度劇烈加速。
第二十幀:災難徹底降臨。
主軸電機的驅動板觸發了過載保護,切斷了PWM輸出,整台機器發出一聲沉悶的咔聲。
機器停住了。
江臨把這不到一秒鐘的慢動作回放,來來回回拉動了整整五遍。
再把四條時間軸絕對對齊的數據拖出來看。
足端壓力,IMU 橫擺,主軸瞬時電流,高速視頻捕捉幀。
在人類工程學的歷史長河中,這微不足道。
但在這個小車庫裡,這是第一次,四條原本孤立的物理證據鏈,嚴絲合縫地對上。
不是那種被濾波算法塗抹過的完美擬合,而是帶著真實物理世界粗糙毛邊的,足夠清晰的因果邏輯鏈。
錯誤,並不是從電機電流異常開始的。
錯誤,也不是從機身傾斜那一刻開始的。
錯誤,更不是從那聲刺耳的棘爪死鎖聲開始的。
一切災難的源頭,第一下真正要命的失效,是那次在第十二幀發生的,足端在斜向接觸里的微小側滑。
側滑,製造了毫米級的接觸角偏差。
偏差,把本該順暢工作的棘爪硬生生拖進了一個錯誤的機械相位。
棘爪在這個錯誤的時刻提前嚙合,這才引發了最終的整條運動鏈的死鎖。
邏輯完美閉環。
江臨看著屏幕,只覺得頭皮發麻。
這套神經系統太可怕了,但也太美了。
如果沒有那片該死的足端壓力傳感器,如果只看外部的錄像視頻,所有人都會理所當然地以為,是底部的棘爪設計有缺陷,發生了疲勞卡死。
如果沒有精確到度數的IMU,如果只看粗暴的電機電流曲線,大家都會判定是電機馬力不夠,遭遇了過載。
如果沒有那個全局快門的高速攝像頭提供絕對時序同步,如果單看壓力曲線那詭異的雙峰,又會很容易誤判成簡單的提前觸地干涉。
只有當這四條帶著雜音的線束合在一起,交叉印證,失敗,才終於第一次在這個狹小的車庫裡,開口說出了一句完整清晰的話語。
江臨在屏幕上按下了暫停鍵。
右前足端,斜斜地地壓在尼龍條上的瞬間。
此時的機身,還沒出現任何肉眼可見的傾斜。
決定翻車與否的棘爪,還沒有真正咬合鎖死。
而代表主軸電流的黃色曲線,才剛剛開始微微抬頭。
這是問題真正開始爆發之前,安靜隱秘的一幀。
截圖,保存,錄入日誌。
命名:G01_fail_001_initial_slip_frame.png
【Test_ID:G01-001】
【Terrain:斜向固定尼龍條極限測試】
【Start_Phase:初始運動相位 52.5°】
【First_Event:災難原點-右前足端斜向接觸後發生側滑】
【Propagation:因果鏈傳導-側滑→接觸角偏差畸變→棘爪提前擦齒干涉→瞬時負荷突增導致電流上升→觸發主控硬體保護停機】
【Final_Stop:系統狀態-運動鏈發生不可逆死鎖】
【Recoverable:自恢復可能-否】
第一條具有完整因果追溯能力的失敗日誌,在6月30日這個悶熱的夜晚,正式落筆。
夜裡九點。
江臨打開剪輯軟體,把剛才這個頗具歷史意義的翻車過程,隨手剪成了一段只有十六秒的分屏視頻。
視頻被切分成嚴謹的四宮格。
左上方,是足端接觸瞬間的超高清慢動作特寫。
右上方,是實時同步滾動的綠色壓力受力圖。
左下方,是隨著機身輕微晃動而波瀾起伏的紅色IMU橫擺曲線。
右下方,則是那條如同生命線一般,最終飆升至極限的黃色主軸電流。
十六秒的時間裡,每一幀的數據跳動,都精準踩在機械咬合的節點上,猶如心跳般震撼。