9
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

ODrive 入門 ー初期設定から動作確認まで

はじめに

この記事は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の通信を紹介します。

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
9
Help us understand the problem. What are the problem?