AGXMagneticJoint

AGXMagneticJointはAGX Dynamicsをつかった磁石のような振る舞いをするジョイントです。 実装にはAGX Dynamicsのlock jointを利用しています。

../_images/magnetic_joint.png

サンプル

サンプルを使った利用方法の説明をします。サンプルプロジェクトは以下にあります。 Choreonoidでサンプルプロジェクトをロードし、シミュレーションを実行すると、上図のように青色のオブジェクトが自動的に赤色のオブジェクトに引き寄せられる挙動を確認することができます。

  • プロジェクトファイル: chorenoid/sample/AGXDynamics/agxMagneticJoint.cnoid

  • ボデイファイル: chorenoid/sample/AGXDynamics/agxMagneticJoint.body

記述方法

AGXMagneticJointは以下のように記述し、利用することができます。

links:
  -
    name: Plug
    elements:
      -
        type: AGXMagneticJointDevice
        link1Name: Socket
        link2Name: Plug
        position1: [ 0, 0.25, 0 ]
        position2: [ 0, 0, -0.05 ]
        connectAxis1: [ 0, 1, 0 ]
        connectAxis2: [ 0, 0, 1 ]
        jointCompliance: 1e-6
        jointSpookDamping: 1.0
        validDistance: 1.0
        validAngle: 20
  1. AGXMagneticJointで接続したいリンクをlinkNameに設定します

  2. リンクのどの部分に接続したいのかをpositionとconnectionAxisに設定します

  3. どのくらいの力、速度で接続するのかをjointCompliacne、jointSpookDampingに設定します

  4. 接続が有効になる距離、角度をvalidDistance、validAngleに設定します

poistionはリンク座標系からみた相対位置、connectAxisはジョイントの接続方向です。 例として下図左のようにそれぞれconnectAxisを異なる方向に設定しますと、それぞれのconnectAxisが一致するように接続が行われます。

../_images/magnetic_joint_detail.png

パラメータの説明

以下にパラメータの説明をします。

パラメータ

デフォルト値

単位

意味

type: AGXMagneticJointDevice

-

-

string

AGXMagneticJointを使うことの宣言

link1Name

-

-

string

リンク名

link2Name

-

-

string

リンク名

position1

[0, 0, 0]

-

Vec3

link1のローカル座標系からみたジョイント取り付け位置

position2

[0, 0, 0]

-

Vec3

link2のローカル座標系からみたジョイント取り付け位置

connectAxis1

[0, 0, 1]

-

Unit Vec3

link1のローカル座標系からみたジョイント取り付け向き

connectAxis2

[0, 0, 1]

-

Unit Vec3

link2のローカル座標系からみたジョイント取り付け向き

jointCompliance

1e-8

m/N

double

コンプライアンス

jointSpookDamping

0.33

s

double

スプークダンパ

validDistance

0

m

double

ジョイントが有効になる距離

validAngle

0

degree

double

ジョイントが有効になる角度