【機器人學】機器人開源專案KDL原始碼學習:(8)KDL的精髓
阿新 • • 發佈:2018-11-25
首先說一下我的心得:
1. 我認為KDL的精髓是Spatial Vector,結合C++等面向物件的語言可以寫出較好的軟體。
2. 直接閱讀KDL程式碼不適合初學者學習機械臂動力學。
3. 要學習機械臂動力學的話應首先閱讀使用3維向量推導公式的文獻,也就是線速度和角速度獨立分析。
4. 掌握機械臂動力學的原理之後再考慮如何將其寫成程式碼,順序不能錯,否則會很吃力。
5. 機械臂動力學涉及到剛體運動學、剛體動力學、矩陣分析、李群和螺旋理論等。
一、3維向量和6維向量
KDL中的演算法大多是參考的《Rigid Body Dynamics Algorithms》這本書中的方法,它提出了Spatial Vector—是將3維的線性運動(力)和3維的旋轉運動(力)組合起來的6維向量。這種組合可以極大地減小代數運算量,並且可以使程式碼更短、更清晰、更方便閱讀和除錯,所以這種程式適合用C++這種面向物件的語言來寫。
Spatial Vector的種類:
Spatial Velocity:
Spatial Acceleration:
Spatial Force:
Spatial Momentum:
Spatial Inertia tensor:
二、牛頓尤拉法的數學基礎
剛體的運動方程,將牛頓方程和尤拉方程結合:
其中定義的一些運算子: