Main Content

Simulink 3D を使用したマニピュレーターの軌跡追跡の可視化

剛体ツリーのロボット モデルについてジョイント空間の軌跡をシミュレートし、Simulink 3D ワールドで Simulation 3D Robot ブロックを使用して結果を可視化します。

モデルの概要

次のコマンドを使用してモデルを読み込みます。

open_system("SL3DJointSpaceManipulatorTrajectory")

この例で使用する Kinova Gen3 マニピュレーターは、モデル ワークスペースに保存されています。ただし、ロボットを読み込んで可視化するには次のコマンドを使用します。

gen3 = loadrobot("kinovaGen3","DataFormat","column");
show(gen3);

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh.

モデルは 2 つのセクションに分かれています。

  • マニピュレーターの軌跡追従

  • Simulink 3D™ での可視化

マニピュレーターの軌跡追従

Polynomial Trajectory ブロックは、範囲が [-0.375*pi 0.375*pi] のランダムなウェイポイント セットから、各ウェイポイントで停止するジョイント空間の連続軌跡を生成します。Joint-Space Motion Model ブロックは、計算されたトルク制御を備えた Kinova Gen3 マニピュレーターについて、これらの軌跡の閉ループ追従をシミュレートします。

Simulink 3D™ の Simulation 3D Robot ブロックを使用した可視化

"Simulation 3D Robot" ブロックは、RigidBodyTree オブジェクト入力で定義された Simulink 3D ワールドにマニピュレーターを挿入します。"Get Transform" ブロックは、エンドエフェクタの位置を取得するために使用されます。その後、これが同種変換行列から並進ベクトルに変換されます。

モデルのシミュレーション

モデルのペーシングはアクティブであり、これは [実行] ボタンの下にある時計シンボルにより示されています。

これにより、モデルがほぼリアルタイムの速度まで確実に減速するため、現実的なペースで可視化を更新できます。

軌跡の可視化

既定で、モデルは速度および位置の情報を表示するスコープを開きます。ただし、これらが閉じている場合、関連するビューアーのアイコンをダブルクリックしてスコープを開くことができます。

Simulink 3D ワールドでロボットの運動を可視化します。

SL3DJointSpaceManipTrajGif.gif

スコープには Joint Space Motion Model ブロックの追従結果が表示されます。左下の図に示すように、ロボットの初期コンフィギュレーションは基準軌跡と異なりますが、シミュレーションの実行中は運動の制御によって確実に基準軌跡に到達して追従します。最後のスコープには、ワールド座標系でのエンドエフェクタの X、Y、Z 位置が表示されます。