ご質問

モータ側からの情報(位置情報など)を約0.01[秒]の周期で取得したいと考えています。
任意のタイミングで情報を得る必要があるため,約0.05周期でしか値が更新されないという問題が発生しました。

このままではモータ側からの情報のリアルタイム性が保証されないため、"モータ側からの情報"を取得する周期(時間間隔)を変更する命令について、具体的な例などがあれば教えてください。

回答

以下及び添付ファイルを参照の上、設定と測定値の確認をお願いします。

※ 2022/4/22 サンプルコードを変更しました。

 

Windows用サンプルコード

https://keigan.zendesk.com/hc/article_attachments/5988078494233/keigan_motor_measurement_test.zip

 

pykeigan_motor ライブラリの、examples/windows_examples ディレクトリに 2つの python ファイルを置いて下さい。

※ KeiganMotor と通信するためには、現在の KeiganMotor 側のボーレートに対応する整数を指定する必要があります。

self.dev=usbcontroller.USBController(select_port(), baud=current_baud_rate())

詳細はコードを参照下さい。

 

1. KeiganMotorの設定変更(ボーレートとモーター観測周期)

keigan_motor_initial_setting.py (※コードでは2ms間隔にしておりますが、5ms以上推奨です)

 

2. モーター測定値の自動取得

keigan_motor_measurement_test.py

measurement_method = "callback"
デフォルトでは、KeiganMotor から、自動で測定値の情報を定期的に送信する設定になっています。
 
以下のようにすることで、read_motor_measurement() で任意のタイミングで取得することもできます。
measurement_method = "read"