#include "Behaviors/StateMachine.h"

$nodeclass LinkOrient {

	$nodeclass MoveArm : PostureNode : doStart {
		fmat::Column<3> target = fmat::pack(250,0,16);
		fmat::Quaternion oriTgt = fmat::Quaternion::aboutZ(-M_PI/2);
		fmat::Column<3> posOffset = fmat::pack(0,0,0);
		fmat::Quaternion oriOffset = fmat::Quaternion::identity();
		cout << "ArmElbow max speed=" << getMC()->getMaxSpeed(ArmElbowOffset) << endl;
		bool success = getMC()->solveLink(target, oriTgt, GripperFrameOffset, posOffset, oriOffset);
		cout << "success=" << success << endl;
	}

  $nodeclass ReportPosition : StateNode : doStart {
		fmat::Column<3> pos = kine->linkToBase(GripperFrameOffset).translation();
		cout << "Position = " << pos << endl;
  }

  $setupmachine{
    MoveArm =C=> StateNode =T(200)=> // add a little time for the arm to settle
     ReportPosition
  }

}

REGISTER_BEHAVIOR(LinkOrient);
