光標在第一行閃著。窗外黑透了,廠區路燈的光打在玻璃上映出他的輪廓。
他開始敲第一行代碼。
第六天。
MPC的輸出端接上PPO模塊。
思路不複雜——MPC每個控製周期吐出一個參考關節角度向量和一個參考接觸力向量,PPO的Actor網絡拿到這兩組參考值之後,輸出的不是絕對力矩指令,是修正量。
殘差。
正負20%以內。超出截斷。不讓RL把MPC的底子掀翻。
接口對齊花了一天半。
問題出在頻率差上。MPC跑10毫秒一個周期,PPO推理周期2毫秒——五倍。MPC還沒更新下一幀參考軌跡,PPO已經刷了五次修正量出來,後三次修的全是過期數據。
林辰在中間塞了一個插值層。MPC的低頻參考軌跡做三次樣條平滑,展開到PPO的高頻時間軸上。每個PPO周期拿到的參考值不再是階梯跳變,而是平滑過渡的曲線。
梯度回傳鏈路調了三版。
頭兩版,PPO的損失函數裡MPC參考值的權重壓得太高,RL學出來的殘差貼著零線不動彈——等於沒接。第三版把權重配比從7:3改成5:5,RL的自由度放開了,殘差開始有波動。
訓練啟動。五千個episode。
虛擬人形模型從站著不動,到抬起了右腳。
重心往左腿轉移。MPC的QP求解器規劃了落腳點——右腳前方十二厘米。PPO補償了擺腿速度,把膝關節屈曲的峰值時刻提前了15毫秒。
右腳落地。
一步。
軀乾晃了一下,左手臂甩出去,幅度很大——手掌朝外翻著,手指張開,整條胳膊從肩關節往外掄了半圈。難看。但那一步踩實了。
沒倒。
林辰把這幀回放反複看了三遍。重心轉移曲線,ZMP軌跡,關節力矩分布——MPC提供了基礎軌跡,PPO在上麵做了細節補償。配合得不算好,接縫明顯,但方向對了。
訓練規模拉到五萬個episode。
地麵參數隨機化直接從CM-D搬過來,不用重寫——剛度和摩擦係數做連續隨機采樣,局部高度也跟著變。在CM-D的基礎上多加了兩個擾動項:軀乾質量擾動,正負兩公斤隨機,模擬負重變化;外力側推,隨機時刻施加水平力,20到60牛,持續0.3秒。
四足不需要練這些。四條腿撐著,兩公斤的負重變化連步態都不會改。
請前往oop.tw閱讀本書最新內容
雙足不行。兩公斤的質量偏移會讓重心高度和慣性張量同時變,ZMP的安全邊界跟著挪。不練,上了實機就等著摔。
四天。工控機四進程並行,跑了九十多個小時。
五萬個episode結束。
仿真畫麵裡,虛擬人形模型連續走了四十步。
手臂擺動幅度太大,有幾步胳膊掄得跟劃槳似的。步頻不穩定,快兩步慢一步的晃。轉彎的時候軀乾先歪過去,腿再跟,多走了兩步才把方向掰正。
但四十步沒倒。
中間被施加了三次側推。其中一次50牛打在右肩上,模型晃了一下——左腳快速橫跨了半步,重心拽回來,兩步之內恢複正常步態。
蘇明哲把訓練日誌調出來看了十五分鐘。
關掉日誌,打開自己的底層運動控製文檔,從第一頁開始改。關節力矩上限全部上調15%。原來的參數是按保守值設的,峰值力矩留了太多餘量。四十步的仿真數據擺在這兒,保守過了頭——餘量太大,等於把關節響應速度白白按著。
改完發了條內網消息給林辰:“力矩上限調過了,新參數在倉庫裡。”
林辰沒回。
他在寫全身協調控製器。
第十一天。淩晨。
辦公室隻亮著台燈和三塊顯示屏。空調的定時早過了,暖風停了,室溫降到十四五度。林辰穿著加絨衛衣,兩隻手在鍵盤上敲著,指頭是涼的。
。事的身半下有隻是不路走人但。乾軀和腿管隻案方的前之
。轉旋軸豎繞會不才乾軀,消抵相互,反相向方的腿和量動角的生產,前往臂左候時的前往腿右——償補量動角供提動擺臂手
。界出心重了少,大過移偏心重了多。度三到兩?少多傾。方上正腳撐支到拉心重把,傾邊那腿撐支往微微乾軀候時的相撐支腳單——移轉心重合配傾側乾軀
。動晃的來過傳乾軀消抵,償補向反做度由自個兩部頸。晃著跟能不袋腦,晃在子身。像圖的淨乾供提統係覺視給——定穩線視持保要需部頭
。標目化優個一進一統部全度由自個63
。倍三了翻量算計
。來下不壓數次代迭PQ,了偏測猜始初,%8到能下態步端極在差誤化性線陣矩比可雅的FKE,多太項性線非程方學力動的度由自個63——了住不撐兒這在設假性線,案方算計預波濾曼爾卡的用上D-MC
。波濾曼爾卡跡無。FKU換
。%04出多FKE比銷開算計。程方學力動的整完遍一過要都期周個每——個37——點amgis個1+n2。播傳性線非做集點amgis用,化性線做不
。夠。了來出擠量餘算計的秒微五。次兩到壓次三從數次代迭的PQ。級量個一了高度精測預但
。時小六十三了跑機控工。edosipe個萬十
。點四晨淩。天三十第
。前器示顯到走鞋著拉趿,來起坐著撐手左用他。來起不抬得酸膀肩邊右,了歪子脖。醒弄上床軍行從辰林把音示提的束結練訓
。放回的edosipe個一後最開點
。步邁。始開立站從型模形人擬虛
。腳右。腳左
。內以度一負正到壓動晃向側的乾軀。了掄不,圍範常正到斂收度幅,動擺後前態步著跟臂手。步2.1秒每——定穩頻步
右,牛06——了來推側。步十三第到走