動力學
遞迴牛頓-歐拉演算法
遞迴牛頓-歐拉演算法是一套又快又有條理的「配方」,用來計算逆動力學——也就是算出機械臂的每個關節,為了實現某個想要的運動,究竟需要多大的扭矩。它的巧妙之處在於:它不是把一大團方程一次性地全部解開,而是沿著連桿組成的鏈條走兩趟,每次只處理一根連桿。可以把手臂想像成一排手拉手的人:資訊先從肩膀一路傳到指尖,然後再從指尖把一筆「帳」一路結算回肩膀。
第一趟是向外走的,從手臂的根部一直到末端。它從根部如何運動出發,一根連桿接一根連桿地算出後面每一根連桿轉得有多快、加速度有多大——因為每根連桿都是疊在前一根的運動之上的。一旦走到末端執行器,第二趟就掉頭向內掃回去,從末端回到根部。在這趟返程裡,它把每根連桿必須施加給相鄰連桿的力和扭矩逐一相加,一邊走一邊把負載累積起來,直到把每個關節所需的扭矩都算了出來。
為什麼要費這個勁搞兩趟結構?因為它效率高得驚人。把機器人完整的運動方程直接寫出來的那種笨辦法,會隨著關節增多而爆炸式地膨脹;而遞迴牛頓-歐拉的做法增長得很溫和,與關節數量成正比——快到足以在真實硬體上每秒執行成百上千次。正是這種速度,才讓機器人的控制器能夠在運動過程中即時算出自己的扭矩,這也是為什麼這套演算法成了藏在大多數現代機器人控制軟體內部的一頭「老黃牛」。
一隻六關節的工業機械臂在它的控制迴路裡每秒執行一千次遞迴牛頓-歐拉演算法:向外的一趟掃描算出每根連桿如何加速,向內的一趟掃描彙總出每個馬達必須提供的扭矩,整個過程在遠不到一毫秒內完成。
向外掃一趟、向內掃一趟——轉瞬之間就算出了整條手臂的扭矩。
它的名字取自牛頓關於力的定律和歐拉關於轉動的定律,正是它對每根連桿依次套用的那兩條物理規則。
又稱
另見