##matlab——Robotic-system-toolbox-関数メモ

3317 ワード

%%%余分ノート%v=[3,4];%distance=norm(v)%関数normはベクトルを求めるモジュール長%関数repmat(A,m,n)を表し、マトリクス全体Aをm個下にコピーし、n個%関数kron(A,B)、Kroneckerテンソル積%%ロボットモデル%robot=loadrobot(‘kinovaGen 3’,‘DataFormat’,‘row’,‘Gravity’,[0-9.81]);CurrentRobotJConfig=homeConfiguration(robot)%関数homeConfiguration(robot’s name)はアームの初期関節位置を定義し、データ形式はT(4 X 4)%homeconfiguration関数はモデルが確立した初期位置を表し、%関数randomConfiguation(robot’s name)を人為的に変更することなくアームの初期関節位置を定義する.データ形式はT(4 X 4)%Use the homeConfiguration or randomConfiguation functions to generate the structure that defines all the joint positions.
% load exampleRobots.mat%%ベクトルと角度変換関数%%関数getTransform座標を行列T(4 X 4)%transform=getTransform(puma 1,randomConfiguration(puma 1),‘L 2’,‘L 6’)%transform=4に変換×4
%-0.2232 0.4179 0.8807 0.0212%-0.8191 0.4094-0.4018 0.1503%-0.5284-0.8111 0.2509-0.4317%0 0 0 1.0000%robot toolboxでtransl関数で位置ベクトルを変換し、trot{x,y,z}(x,y,z)変換位置角度%上下関数機能と同じ%MATLABでtrvec 2 tform関数で位置ベクトルを変換し、axang 2 tform関数で位置角度%フォーマット%trvec 2 tform([x,y,z])を変換します.正変換関数%tform 2 trvec(T)マトリクスTを座標形式に変換して関数%axang 2 tform([x,y,z,theta]):その軸を回転し、対応ベクトル上で1 or 0正変換関数%例:axang 2 tform([1,0,0,pi])——x軸回転180度%tform 2 axang(T)逆転関数%eul 2 tform([x,y,z])変換位置角度正変換関数%tform 2 eul(T)逆転関数%%四元数%関数q=tform 2 quat(T)を用いて行列Tの四元数%T=quat 2 tform([a,b,c,d])を解いた行列T%%%トラック計画%%%%%%直線計画111%T 0初期位置行列4 X 4%Tf末端位置行列4 X 4%timeInterval運転時間範囲%trajTimes時間ステップ%[T,vel,acc]=transformtraj(T 0,Tf,timeInterval,trajTimes)直線%%%%%%%cubic B-spline%[T,vel,acc,pp]= bspinepolytraj(controlPoints,tInterval,tSamples)generates a piewee e e e e e e e e e e e e e e e n n n e e e e e e e e e e e e e e n n e e e e a p p p p e e e e e e e e e Cubic B-spline trajectory%controlPoints=[x…; % y…; % z…;] %%% %三次多項式cubicpolytraj%[qxyz,qdxyz,qddxyz,pp]=cubicpolytraj(controlPoints,timeInterval,trajTimes);%%%%四次多項式quinticpolytraj%[qxyz,qdxyz,qddxyz,pp]=quinticpolytraj(wayPoints,timePoints,tSamples)%%速度勾配計画trapveltraj%tSamples-trajTimes時間ステップ数.例えば、tSamples=0:025:5%numSamples--Number of samples in output trajectory%[q,qd,qdd,tSamples,pp]=trapveltraj(wayPoints,numSamples,Name,Value)%[q,qd,qdd,pp]=trapveltraj(wayPoints,numSamples,Name,Value)%%角度計画rottraj%r 0=[rx,ry,rz];初期角度位置%rF=[rx,ry,rz];終端角度位置%[R,omega,alpha]=rottraj(r 0,rF,tInterval,tSamples)%%逆解部分%part-1 Create an inverse kinematics object作成逆解器%ik=inverseKinematics(‘RigidBodyTree’,robotname);part-2逆ソルバを呼び出して%QSol=ik(endEffectorName,tform,weights,initialGuess)%QSolはアームの各関節角度%endEffectorName末端関節名%tform終点位置のTranslform%initialGues初期位置Translformです.注意:関数homeconfigurationを使用できます.たとえば、initialGuess=homeconfiguration%%はアームアニメーションのエンコード%を表示します.matlabの公式サイトの例"trajectory-planning-robot-manipulators-master"%構想は、トラック計画の関数を使用して求めた位置座標を時間ステップごとに%Translfrom(4 X 4)%に変換して、解くTマトリクスを?今回のエンドポジションは?として?次のサイクルの初期位置?%対応する時点におけるT行列の関節角度を解く(逆解「inverseKinematics」「ik」を用いる)%対応する時間におけるアームの関節角度注:show(アーム名,joint_angles,‘Frames’,‘off’,‘PreservePlot’,false)%Joint_Anglesは逆ソルバikが求める各関節角度%公式例for idx=1:numel(trajTimes)%Solve IK tgtPose=trvec 2 tform(q(:,idx)’)%;qは、先のトラック関数で求めた座標%idxがトラック計画の時間ステップ数[config,info]=ik(eeName,tgtPose,ikWeights,ikInitGuess);ikInitGuess = config; % 解を求めるT行列を?今回のエンドポジションは?として?次のループの初期位置は?
% Show the robot
show(gen3,config,'Frames','off','PreservePlot',false);
title(['Trajectory at t = ' num2str(trajTimes(idx))])
drawnow    

end