次の問題で自分自身を隅にコーディングしたようです: 遅い RS485 ベースのバス接続を介してロボットのモーターを制御しようとしています。残念ながら、私はモーターのファームウェアにアクセスできないので、現在のセットアップにとどまっています。
最大の問題は、モーターの目標速度しか制御できないことです。組み込みのエンコーダーを介して絶対位置を取得できますが、モーター自体のファームウェアに組み込まれた位置決め機能はありません。
2 番目の問題は、バス接続が非常に遅いことです。ややぎこちないプロトコルでは、フル サイクルに 25 ミリ秒が必要です。この方法で速度調整を介して位置を制御できますか?
25 ミリ秒先の位置を推定し、現在の位置を引き、25 ミリ秒で割って、次の目的の位置に必要な速度を計算する単純なアプローチを試みました。ただし、これは、固定位置をターゲットにすると、特定の速度でひどく振動します。これは、サイクル時間が長くなり、多くのオーバーシュートが発生するためだと思います。
PID コントローラーが役立つかもしれませんが、ターゲット値がどうなるかはわかりません。これまで使用したすべての PID は固定ターゲットを使用していました。完全に動くターゲット (つまり位置) は、少なくとも私には想像しにくいものです。
このような状況に対処するための通常の方法は何ですか? 単純なアプローチを組み合わせて、追加のオフセット項に対してのみ PID 制御を追加することはできますか? または、別のモーターを購入する必要がありますか?