PythonによるOpen Dynamics Engine講座 その9
サンプルプログラムはここ。
キー操作にはFunctionクラスの_keyfunc (self, key, x, y)、main内のglutKeyboardFunc(Func._keyfunc)が必要です。また、glutSpecialFunc(Func._keyfunc)を使うと、→のような特殊キーを使えるようになります。_keyfunc関数のkeyがGLUT_KEY_UP(↑)であればヒンジジョイントの目標の回転角度(self.joints[1].theta)が-π/ 2となるという意味です。他の入力も同様です。
マニピュレータの回転角は_idlefunc関数で使っているPcontrol()で制御している。
Pcontrol関数はジョイントがヒンジだったとき、角度が目標の角度に近づくように制御している。
tmp = self.joints[i].getAngle()は現在のジョイントの角度をtmpに格納している。
z = self.joints[i].theta - tmpは目標の角度と現在のジョイントの角度との差を求めている。
その求まった差にゲインk(定数)をかけたものをself.joints[i].setParam(ode.ParamVel, k*z)で速度として入力している。
次回は3自由度マニピュレータをやります。
PythonによるOpen Dynamics Engine講座に戻る