直交多関節型マニピュレータのシミュレータを作成しているのですがその中で
speed[0]~[7]の速度[rad/s]の値によって移動させるPTP動作を、ptp_mymotion関数の計算式で行っている。
PTP 動作で定めた目標位置は、
目標位置=現在の座標位置+移動量
である。
座標位置を求める計算式は、
次に移動する座標位置=速度/フレームレートの値
である。
これらの計算式でΘ₁からΘ₈までそれぞれの移動する座標の計算を行う。次に移動する座標位置と目標位置が同じ値になった時ループをbreakで脱出し、PTP動作を停止する。また、各軸の座標の位置が ptp_mymotion 関数で定義した各軸の座標の制限値に到達すると、各軸に座標位置=座標制限値として PTP 動作を停止し、更にすべての軸が停止した時、ループを break で脱出する。
といった仕様にて移動させ目標値に到達した際にループを脱することを目標としていましたが
PTP 制御をやっている時に目標値に到着したことを正しく判定しないとループが終了しないし、そうすると制御自体も失敗するのが問題。ループが終了しないことを前提としていることがそもそも間違っている。
書いてある仕様では、目標値の到着の判定が正しくできないことが問題。
と指摘を受けました
radとrad/sを使用しているためdouble型を使用しておりそのため誤差が生じ正しく判定できないのではないかと考えています。
どのように改善すれば解決できるでしょうか。
回答よろしくお願いします。