Open Dynamics Engine

モータ速度制御

// モータ制御周期
tflag=tflag+DT;
if(tflag>=0.020){
 	tflag=0;
	flag=1;
}

// 計画軌道入力
if(flag==1){
 ve[0]=amp/2.*cos(t*2.*PI/freq+2*PI/3);
 flag=0;
}
dJointSetHingeParam (joint[0],dParamVel,ve[0]);
dJointSetHingeParam (joint[0],dParamFMax,2000.0);

dSpaceCollide (space,0,&nearCallback);
dWorldStep (world,DT);
dJointGroupEmpty (contactgroup);
t=t+DT;

モータ位置制御(P制御法)

// 関節角度計測部
ja[0]=dJointGetHingeAngle (joint[0]);

// モータ制御周期
tflag=tflag+DT;
if(tflag>=0.020){
 	tflag=0;
	flag=1;
}

// 計画軌道入力
if(flag==1){
 da[0]=amp/2.*cos(t*2.*PI/freq+2*PI/3);
 flag=0;
}

// モータ指令値 - P制御法
ve[0]=GAIN*(da[0]-ja[0]);
dJointSetHingeParam (joint[0],dParamVel,ve[0]);
dJointSetHingeParam (joint[0],dParamFMax,2000.0);

dSpaceCollide (space,0,&nearCallback);
dWorldStep (world,DT);
dJointGroupEmpty (contactgroup);
t=t+DT;

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-01-13 (土) 15:15:40 (3816d)