SR6ファームウェアのパッチ
SR6ファームウェアファイルのパッチ
SR6を使用している場合は、バグの発生を防ぐためにファームウェアにパッチを当てる必要があるかもしれません。
備考
以下は、SR6ロボットアームを使用している場合にのみ該当します。
パッチ
SR6-Alpha5_ESP32.ino の429行目、SetPitchServo 関数内の次の行を:
float beta = acos((csq + 5625 - bsq)/(150*c)); // Angle between c-line and servo arm
次のように置き換えます:
float beta = acos(constrain((csq + 5625 - bsq)/(150*c), -1, 1)); // Angle between c-line and servo arm
次に、SR6の取扱説明書に従ってファームウェアをデバイスにアップロードします。
理由
このソフトウェアの開発中に、ファームウェアにサーボモーターへ無効な数値を送ってしまうバグがあることがわかりました。
このバグは、ロボットアームが通常とは異なる位置への移動を指示されたときに発生します。そうした位置には、仮想空間では現実的に到達し得ます。
この誤った指示により、サーボモーターが誤って反応し、極端な位置に移動してしまいます。
そのため、SR6を使用している場合は、ファームウェアにパッチを当てることをおすすめします。
注記
技術的な理由:1.153 のような1より大きい値が acos 関数に渡されます。これは NaN を返します。
これはおそらく、ファームウェア内の逆運動学ソルバーに誤りがあることを示しています。