主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

ABB YuMiロボットの軌跡の対話的な作成

この例では,interactiveRigidBodyTreeオブジェクトを使用してロボットを動かし,軌跡を設計して,再生する方法を説明します。

ロボットの読み込み,可視化および環境の作成

“abbYumi”ロボットモデルを読み込みます。interactiveRigidBodyTreeを使用して対話型图を初期化します。現在の座標軸を保存します。

机器人=装载机器人(“abbYumi”“重力”, [0 0 -9.81]);iviz = interactiveRigidBodyTree(机器人);Ax = gca;

床,目標物の置かれた2 .。

plane = collionbox (1.5,1.5,0.05);飞机。姿态= trvec2tform([0.25 0 -0.025]);表演(飞机,“父”、ax);leftShelf = collionbox (0.25,0.1,0.2);leftShelf。姿态= trvec2tform([0.3 -.]65年0.1]);[~, patchObj] = show(leftShelf,“父”、ax);patchObj。FaceColor = [0 0 1];rightShelf = collionbox (0.25,0.1,0.2);rightShelf。Pose = trvec2tform([0.3 .65 0.1]);[~, patchObj] = show(rightShelf,“父”、ax);patchObj。FaceColor = [0 0 1];leftWidget = collisionCylinder(0.01, 0.07);leftWidget。Pose = trvec2tform([0.3 -0.65 0.225]);[~, patchObj] = show(leftWidget,“父”、ax);patchObj。FaceColor = [1 0 0];righttwidget = collisionBox(0.03, 0.02, 0.07);rightWidget。Pose = trvec2tform([0.3 0.65 0.225]);[~, patchObj] = show(righttwidget,“父”、ax);patchObj。FaceColor = [1 0 0];centerTable = collisionBox(0.5,0.3,0.05);centerTable。Pose = trvec2tform([0.75 0 0.025]);[~, patchObj] = show(centerTable,“父”、ax);patchObj。FaceColor = [0 1 0];

交互式可视化图包含一个轴。坐标轴包含补丁、直线、曲面类型的80个对象。该对象表示yumi_base_link。

コンフィギュレ,ションの対話的な生成

対話型の可視化を使用してロボットを移動し,コンフィギュレ,ションを設定します。图が初期化されると,ロボットはアームを組んだホームコンフィギュレーションの状態になります。ズムンしてエンドエフェクタをクリックすると,詳細が得られます。

ボディをエンドエフェクタとして選択するには,ボディを右クリックして選択します。

マカボディもコマンドランから割り当てることができます。

iviz。MarkerBodyName =“gripper_r_base”

ボディが設定されたら,指定されているマーカー要素を使用してマーカーを移動すると,選択したボディが追従します。中央のグレのマカをドラッグすると,直交座標空間でマカが移動します。赤,緑,青の座標軸は,マ,カ,をxyz座標軸に沿って移動します。円は,同じ色の座標軸を中心としてマ,カ,を回転させます。

ジョ@ @ントを右クリックして【切换标记控制方法】をクリックすることにより,個々のジョ。

オブジェクトのMarkerControlMethodプロパティは“JointControl”に設定されています。

これらの手順は,オブジェクトのプロパティを直接変更することによっても実行できます。

iviz。MarkerBodyName =“yumi_link_2_r”;iviz。MarkerControlMethod =“JointControl”

交互式可视化图包含一个轴。坐标轴包含patch、line、surface类型的72个对象。该对象表示yumi_base_link。

ジョ@ @ント制御に変更すると,ジョ@ @ント位置を直接設定できる黄のマ@ @カ@ @が生成されます。

目的のコンフィギュレ,ションが得られるまで,ロボットを対話的に移動します。addConfigurationを使用してコンフィギュレ,ションを保存します。呼び出しごとに,現在のコンフィギュレ,ションがStoredConfigurationsプロパティに追加されます。

addConfiguration (iviz)

軌跡の中間点の定義

この例のために,一連のコンフィギュレ,ションが.matファ@ @ルで提供されています。

コンフィギュレ,ションを読み込み,一連の保存されたコンフィギュレ,ションとして指定します。最初のコンフィギュレ,ションは,配置プロパティを更新してaddConfigurationを呼び出すことによって追加されます。これは対話的に行うこともできますが,残りはStoredConfigurationsプロパティを直接割り当てることによって簡単に追加されます。

负载abbYumiSaveTrajectoryWaypts.matremoveConfigurations (iviz)清除存储的配置%从有效的开始配置开始iviz。配置= startingConfig;

交互式可视化图包含一个轴。坐标轴包含patch、line、surface类型的72个对象。该对象表示yumi_base_link。

addConfiguration (iviz)指定整个路径点集iviz。StoredConfigurations = [startingConfig,]...graspApproachConfig,...graspPoseConfig,...graspDepartConfig,...placeApproachConfig,...placeConfig,...placeDepartConfig,...startingConfig];

軌跡の生成と再生

すべての中間点が保存されたら,ロボットの追従する軌跡を作成します。この例の台形速度プロファ@ @ルはtrapveltrajを使用して生成されます。台形速度プロファイルとは,ロボットが各中間点で滑らかに停止し,移動中に最大設定速度に達することを意味します。

numSamples = 100*size(iviz.)StoredConfigurations,2) + 1; [q,~,~, tvec] = trapveltraj(iviz.StoredConfigurations,numSamples,“EndTime”2);

生成された行列を反復することにより,生成された軌跡を再生します。この行列は,各中間点の間を移動する一連のジョ。このケースでは,レート制御オブジェクトを使用して,再生速度に実際の実行速度が確実に反映されるようにします。

iviz。ShowMarker = false;showFigure(iviz) rateCtrlObj = rateControl(numSamples/(max(tvec) + tvec(2)));i = 1:numSamples iviz。配置= q(:,i); waitfor(rateCtrlObj);结束

交互式可视化图包含一个轴。坐标轴包含patch、line类型的70个对象。该对象表示yumi_base_link。

この図は,定義されているすべての中間点の間でロボットが滑らかな軌跡を実行することを示しています。