多関節ロボットに関するワークフローをサポート
urdfを使用して逆運動などを解くことができる
robot = importrobot('URDFファイル名')
urdfファイルは拡張子まで全て入力する
char型なのでダブルクオーテーションで囲むとエラーをだす
上記のコードの場合,robot
が今後RigidBodyTree
として使用可能となる
大きく分けて二通りの方法がある
- robotics.InverseKinematics : pose(位置と姿勢)を指定して角度を求める場合
- robotics.GeneralizedInverseKinematics : 様々な指定をして角度を求めることができる
上記のInverseKinematicsを使用するならmoveitで十分な気が...
RigidBodyには逆運動計算において様々な条件(制約)を指定することが可能
- AimingConstraint(aiming) : 照準制約
- CartesianBounds(cartesian) : 直交座標の範囲
- JointPositionBounds(joint) : ジョイント位置の範囲
- OrientationTarget(orientation) : 方向ターゲット
- PoseTarget
- PositionTarget(position) : 位置ターゲット
- RigidBodyが生成する情報を行形式にする : 通常は各joint名と角度の構造体を返す => DataFormatをrowにすると角度データのみの配列となる
RigidBody.DataFormat = "row";
- コンフィギュレーションの設定
- homeConfiguration(RigidBodyTree) : 指定したRigidBodyTreeのjointの初期角度を返す
- repmat(行列, 数値1, 数値2) : 行列をコピーして大きな行列を作成する行に対するコピー数(数値1),列に対するコピー数(数値2)
numWaypoints = 5;
q0 = homeConfiguration(RigidBodyTree);
qWaypoints = repmat(q0, numWaypoints,1 );