RefPos ステータス

適用
ロボットオブジェクト Robot

解説
1個目の変数に、力制御ありの指令位置を返します。2個目の変数に、力制御の影響をのぞいた位置制御のみの指令位置を返します。

用法
FGet Robot.RefPos, Point1 ,Point2

  • Point1
    ポイントデータを示す変数

  • Point2
    ポイントデータを示す変数

詳細説明
位置制御指令位置と力制御を含む指令位置を返します。
位置制御指令位置は、本来の動作コマンドが動こうとした仮想的な軌道を示します。
力制御を含む指令位置は、位置制御指令位置に力制御による移動量を加算した軌道で、ロボットが実際に動作している軌道です。
2つの指令値の差分を見ることにより、本来の軌道からどれだけ移動しているかが分かります。これは想定される移動量以上に移動していないかチェックすることや、移動する傾向を分析する場合に有効です。

使用例
力制御によって一定以上移動したことを検出してロボット動作を停止します。

Function RefPosTest

  FSet FCS1.Orientation, FG_TOOL   ' フォース座標データの設定

  FSet FC1.CoordinateSystem, FCS1  ' フォース座標データを指定
  FSet FC1.Fx_Spring, 0            ' Fxの仮想弾性係数を設定
  FSet FC1.Fx_Damper, 1            ' Fxの仮想粘性係数を設定
  FSet FC1.Fx_Mass, 10             ' Fxの仮想慣性係数を設定
  FSet FC1.Fx_Enabled, True        ' Fxの力制御を有効に設定
  Xqt RefPosCheck                  ' 監視用の別タスク起動
  Move P0 FC1                      ' 力制御あり のMove動作
  Quit RefPosCheck                 ' 監視用の別タスクを終了

Fend

Function RefPosCheck
  Do
    FGet Robot.RefPos, P1, P2           ' RefPos取得
      If Abs(CX(P1) - CX(P2))  50 Then  ' 差分が50以上かチェック
        Print "Err"                     ' 差分が大きすぎるときエラー
        AbortMotion All                 ' 動作を停止する
      EndIf
    Wait 0.1
  Loop
Fend

参照
ロボットオブジェクト Robot