自由度)
簡介這份PDF版課后習題答案專為學習《現(xiàn)代機器人學》的本科生、研究生及機器人方向工程師準備覆蓋第2章至第13章全部習題解答內(nèi)容涉及運動學、動力學、路徑規(guī)劃與控制策略等核心模塊。文件從運動學基礎(chǔ)切入如第2章通過多點定位系統(tǒng)講解自由度計算結(jié)合組合數(shù)學推導n(n1)/2再以上肢機器人為例分析肩、肘、腕關(guān)節(jié)構(gòu)成的七自由度機構(gòu)及約束下的運動特性幫助讀者理解空間定位與關(guān)節(jié)耦合關(guān)系。后續(xù)章節(jié)還延伸至動力學建模、軌跡規(guī)劃、控制算法等進階主題既適合課后自查也便于備考復習。資源為單一PDF文件共13.97MB內(nèi)含目錄跳轉(zhuǎn)與章節(jié)導航已有1247人下載學習。習題解答注重幾何直觀與推導細節(jié)能有效彌補教材課后思考題缺乏參考的短板尤其適合自學能力較強的學習者作為對照演練工具。1. 自由度算出 -2 卻能動Grübler 公式的適用邊界在哪里一個自由度算出來是負數(shù)的機構(gòu)卻實實在在地能動。這是《現(xiàn)代機器人學》第 2 章習題 16 給出的場景四個鉸接在球面上的連桿用空間版 Grübler 公式代入結(jié)果是 -2但機構(gòu)明明沿著球面有 1 個自由度。問題出在約束所在的維度——球面機構(gòu)的運動被限制在二維流形上三維空間公式的“約束賬本”從一開始就多算了。這件事的意義不止于一道習題它說明自由度不是“數(shù)一數(shù)關(guān)節(jié)”就能得到的量而是約束與構(gòu)型空間相互作用的產(chǎn)物。搞懂 Grübler 公式什么時候可信、什么時候必須放棄才能真正理解機器人為什么能動、為什么會卡死也才能讀懂后續(xù)章節(jié)里運動學、動力學和控制算法的全部前提。2. Grübler 公式關(guān)節(jié)約束的總賬本、閉鏈抵消與復合關(guān)節(jié)的合并2.1 推導從 6N 到 6(N?1?J)Σf 的每一步先給結(jié)論??臻g機構(gòu)的 Grübler 公式寫作dof 6(N ? 1 ? J) Σ? f?其中 N 是連桿總數(shù)必須包含地面J 是關(guān)節(jié)總數(shù)f? 是第 i 個關(guān)節(jié)允許的相對自由度。平面機構(gòu)把系數(shù) 6 換成 3變成 dof 3(N ? 1 ? J) Σ? f?。這個公式不是拍腦袋寫出來的。想象機構(gòu)的所有連桿在連接之前是 N 個彼此分離的剛體每個剛體在空間有 6 個自由度3 個平移加 3 個旋轉(zhuǎn)一共 6N。選中地面作為參考系后整個系統(tǒng)還保有 6 個整體運動自由度這 6 個要先扣除剩下 6(N?1)。每安裝一個關(guān)節(jié)就在兩個連桿之間建立約束一個允許 f? 個自由度的關(guān)節(jié)本質(zhì)上施加了 6?f? 個獨立約束。J 個關(guān)節(jié)一共施加 Σ(6?f?) 個約束。于是dof 6(N?1) ? Σ(6?f?) 6(N?1) ? 6J Σf? 6(N?1?J) Σf?平面情形完全同理平面剛體只有 3 個自由度每個關(guān)節(jié)約束 3?f?所以系數(shù)是 3。注意整個推導里藏著公式唯一的軟肋——“獨立約束”四個字。后面的所有翻車現(xiàn)場幾乎都是這四個字出了狀況。用一個小函數(shù)可以把整套習題的代入過程自動化也方便自己拿新機構(gòu)做驗算# 空間版 Grübler 公式的最簡實現(xiàn) # N連桿總數(shù)含地面J關(guān)節(jié)總數(shù)f_list各關(guān)節(jié)自由度列表 def grubler(N, J, f_list, dim6): return dim * (N - 1 - J) sum(f_list) # 常用理想關(guān)節(jié)的自由度R1, P1, U2, S3, C2 JOINT_DOF {R: 1, P: 1, U: 2, S: 3, C: 2} # Stewart 平臺3 個 P 3 個 U 3 個 S # 6 根桿 上平臺 地面 8 個連桿9 個關(guān)節(jié) N 8 J 9 f_list [JOINT_DOF[P]] * 3 [JOINT_DOF[U]] * 3 [JOINT_DOF[S]] * 3 print(grubler(N, J, f_list)) # 期望輸出 6這里的參數(shù)有三個要點。第一N 必須含地面這是初學者最容易漏的一項漏掉地面會讓結(jié)果整體偏移 6平面情形偏移 3而且偏移后往往恰好“看起來合理”非常陰險。第二f_list 里的值是理想關(guān)節(jié)的自由度數(shù)R 和 P 各為 1U 為 2兩個正交旋轉(zhuǎn)S 為 3三個旋轉(zhuǎn)自由度C 為 2同軸的 R 加 P。第三dim 參數(shù)決定了用空間版還是平面版這看似只是把 6 換成 3實際對應(yīng)著一套完全不同的約束假設(shè)第 4 章會專門展開。習題 2.5 是一個立刻能驗證的例子機械臂有 N76 個連桿加地面、J75 個 R 加 2 個 S、Σf11代入得 6(7?1?7)115。習題 2.11 反復在算并聯(lián)平臺3P3U3S 構(gòu)型 N8、J9、Σf18代入得 6(8?1?9)186平臺保留了完整的 6 自由度而把其中一個 P 關(guān)節(jié)去掉后Σf 變成 17自由度立刻掉到 5。這套題的價值正在于此不用建任何模型光看關(guān)節(jié)清單就能預估機構(gòu)能力。2.2 閉鏈為什么“加腿不加自由度”并聯(lián)機構(gòu)的總賬本一個被問得最多的問題是既然每個關(guān)節(jié)“吃掉”6?f? 個自由度為什么不直接寫 dof 6N ? Σ(6?f?)答案藏在 N?1?J 這個組合里。6N 是所有連桿尚未連接時的自由度數(shù)扣掉 6 個整體運動后得到的是“相對地面”的自由度底數(shù)。接著每加一個關(guān)節(jié)理論上都要從這堆自由度里扣掉 6?f?。問題在于當機構(gòu)中出現(xiàn)閉環(huán)時不同關(guān)節(jié)施加的約束可能彼此重疊——兩個約束限制的是同一個自由度方向其中一個就成了冗余。公式假設(shè)所有約束相互獨立所以在一般位形下它給出的是“通用結(jié)果”一旦幾何特殊化或出現(xiàn)冗余約束真實自由度就會偏離公式值。習題 2.15 的正方形連桿鏈就是經(jīng)典反例留到第 4 章展開。閉鏈場景下有一個非常反直覺的推論出現(xiàn)在習題 2.8 里一個物體由 n 條串聯(lián)支腿支撐每條支腿若恰好是 6 自由度開鏈則無論 n 是多少系統(tǒng)總自由度恒為 6。把每條腿當作一個“6 自由度關(guān)節(jié)”看待N2物體加地面、Jn、Σf6n代入 6(2?1?n)6n6。這個結(jié)果看起來很神奇背后的機制其實是每增加一條腿雖然帶來了 6 個新的關(guān)節(jié)自由度但同時增加了 6 個新的閉環(huán)約束增量恰好抵消。這也是并聯(lián)機器人設(shè)計的底層邏輯——腿再多平臺該有的自由度不會憑空變多除非某些約束不獨立。習題 2.4 的雙手握方向盤則是同一個思路的變體兩個手臂各提供 n?6 個自由度方向盤本身再加 1總計 2n?11。約束是疊加記賬的但不是簡單相加而是“每個約束都在削減自由度余額”。2.3 復合關(guān)節(jié)的合并與拆分C 關(guān)節(jié)、fork joint 與計數(shù)自洽習題 2.9 提供了同一個機構(gòu)用兩種數(shù)法得到同一個答案的絕佳對照。圖 (a) 把每個同軸的 RP 對合并成一個 2 自由度的 C 關(guān)節(jié)來數(shù)N8、J10、Σf12平面公式給出 3(8?1?10)123。圖 (b) 把所有 R 和 P 全部拆開數(shù)N14、J18、Σf18代入得 3(14?1?18)183。兩種數(shù)法結(jié)果一致這不是巧合而是說明 C 關(guān)節(jié)在物理上確實等價于一個同軸 R 和一個同軸 P合并只是把“本來就不產(chǎn)生額外獨立約束”的兩個自由度打包。理解這一點對做自由度分析很重要關(guān)節(jié)的“數(shù)法”是自由的但必須與連桿數(shù) N 聯(lián)動。你把一個復合關(guān)節(jié)拆成兩個關(guān)節(jié)J 增加了 1同時這個關(guān)節(jié)內(nèi)部新引入的連桿也會讓 N 增加 1N 和 J 同步增加在 6(N?1?J) 里相互抵消最后靠 Σf 的增量來決定結(jié)果。所以真正要把握住的是“每個物理關(guān)節(jié)提供哪些獨立的相對運動”而不是死記公式。同樣的判斷也適用到生物機構(gòu)。習題 2.2 把人臂建模成 7 自由度開鏈肩是 3 自由度的球關(guān)節(jié)肘 1 自由度前臂繞自身軸線旋轉(zhuǎn) 1 自由度腕 2 自由度。這個模型的要點在于“把軟組織關(guān)節(jié)近似成理想鉸鏈”而不是去復刻解剖結(jié)構(gòu)。習題 2.3 進一步討論前臂閉鏈指出若不細究解剖細節(jié)單靠“整體 7 自由度減去手掌被固定的 6 個約束還剩 1 自由度”就能推出肘尖只能沿一條圓弧運動——公式在這里給出的不是數(shù)字而是運動能力的上界。3. 構(gòu)型空間自由度背后是 R2×T? 這樣的拓撲真相3.1 旋轉(zhuǎn)關(guān)節(jié)的 C-space 是 S1周期性在運動規(guī)劃里的代價自由度個數(shù)只回答了“能動的方向有幾個”沒回答“這些方向是怎么糾纏在一起的”。構(gòu)型空間C-space才是更完整的答案它是機構(gòu)所有可能位姿組成的集合其維度等于自由度其拓撲結(jié)構(gòu)決定運動規(guī)劃與插值的性質(zhì)。一套只教“數(shù)自由度”的教材是殘缺的而這套習題從第 2 章就在反復訓練 C-space 的直覺。一個旋轉(zhuǎn)關(guān)節(jié)的 C-space 是圓 S1不是區(qū)間 [0, 2π]。差別在于角度 θ0 和 θ2π 對應(yīng)同一個物理狀態(tài)區(qū)間的兩端必須粘起來。這個“粘合”不是數(shù)學潔癖它有實際后果——如果在一個關(guān)節(jié)角上做線性插值從 350° 插到 10°直線路徑會繞 340° 的遠路而不是走 20° 的近路。所有針對旋轉(zhuǎn)關(guān)節(jié)的運動規(guī)劃算法本質(zhì)上都在處理這個環(huán)面時區(qū)問題插值要選最短纏繞方向關(guān)節(jié)限位要在圓上開一個“切口”奇異位形要避開角度組合的特定等價類。習題 2.16 的球面四連桿恰好展現(xiàn)了這種拓撲的復雜一面。機構(gòu)有一個自由度由四個旋轉(zhuǎn)關(guān)節(jié)構(gòu)成所以它的 C-space 是四維環(huán)面 T? 里的一條曲線這條曲線可能閉合也可能自交。自交點對應(yīng)的正是奇異位形——在交點附近兩個分支運動模式交匯機構(gòu)可以“切換模式”也可能失去某個方向的控制能力。如果只知道“自由度是 1”你根本不會意識到還有分支切換這回事而 C-space 的拓撲把這個隱患直接畫了出來。3.2 乘積空間怎么讀輪式移動臂的 R2×T? 拆解習題 2.6 把拓撲結(jié)構(gòu)用到了具象的機構(gòu)上。一個在平面上滾動的輪式底盤C-space 是 R2×T2R2 是底盤在平面上的兩個平移自由度T2 是兩個滾動轉(zhuǎn)向角度。一臺 6R 機械臂的 C-space 是六個旋轉(zhuǎn)關(guān)節(jié)的乘積 T?。兩者固連后整機的 C-space 寫作 R2×T2×T?R2×T?。這里的 T? 是八維環(huán)面不是說它有 8 個“平直”的自由度而是 8 個角度自由度被裝進了同一個周期性拓撲里。為什么要強調(diào)拓撲而不是直接寫 R1?因為 R1? 和 R2×T? 雖然維數(shù)相同幾何卻截然不同前者沒有環(huán)回方向后者有 8 個方向會“繞回自己”。機械臂末端在任務(wù)空間里走一條直線關(guān)節(jié)空間里對應(yīng)的可能是繞過一整圈的曲線反過來關(guān)節(jié)空間的直線在任務(wù)空間里也可能畫出意想不到的弧線。C-space 的拓撲決定了這種“距離感”失真而運動規(guī)劃的所有技巧——避障、插值、時間縮放——都在跟這個失真打交道。構(gòu)造這臺移動臂的過程也很說明問題整體 C-space 是各部分 C-space 的笛卡爾積。這個性質(zhì)只在開鏈串聯(lián)時成立一旦出現(xiàn)閉鏈整體 C-space 不再是簡單乘積而是嵌入在乘積空間里的子流形維度比乘積空間低。這就是下一節(jié)的議題。3.3 閉環(huán)把 C-space 壓成子流形維數(shù)、約束方程與奇異位形閉環(huán)機構(gòu)的 C-space 永遠是某個高維乘積空間的子流形。習題 2.16 的球面四連桿是最直觀的例子四個旋轉(zhuǎn)關(guān)節(jié)的關(guān)節(jié)角組合空間本來是 T?但閉環(huán)約束要求四個連桿首尾相接。在球面這個二維流形上閉合條件給出兩個獨立的標量方程再疊加地面桿方位固定的約束T? 中真正可達的位形被壓成一條曲線維度恰好是 1對應(yīng)機構(gòu)真實的 1 個自由度。這里的“維度計算”其實是一套通用方法比 Grübler 公式更接近本質(zhì)C-space 維度 關(guān)節(jié)變量總數(shù) ? 獨立約束方程數(shù)。Grübler 公式能寫成一條式子全靠“假設(shè)所有約束獨立、所有關(guān)節(jié)坐標都有效”一旦約束不獨立習題 2.15或承載流形選錯習題 2.16公式就失效但“變量數(shù)減獨立方程數(shù)”這個定義永遠成立。遇到拿不準的機構(gòu)把閉環(huán)方程寫出來對雅可比矩陣求秩得到的就是無可爭議的答案。習題 2.17 順著這個思路把手術(shù)器械的約束建模成 SP 關(guān)節(jié)4 自由度3 個旋轉(zhuǎn)加 1 個沿工具軸的平移。工具可以在基座的孔里自由滑動時機構(gòu)有 4 自由度加上“工具必須始終通過某個固定點”的約束后自由度變成 2。放在 C-space 里看這個約束砍掉的是兩個平移方向剩下的 2 自由度是繞孔的兩個轉(zhuǎn)動方向。這類分析對并聯(lián)機構(gòu)和手術(shù)機器人尤其重要因為它們的 C-space 子流形往往帶有多個分支只算自由度會漏掉分支切換的風險。3.4 從“個數(shù)”到“形狀”平面 n 點定位的拓撲推導習題 2.1 從更一般的角度訓練這種直覺。在 n 維空間中放置點第一個點有 n 個線性自由度第二個點到第一個點的距離被固定所以只能在球面 S^{n?1} 上移動第三個點被前兩個點的距離約束落在 S^{n?2} 上。依次推下去整個定位問題的 C-space 是 R^n × S^{n?1} × S^{n?2} × … × S1。其中 R^n 來自第一個點的整體平移后面每個球面 S^k 貢獻 k 個旋轉(zhuǎn)自由度旋轉(zhuǎn)自由度合計 n(n?1)/2加上第一個點的 n 個線性自由度正好是習題給出的 n(n1)/2。注意這里的推導完全是拓撲式的先確定“第一個點撐起整個空間”再確定“第二個點被釘在一個球面上”而不是去數(shù)什么關(guān)節(jié)。這個視角的好處是它逼你區(qū)分兩種東西自由度的“個數(shù)”和 C-space 的“形狀”。同一個數(shù)字 3R3、R2×S1、T3 三者的運動學含義完全不同只有把 C-space 的形狀搞清楚后面學雅可比、學奇異位形、學運動規(guī)劃時才不會把三種情況混為一談。4. 自由度計算避坑指南五個翻車現(xiàn)場與排查思路4.1 公式算 0 卻能動特殊幾何導致約束不獨立現(xiàn)象習題 2.15 里五個等尺寸正方形首尾鉸接成環(huán)空間版公式給出 dof0但機構(gòu)實際可以動且是 1 個自由度。原因Grübler 公式隱含“一般位形”假設(shè)——它假設(shè)所有約束相互獨立、所有桿長是一般長度。當五個正方形完全相同、邊長相等時閉環(huán)約束中的一部分變成了其他約束的邏輯推論實際獨立約束數(shù)比公式預設(shè)的少。公式按 6 個獨立約束去扣實際只扣了 5 個。解決不要只信公式輸出。對閉環(huán)機構(gòu)把約束方程寫出來對雅可比矩陣做秩分析或者更簡單地代入一組具體幾何參數(shù)做數(shù)值仿真在非奇異位形下檢查零空間的維度。Grübler 適合當“上界估計”不適合當“最終裁決”。4.2 維度選錯球面機構(gòu)用空間公式算成負數(shù)現(xiàn)象習題 2.16 的球面四連桿用空間版公式代入得到 -2機構(gòu)卻沿球面有 1 自由度。原因這個機構(gòu)的所有旋轉(zhuǎn)軸都交匯于球心每個連桿都被限制在球面上運動。球面是二維流形剛體在它上面只有 2 個自由度而不是三維空間中的 6 個??臻g版公式按 6 個自由度計約束等于是給每個連桿多扣了 4 個本不存在的自由度于是得出了“負自由度”這種荒謬結(jié)果。解決算之前先回答“約束發(fā)生在哪個流形上”。如果所有運動都在平面或球面這種二維流形上就用平面版系數(shù) 3如果機構(gòu)中確實有連桿在三維空間里運動再用空間版。拿不準時把兩種結(jié)果都算一遍哪個與實際運動吻合哪個就是對的——習題 2.16 的設(shè)計就在逼你做這個判斷。4.3 復合關(guān)節(jié)拆錯C 關(guān)節(jié)與 fork joint 的合并判斷現(xiàn)象習題 2.9 的圖 (c)一個叉形關(guān)節(jié)fork joint如果被拆成兩個普通 R 關(guān)節(jié)計數(shù)自由度會算小甚至得出機構(gòu)卡死的錯誤結(jié)論。原因fork joint 的兩個旋轉(zhuǎn)自由度共享同一根軸物理上等價于一個 2 自由度的 C 關(guān)節(jié)。如果只看“圖上有兩個鉸點符號”就當成兩個獨立 RJ 會多算Σf 卻不會相應(yīng)增加整個公式被系統(tǒng)性壓低。解決看見同軸關(guān)節(jié)先判斷“兩個旋轉(zhuǎn)自由度是不是圍繞同一根軸”。是就按復合關(guān)節(jié)合并不是才按兩個獨立關(guān)節(jié)數(shù)。習題 2.9 的圖 (a) 和 (b) 給出了同一個機構(gòu)合并與拆分兩種數(shù)法的對照結(jié)果都為 3可以作為驗證自己數(shù)法的基準。4.4 閉鏈重疊關(guān)節(jié)數(shù)錯J 數(shù)的是關(guān)節(jié)副不是鉸點位置現(xiàn)象習題 2.10 的圖 (c) 和 (d)機構(gòu)里出現(xiàn)了 overlapping R joints——多根桿鉸接在同一物理位置。如果不把它們單獨數(shù)出來J 會少算自由度結(jié)果偏大和實際運動對不上。原因閉鏈機構(gòu)中同一個銷釘位置上可能同時連接三根以上的桿。從物理上講每一對“桿-桿”連接都是一個獨立的旋轉(zhuǎn)副哪怕它們同軸同點。Grübler 公式里的 J 數(shù)的是關(guān)節(jié)副的數(shù)量不是“圖中鉸點符號”的數(shù)量。解決按“一對連桿之間的運動約束”為單位數(shù) J而不是按圖上的鉸點符號數(shù)。同一位置有三根桿兩兩鉸接那可能對應(yīng)兩個或三個 R 副拿不準時把每個關(guān)節(jié)的 f? 列表寫出來檢查 Σf 是否與你對機構(gòu)的運動直覺一致。4.5 模型與實物混淆人臂不是真的 7 自由度現(xiàn)象習題 2.2 把人臂當 7 自由度開鏈算習題 2.3 又用 6 個關(guān)節(jié)、25 個自由度來討論前臂閉鏈作者明說“不需要懂解剖學也能做”。初學者容易把這些建模當真跑去數(shù)真實肌肉骨骼數(shù)完發(fā)現(xiàn)完全對不上。原因教科書習題討論的是工程近似模型肩球關(guān)節(jié)、肘旋轉(zhuǎn)副、前臂額外旋轉(zhuǎn)。真實人臂有韌帶、軟骨、肌肉聯(lián)動軟組織約束既不是理想球副也不是理想旋轉(zhuǎn)副自由度隨時在變。解決做這類題要有紀律先聲明模型假設(shè)再套公式。模型假設(shè)決定關(guān)節(jié)類型關(guān)節(jié)類型決定 f?f? 決定結(jié)果。把“模型里的自由度”和“實物的自由度”分開記賬就不會出現(xiàn)“公式算了 7實物解剖數(shù)出 14”的困惑。這套習題教的就是工程建模能力不是解剖學。5. 公式之外從 Grübler 到約束流形維數(shù)的設(shè)計取舍Grübler 公式真正教給我們的不是那個數(shù)字而是一種“分層建?!钡娜∩?。它用一條簡單公式把自由度計算壓縮成“數(shù) N、數(shù) J、查 f?”三個動作換取了概念設(shè)計階段極低的分析成本。代價是它只回答“一般位形下最多能有多少個自由度”不回答“具體位形下到底有幾個”更不回答“哪些自由度可控”。后面兩個問題分別要靠約束方程雅可比的秩分析和運動旋量理論來回答——公式是草圖秩分析才是施工圖。在真實工程里我的習慣是把驗證分成三層。第一層Grübler 公式粗算淘汰明顯不合理的構(gòu)型第二層為閉環(huán)機構(gòu)寫出約束方程符號化求雅可比矩陣的秩確認通用位形下的自由度第三層在仿真里給機構(gòu)一組隨機初始位形數(shù)值擾動后看零空間維度是否穩(wěn)定。三層都通過了我才敢把這個自由度數(shù)字寫進設(shè)計文檔。這個方法其實是在反復拷問公式的三個前提約束獨立嗎維度正確嗎機構(gòu)處于一般位形嗎——和前面所有避坑條目一一對應(yīng)。更進一步從 Grübler 到旋量理論的躍遷也遵循同一邏輯Grübler 用標量記賬旋量用矢量建模把每個關(guān)節(jié)看成一條運動旋量把閉環(huán)約束看成約束旋量的零空間自由度數(shù)就是零空間的維度。這套方法能統(tǒng)一處理過約束和欠約束代價是分析成本高一個量級。所以設(shè)計階段先用 Grübler 做初篩不是因為它精確而是因為它便宜——這是工程上非常典型的“用精度換速度”取舍。這套習題集從第 2 章一路推到第 13 章覆蓋構(gòu)型空間、運動學、動力學、規(guī)劃與控制但第 2 章的這些自由度題始終是地基。你以為在練公式其實在練“模型假設(shè) → 約束計數(shù) → 拓撲驗證”的完整鏈條。等用到并聯(lián)機構(gòu)、手術(shù)機器人這類 C-space 帶分支的機構(gòu)時這套思維比任何單一公式都頂用。從那以后我拿到一張機構(gòu)圖第一反應(yīng)不是數(shù)關(guān)節(jié)而是先問自己三個問題約束被限制在哪條流形上關(guān)節(jié)約束是否獨立有沒有特殊幾何在悄悄破壞一般性假設(shè)三問過關(guān)才輪得到 Grübler 公式出場。希望幫到你。本文還有配套的精品資源點擊獲取