垂直多関節ロボットの​慣性シミュレータの作​成について

お世話になります。
垂直多関節ロボットの慣性シミュレータの作成について質問させていただきます。
現在垂直多関節ロボットの3D CADデータをSimscape 内にインポートする方向でシミュレータの作成を行っているのですが、SimbodyとSimlinkではもともと別製品であるため、なんらかの制約を受けますでしょうか?また、作成したシミュレータをRoboticsSytemToolでも利用可能でしょうか?
また、上記以外で3DCADデータを用いた慣性シミュレータ(動特性は考慮しない)をつくるのに適した方法はありますか?
長くなってしまいましたが、ご回答、アドバイスなどよろしくお願いします。

Risposte (2)

Norihiro Kobayashi
Norihiro Kobayashi il 4 Set 2023

0 voti

こんにちは、Simlink と Simscapeでは多少接続部で注意する必要がある点があります。
接続の基本的な方法については、次のページが参考になると思います。
動力学モデルは上記のようなトルクor力入力を基本としますが、
逆動力学モデルでは、Position入力を同様に与えます。
この場合以下の点に注意が必要です:
Simulink - PSコンバータ内のフィルタ処理と微分にて、入力のフィルター処理、
フィルタ次数を2次フィルタに、設定し利用いただくと発散せずに利用することができます。
動特性を考慮しない?慣性の算出には、Simscape MultibodyのInertia Sensorブロックも活用いただける可能性があります。
以上参考になりましたら幸いです。

7 Commenti

豪斗 中馬
豪斗 中馬 il 4 Set 2023
ご回答ありがとうございます。
ご指摘いただいた点を参考に作成しようと思います。
ありがとうございます。
豪斗 中馬
豪斗 中馬 il 4 Ott 2023
Modificato: 豪斗 中馬 il 4 Ott 2023
3軸ロボットをインポートし、動かすことまでできたのですが、各軸に発生する慣性モーメントを取得したいと思いFile Solidを用いて回転軸にInertia Sensor ブロックを接続し、Inertia SensorブロックにScopeを接続しました。しかし、手先の姿勢を変えてもInertia Sensor ブロックの値が変わらないです。
ロボットは4つのボディをFileSolidブロックで接続して作成していますが、上記の問題は計測した回転軸の先に接続したボディが影響さていないためでしょうか。
また、各軸に発生する慣性モーメントを計測する方法で上記以外の物はありますでしょうか。
よろしくお願いいたします。
Norihiro Kobayashi
Norihiro Kobayashi il 4 Ott 2023
ひとまず、モデル化までできたということで良かったです。
慣性モーメントを計測するブロックはInertia Sensorブロックで問題ないと思います。
慣性モーメントを計測するにあたって、”各軸に発生する”という部分の意図をもう少し整理する必要があると思います。
慣性モーメントは、計測軸を決めると、形状によって決まる固有の値です。
姿勢で変化することを考えると、複数のリンクをまとめた状態の慣性モーメントを計測されたいように理解しましたが、”各軸に発生する”という意図と照らし合わせて必要な計測をして頂く必要がありそうです。
Inertia Sensorブロックには、Body Groupの設定と、Mechanismの設定がありますが、この回転軸より先、という設定はないため、もし特定の回転軸より先のBody Groupをまとめて慣性モーメントを計測したい場合は、いくつか方法がありそうですが、Jointブロックの代わりにRigid Transformなどで角度を作る必要があるかもしれません。
豪斗 中馬
豪斗 中馬 il 4 Ott 2023
回答ありがとうございます。
ご指摘の通り、複数リンクをまとめた状態の慣性モーメントの計測が目的です。
Rifid Transformを使用して試行していきます。
ありがとうございました。
豪斗 中馬
豪斗 中馬 il 4 Ott 2023
Modificato: 豪斗 中馬 il 4 Ott 2023
Inertia Sensor ブロックをScopeに接続し慣性行列の波形を観測したのですが、グラフの凡例は上から3×3行列の1行1列成分、1行2列成分…と表示されているのでしょうか。
Norihiro Kobayashi
Norihiro Kobayashi il 4 Ott 2023
display ブロックを使って頂いた方がイメージがわきやすいかと思います。
Scopeの表示は、MATLABの行列をベクトルとして表示するのと同じように、1列目を上から順に1,2,3
2列目を上から4,5,6、3列目を7,8,9の順で表示していると思います。
Constantブロックに[1 2 3; 4 5 6; 7 8 9;]などと定義し、出力を比較確認してみてください。
豪斗 中馬
豪斗 中馬 il 4 Ott 2023
ありがとうございます。

Accedi per commentare.

豪斗 中馬
豪斗 中馬 il 10 Ott 2023

0 voti

お世話になっております。
下記画像のrigid transformで3軸ロボットの関節角度を表しているのですが、このrigid transform の角度を自動で変える、例えば、-90°から45°までの範囲でシミュレーションを実行し、その際の慣性モーメントをグラフにしたいのですが、方法はありますでしょうか。

4 Commenti

Norihiro Kobayashi
Norihiro Kobayashi il 10 Ott 2023
Rigid Transformに設定している角度の値を変数にして、シミュレーションを複数回実行するのが比較的簡単かなと思います。
Simulinkをモデルの出力の取り扱いについては少しなれて頂く必要がありますが、Displayブロックで出力を見ている部分にto workspaceブロックを配置し、最後の値だけプロットするなどがよいかと思います。
豪斗 中馬
豪斗 中馬 il 10 Ott 2023
Modificato: 豪斗 中馬 il 10 Ott 2023
ありがとうございます。
別の質問なのですが、作成したシミュレータを確かめるために、CADで単純な直方体を作成し、Solid Fileに取り込み下図のようにInertiaSensorブロックを接続し慣性モーメントを計算したのですが、CAD上の慣性モーメントとシミュレーション結果が一致しませんでした。これは、InertiaSensorブロックを接続するフレームが間違っているのでしょうか。それとも、他の要因があれば教えていただけますでしょうか。
Norihiro Kobayashi
Norihiro Kobayashi il 10 Ott 2023
可能性はいくつか考えられますが、ご想像の通り、Frameの位置がまずは気になりますので、まずは変えてみて検証することをお勧めします。
また、File Solidだけでなく、Brick Solidでも同様に密度などを設定しイナーシャを計測すると比較がしやすいかもしれません。
※こちらは、状況次第ですがコメントが長くなってきましたので、質問を分けて頂いた方が良いかもしれません。
豪斗 中馬
豪斗 中馬 il 10 Ott 2023
承知いたしました。ありがとうございます。

Accedi per commentare.

Prodotti

Release

R2023a

Richiesto:

il 3 Set 2023

Commentato:

il 10 Ott 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!