前提・実現したいこと
mathematicaを用いて6自由度マニピュレータの慣性行列を求めたい
発生している問題・エラーメッセージ
一つ目の反復の式でi=1から6まで、k=1から6まで繰り返し計算をして、2つ目の反復の式でMm[i,k]の行列の対角要素Mm[i,k][j,j]のj=1から4までを取り出して和を求めたい。しかし、T[j]とJ[j]の中にそれぞれの数値の行列が入らない。
該当のソースコード1(server側)
Mathematica
1T[1] = {{Cos[[Theta][1][t]], -Sin[[Theta][1][t]], 0, 2 0}, {Sin[[Theta][1][t]], Cos[[Theta][1][t]], 0, 0}, {0, 0, 1, 3 d1}, {0, 0, 0, 1}} 4T12 = {{Cos[[Theta][2][t]], -Sin[[Theta][2][t]], 0, 0}, {0, 0, -1, 5 0}, {Sin[[Theta][2][t]], Cos[[Theta][2][t]], 0, 0}, {0, 0, 0, 6 1}}; 7T23 = {{Cos[[Theta][3][t]], -Sin[[Theta][3][t]], 0, 8 a2}, {Sin[[Theta][3][t]], Cos[[Theta][3][t]], 0, 0}, {0, 0, 1, 9 0}, {0, 0, 0, 1}}; 10T34 = {{Cos[[Theta][4][t]], -Sin[[Theta][4][t]], 0, 11 a3}, {Sin[[Theta][4][t]], Cos[[Theta][4][t]], 0, 0}, {0, 0, 1, 12 d4}, {0, 0, 0, 1}}; [Theta] 13T45 = {{Cos[[Theta][5][t]], -Sin[[Theta][5][t]], 0, 0}, {0, 0, -1, 14 d5}, {Sin[[Theta][5][t]], Cos[[Theta][5][t]], 0, 0}, {0, 0, 0, 15 1}}; 16T56 = {{Cos[[Theta][6][t]], -Sin[[Theta][6][t]], 0, 0}, {0, 0, 1, 17 d6}, {Sin[[Theta][6][t]], Cos[[Theta][6][t]], 0, 0}, {0, 0, 0, 18 1}}; 19T[2] = T[1].T12 20T[3] = T[2].T23 21T[4] = T[3].T34 22T[5] = T[4].T45 23T[6] = T[5].T56 24J[1] = {{(-Ix1 + Iy1 + Iz1)/2, 0, 0, 0}, {0, (Ix1 - Iy1 + Iz1)/2, 0, 25 0}, {0, 0, (Ix1 + Iy1 - Iz1)/2, 0}, {0, 0, 0, 0}} 26J[2] = {{(-Ix2 + Iy2 + Iz2)/2, 0, 0, 0}, {0, (Ix2 - Iy2 + Iz2)/2, 0, 27 0}, {0, 0, (Ix2 + Iy2 - Iz2)/2, 0}, {0, 0, 0, 0}} 28J[3] = {{(-Ix3 + Iy3 + Iz3)/2, 0, 0, 0}, {0, (Ix3 - Iy3 + Iz3)/2, 0, 29 0}, {0, 0, (Ix3 + Iy3 - Iz3)/2, 0}, {0, 0, 0, 0}} 30J[4] = {{(-Ix4 + Iy4 + Iz4)/2, 0, 0, 0}, {0, (Ix4 - Iy4 + Iz4)/2, 0, 31 0}, {0, 0, (Ix4 + Iy4 - Iz4)/2, 0}, {0, 0, 0, 0}} 32J[5] = {{(-Ix5 + Iy5 + Iz5)/2, 0, 0, 0}, {0, (Ix5 - Iy5 + Iz5)/2, 0, 33 0}, {0, 0, (Ix5 + Iy5 - Iz5)/2, 0}, {0, 0, 0, 0}} 34J[6] = {{(-Ix6 + Iy6 + Iz6)/2, 0, 0, 0}, {0, (Ix6 - Iy6 + Iz6)/2, 0, 35 0}, {0, 0, (Ix6 + Iy6 - Iz6)/2, 0}, {0, 0, 0, 0}} 36 37Do[Do[Subscript[M, m][i, k] = \!( 38*UnderoverscriptBox[([Sum]), (j = Max[i, k]), (6)](( 39*SubscriptBox[([PartialD]), (([Theta][k])[t])]\ T[j] . J[j] . 40*SubscriptBox[([PartialD]), (([Theta][i])[t])]Transpose[ 41 T[j]]))), {i, 1, 6}], {k, 1, 6}] 42Do[Do[Subscript[M, m][i, k] = 43 Sum[Subscript[M, m][i, k][[j.j]], {j, 4}], {i, 1, 6}], {k, 1, 6}]
試したこと
少しずつ書き換えたができなかった。
補足情報(FW/ツールのバージョンなど)
Wolfram Mathematica 12.0
あなたの回答
tips
プレビュー