根据刚体上若干个点的加速度确定任意点的加速度的方法
生活随笔
收集整理的這篇文章主要介紹了
根据刚体上若干个点的加速度确定任意点的加速度的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
算法思路
在大地坐標系中,剛體上任意點A的位置可以下式表示:
其中 R0表示剛體上的基點O在大地坐標系的位置, r表示向量OA?→?在大地坐標系中的坐標。
假設剛體上有個固連坐標系,那么 R也可以表示為
R=R0+T?ρ(2)
其中 T表示固連坐標系相對于大地坐標系的方向余弦矩陣。ρ表示 OA?→?在固連坐標系中的坐標。將上式求兩階導
a=a0+T¨?ρ(3)
假設 a0和 T¨都是未知的,就有12個未知量。只需要知道4個點的坐標以及它們的加速度,利用方程(3),就可以完全確定這12個未知量。
樣例
在ADAMS中建立了一個剛體,上面有6個標記點,其中5個用于計算(多余4個點,可以做最小二乘擬合),剩下的一個點作為驗證
程序
% 點的坐標,需要4個點(任意坐標系,可以是固連或者大地坐標系) % 對于有多于4個點的情況,利用偽逆,計算得到最小二乘解 % 在ADAMS中建立樣例,取坐標和加速度point1 = [ % 103.6157 340.1818 28.9743-46.2203 347.0594 30.341438.3051 231.4121 -104.823-5.4705 159.0944 -43.8787-64.2436 225.1557 96.2762]; point = [ % 100 350 0-50 350 040.97 196.67 -83.690 150 0-63 260.32 106.40-150 250 0];% 每個點的加速度,相對于大地坐標系 acc = [ % -0.3808 -276.9834 142.88495.1513 -256.189 172.133338.5448 398.8363 123.7429-3.5535 393.7675 -232.1496-50.8528 -168.3864 -347.81265.409 86.118 -5.6344];%% syms a11 a12 a13 a21 a22 a23 a31 a32 a33; A = [a11 a12 a13a21 a22 a23a31 a32 a33]; syms ax ay az; a0 = [axayaz]; a0 = repmat(a0, 1, 5);f1 = a0 + A * point' - acc'; vars = [a11a12a13a21a22a23a31a32a33axayaz]; [A0, b0] = equationsToMatrix(f1, vars);rlt = pinv(A0) * b0; rlt = eval(rlt);a11 = rlt(1); a12 = rlt(2); a13 = rlt(3); a21 = rlt(4); a22 = rlt(5); a23 = rlt(6); a31 = rlt(7); a32 = rlt(8); a33 = rlt(9); ax = rlt(10); ay = rlt(11); az = rlt(12);A = [a11 a12 a13a21 a22 a23a31 a32 a33]; a0 = [axayaz];% 樣例 p_e = [100 350 0]; % a_e = [-0.3808 -276.9834 142.8849]; a_e = a0 + A * p_e';運行結果
a_e =
-0.3806
-276.9849
142.8870
總結
以上是生活随笔為你收集整理的根据刚体上若干个点的加速度确定任意点的加速度的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 画单自由度系统传递函数(实频,虚频,幅频
- 下一篇: 在matlab中提取线性方程组的系数矩阵