WebCFace 2.5.2
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
6-4. RobotModel

Since
1.4 1.3
See also

RobotModelはリンク(link)と関節(joint)の構造を定義します。 Canvas3D 上に表示して関節を動かすことができます。

送信

モデルはRobotLinkのリストで表されます。 Client::robotModel からRobotModelオブジェクトを作り、 RobotModel::set() でリンクのリストをセットすることでモデルを定義し送信できます。

それぞれのリンクには

  • リンクの名前
  • 関節の情報 (RobotJoint) (省略可→fixedAbsolute())
  • リンクの形状 (Geometry)
  • リンクの色 (ViewColor) (省略可→gray)

を指定する必要があります。

GeometryについてはCanvas3D、ViewColorについてはViewのページを参照してください。

RobotJoint

RobotJointには以下の4種類があります。

C++では webcface::RobotJoints 名前空間に定義されていますが、webcface:: の名前空間でもアクセス可能です。

fixedAbsolute

  • 親リンクを指定せず、絶対座標を指定して固定します。
  • 引数のoriginを省略するとidentity()になります。
    fixedAbsolute(Transform origin)

fixedJoint

  • 固定された関節です。親リンクの名前と、親リンクからの相対座標を指定します。
    fixedJoint(std::string parent, Transform origin)

rotationalJoint

  • 回転する関節です。
  • joint_nameは関節の名前、parentは親リンクの名前
  • originは親リンクからの相対座標を指定します。originのz軸が回転軸となり、z軸正の方向から見て反時計回りが正になります。
  • 初期状態(このモデルの定義通りの座標)の回転角をdefault_angleに指定します(省略時0)
    • 例えばここでdefault_angle=1を指定し、後でCanvas3Dへの表示時にangle=2を指定すると正方向に (2-1=) 1rad回転します
      rotationalJoint(std::string joint_name, std::string parent, Transform origin, double default_angle)

prismaticJoint

  • 直線運動する関節です。
  • originのz軸が運動方向です。
    prismaticJoint(std::string joint_name, std::string parent, Transform origin, double default_angle)

Canvas3Dに表示する

  • C++ 例 (src/example/main.cc を参照)
    world.add(wcli.robotModel("omniwheel"), // RobotModel のドキュメントを参照
    {
    {"line_rotation", -i},
    });
    3次元の平行移動と回転
    Definition transform.h:615
    Canvas3D::addの第1引数にRobotModel、第2引数にモデルの位置、第3引数にjointの回転角を指定してCanvas3Dにモデルを表示することができます。 jointの回転角は {"joint_name", angle} のリストで渡します。
    Note
    RobotModelはこのプログラム内で定義したものではなく別Memberのものを指定することもできます。
    example_wheel.png

受信

Member::robotModel() でRobotModelクラスのオブジェクトが得られ、 Text::tryGet(), Text::tryGetRecurse() で値のリクエストをするとともに受信した値を取得できます。

RobotModelデータは webcface::RobotLink (JavaScript RobotLink)

のリストとして得られ、 RobotLinkオブジェクトから各種プロパティを取得できます。

Entry, Event

いずれも使い方は Value と同様なのでそちらを参照してください