##はじめに
この記事はBLDC制御実験キットの製作の続きです。
前回は実験ボードを作ったのですが、電源が故障してしまったのと、2つのモータを使ってテストしたかったという理由で新しいボードに作り変えました。
電気系統に関しては特に変更点はありません。
今回、固定台としてセリアのすのこを使ったのですが、下に空間があるためナットでガタつくこともなく剛性もあるため非常に良かったです。
本記事ではODriveの初期設定から動作確認までを紹介します。
##環境構築
実行環境:Ubuntu18.04
$ sudo apt update
$ sudo apu upgrade
#python3のインストール
$ sudo apt install python3 python3-pip
$ sudo pip3 install odrive
#PATHの追加 (zshユーザは~/.zshrc)
$ echo "PATH=$PATH:~/.local/bin/" >> ~/.bashrc
##初期設定
まずodrivetoolを起動させ、接続を確認しましょう。
接続確認
$ odrivetool
ODrive control utility v0.4.0
Please connect your ODrive.
Type help() for help.
Connected to ODrive 306A396A3235 as odrv0
#電圧確認コマンド
In [1]: odrv0.vbus_voltage
Out[1]: 11.97055721282959
以下の設定は使用するモータ、エンコーダによって変わります。
今回紹介する設定は、
モータ:X8318S
エンコーダ:AS5047P-TS_EK_AB
を使用しています。
初期設定
#モータの極数
odrv0.axis0.motor.config.pole_pairs = 20
#エンコーダの1回転あたりのカウント数
odrv0.axis0.encoder.config.cpr = 4000
#設定を保存
odrv0.save_configuration()
#再起動
odrv0.reboot()
##動作確認
初期設定
#エンコーダのイニシャライズ
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
#フィードバック制御の開始
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
#絶対位置を指定(エンコーダのカウント数)
odrv0.axis0.controller.pos_setpoint = 10000
odrv0.axis0.controller.pos_setpoint = 0
これで動作確認ができました。
次回の記事ではArduinoによる制御と、ROSとArduinoとODriveの通信を紹介します。