本文へ移動

tf-2md3-devel@t-frog.com

Re: __Re:_ダ イレクト] ] ドラ イブモータの パラメータ設 定について

Date:
Mon, 01 Aug 2016 17:55:49 +0900
From:
Atsushi Watanabe <
atsushi dot w at ieee dot org
>
To:
tf-2md3-devel <
tf-2md3-devel at t-frog dot com
>
Subject:
[00125] Re: __Re:_ダ イレクト] ] ドラ イブモータの パラメータ設 定について
明治大 細田さま、黒田先生

渡辺です。

お借りしたモータで、ファームウェア上の
カウンタのオーバーフローの問題は一応解決しました。
(PCからドライバのパラメータ送信のビット数はもともと32bitだったのですが、
内部で保持する変数が16bitだった点と、制御の計算式中でのオーバーフローが
あった点を修正しました。)

ファームウェアを、devel_v0.1.4_rc4 にアップデートし、
yp-spur を、v1.15.0-rc2 ブランチにして実行すると、
とりあえず制御は可能になります。

パラメータファイルの生成に関して、
製品のデータシートの表記の解釈が若干難しいのですが、
600 rpm は、機械的な許容最大回転数で、
等価誘起電圧定数から計算すると無負荷最大回転数は 3000 rpm になります。

具体的には、16 V/krpm = 62.5 rpm/V
無負荷最大回転数@48V = 3000 rpm
パラメータとしては、62.5 rpm/V * 8 極 = 500

また、モータと極センサのUVW相の配線(?)が違っているようで、
PHASE_OFFSETのパラメータを指定する必要がありました。
(-120度なので、センサの配線が1つずつシフトしている?)

加えて、現状では以下2点の制約があります。

1. エンコーダパルスが、ノイズフィルタの周波数以上になってしまう

FPGA上で、3 MHz, 3 bit median filter をかけているため、
High、Low それぞれ 1 us 以上ホールドする必要があります。
これより、A,B各相の最大周波数は 500 kP/s

モータ仕様は 324 kP/R なので
1.5 Hz = 90 rpm 以上の回転数ではエンコーダの読み飛ばしが発生します。

この制約は、FPGAのファームウェアによる物で、
3 MHz のところを最大 48 MHz まで大きくできますが、
ノイズフィルタとの兼ね合いなので、しっかり検証する必要があります。

このファームウェア書き換えは、基板上のUSBコネクタからは行えません。
一方、マイコンのファームウェアとは独立に変更を加えられるので、
ひとまずこのモータ用に使っているドライバのFPGAだけ、
高速仕様に変更するのは行い易いです。


2. パルス数を送る通信がオーバーフロー

マイコン-PC間のオドメトリ計算用の5msごとの通信が
16bit signed なので ±32,768 cnt/5ms 未満の必要あり。
6,553,600 cnt/s = 1,638,400 P/s より
5.1 Hz = 303 rpm 以上の回転数ではエンコーダ値が取れなくなります。

こちらは、オドメトリ計算上はここまでのパルス数は不要なので、
通信する値を 1/n にするような設定を用意するのが妥当かと考えています。
(現状、1番目の制約が強いので、未着手です。)

また、ドライバ内のマイコン-FPGA間の通信にも同じ問題がありますが、
こちらは 50 us ごとの通信なので、上記の100倍の余裕があるため考慮する必要はなさそうです。



現状、約90rpm以下であれば、モータドライバの、通常のファームウェア書き換え
のみで対応できますが、それ以上の回転数は、
FPGAの書き換えが必要になり、もう少し検証が必要です。


調整したパラメータは下記のとおりです。

-------
VERSION 4
VOLT 16
CONTROL_CYCLE 0.02
TORQUE_FINENESS 0.00000001

MOTOR_PHASE 3
COUNT_REV 162000
ENCODER_TYPE 2
CYCLE 0.001
MOTOR_R 1.8
TORQUE_MAX 0.0413
TORQUE_LIMIT 0.113
MOTOR_VC 550
MOTOR_TC 0.016
PHASE_OFFSET 4.188

GEAR 8
TREAD 1
RADIUS[0] 0.3
RADIUS[1] -0.3

MASS 0.1
MOMENT_INERTIA 0
TIRE_M_INERTIA 0.0
MOTOR_M_INERTIA 0.000000124

L_C1 0.01
L_K1 800
L_K2 300
L_K3 200
L_DIST 0.6

MAX_VEL 1
MAX_W 2
MAX_ACC_V 2
MAX_ACC_W 4
MAX_CENTRI_ACC 1.96

GAIN_KP 10
GAIN_KI 1000
INTEGRAL_MAX 0.05
TORQUE_NEWTON 0
TORQUE_VISCOS 0
-------



// Atsushi WATANABE
// Assistant Professor
// Field Robotics Laboratory, Tohoku University
// 6-6-10, Aramaki-Aoba, Aoba-ku, Sendai, 980-8579, Japan
// Phone: [Telephone number removed] / E-mail:
atsushi dot w at ieee dot org


2016年7月28日 14:07 HOSODA YUUKI <
ee33080 at meiji dot ac dot jp
>:
> 細田です.
>
>
> モータ送ることができるので,修正の件よろしくお願いします.
>
> モータを送るにつきまして,宛名を教えていただいてもよろしいでしょうか?
>
> ________________________________
> 差出人: Atsushi Watanabe <
atsushi dot w at ieee dot org
>
> 送信日時: 2016年7月28日 11:10:02
> 宛先: tf-2md3-devel
> 件名: [tf-2md3-devel:00123] Re: __Re:_ダ イレクト ] ドラ イブモータの パラメータ設 定について
>
> 黒田先生
>
> 渡辺です。
> 手元に該当するようなモータが無いため、このままだと手探りでの修正になり、時間がかかってしまいます。
> モータをお借りすると早いのですが、可能でしょうか?
>
> // Atsushi WATANABE
> // Assistant Professor
> // Field Robotics Laboratory, Tohoku University
> // 6-6-10, Aramaki-Aoba, Aoba-ku, Sendai, 980-8579, Japan
> // Phone: [Telephone number removed] / E-mail:
atsushi dot w at ieee dot org

>
>
> 2016年7月27日 23:33 黒田洋司 <
ykuroda at meiji dot ac dot jp
>:
>> 渡辺さん
>>
>> 黒田です.ご確認有難うございます.カウンタがオーバーフローしているなら
>> あの挙動は納得できます.実は大変に急いでおります.最悪でもお盆になる前に
>> なんとかなると有難いのですが.
>>
>> 黒田
>>
>>
>>> 2016/07/27 19:14、Atsushi Watanabe <
atsushi dot w at ieee dot org
> のメール:
>>>
>>> 細田さま
>>>
>>> 渡辺です。
>>>
>>> 原因はドライバ内でエンコーダ分解能のパラメータを16bitで扱っている為とわかりました。
>>> これは、PCからドライバにパラメータを送るプロトコルが16bit仕様なことに起因しています。
>>> (カウント自体は32bitで行っているので、制御系そのものには問題ありません。)
>>>
>>> 現在、ファームウェアのメジャーアップデートの準備をしており、この修正も含めたいと思います。
>>> すみませんが、少々お待ちください。
>>> (ちなみに、どのくらい急いでいますか?)
>>>
>>> 2016/07/25 午後10:53 "HOSODA YUUKI" <
ee33080 at meiji dot ac dot jp
>:
>>>
>>> 細田です.
>>>
>>>
>>>> パラメータ生成の極数欄でいうと、N極が8, S極が8で、8になるかもしれません。
>>>> モータを回したときの、UVW矩形波のパルス数を見ると確実です。
>>>
>>> UVW短形波を確認したところ,パルスの数は8でした.
>>>
>>> パラメータ生成を極数8にして何度かパラメータをいじってみましたが,モータの挙動は前回同様不規則な回転と停止になってしまいました.このような場合どのように対処すればいいでしょうか
>>>
>>>
>>> 現在のパラメータです.
>>>
>>> VERSION 4
>>> VOLT 24
>>> CONTROL_CYCLE 0.02
>>> TORQUE_FINENESS 0.000001
>>>
>>> MOTOR_PHASE 3
>>> COUNT_REV 162000
>>> ENCODER_TYPE 2
>>> CYCLE 0.001
>>> MOTOR_R 8
>>> TORQUE_MAX 41.25
>>> TORQUE_LIMIT 125
>>> MOTOR_VC 100
>>> MOTOR_TC 0.0955
>>>
>>> GEAR 8
>>> RADIUS[0] 0.159
>>> RADIUS[1] -0.159
>>>
>>> MASS 3
>>> TIRE_M_INERTIA 0.0379
>>> MOTOR_M_INERTIA 0.938
>>>
>>> L_C1 0.01
>>> L_K1 800
>>> L_K2 300
>>> L_K3 200
>>> L_DIST 0.6
>>>
>>> MAX_CENTRI_ACC 1.96
>>>
>>> GAIN_KP 0
>>> GAIN_KI 0
>>> INTEGRAL_MAX 0.05
>>> TORQUE_NEWTON 0
>>> TORQUE_VISCOS 0
>>>
>>>
>>> よろしくお願いします
>>>
>>> ________________________________
>>> 差出人: Atsushi Watanabe <
atsushi dot w at ieee dot org
>
>>> 送信日時: 2016年7月25日 15:03:20
>>> 宛先: tf-2md3-devel
>>> 件名: [tf-2md3-devel:00119] Re: ダイレクトドライ ブモータのパラメータ設定について
>>>
>>> 明治大学 細田さま
>>>
>>> 渡辺です。
>>>
>>> ダイレクトドライブモータの制御自体は、私も以前に使っていたので大きな問題はないはずです。
>>> (ただし、モータの極数の関係で、パラメータの設定が若干難しいです)
>>>
>>> データシートを見ると、磁極が16となっているので、
>>> パラメータ生成の極数欄でいうと、N極が8, S極が8で、8になるかもしれません。
>>> モータを回したときの、UVW矩形波のパルス数を見ると確実です。
>>>
>>> // Atsushi WATANABE
>>> // Assistant Professor
>>> // Field Robotics Laboratory, Tohoku University
>>> // 6-6-10, Aramaki-Aoba, Aoba-ku, Sendai, 980-8579, Japan
>>> // Phone: [Telephone number removed] / E-mail:
atsushi dot w at ieee dot org

>>>
>>>
>>> 2016年7月21日 18:47 HOSODA YUUKI <
ee33080 at meiji dot ac dot jp
>:
>>>> お世話になっております.
>>>>
>>>>
>>>> 明治大学機械工学科の細田と申します.
>>>>
>>>>
>>>>
>>> 現在,t-frogのドライバを使用してモータの制御を試みようとしているのですが,パラメータ調整がうまくいかず,速度指令を与えてもうまく回転しません.具体的には,不規則な回転と停止を繰り返します.また,速度指令を与えるのを止めると,指令していた方向と反対の方向に回転し始めてしまいます.パラメータはyp-spur用パラメータ生成でできたものをベースに使用しています.使用しているモータはDDモータになっており,ダイレクトドライブのためギア比が1のためうまくいってないのではないかと思っているのですが,どうでしょうか?
>>>>
>>>>
>>>> 現在使用しているモータの情報とパラメータを載せておきます.
>>>>
>>>> 使用モータ:mtlのマイクロDDモータの MDH-40になります.
>>>>
>>>> URL http://www.mtl.co.jp/products/motor/mds_mdh_40.html
>>>>
>>>> 【モータの仕様】
>>>> ・3相ブラシレスモーター
>>>> ・駆動電源電圧24V
>>>> ・無負荷回転数/無負荷電流値:600rpm
>>>> ・最大トルク:1000 N・m
>>>> ・1:1(減速比1)
>>>>
>>>> <http://www.mtl.co.jp/products/motor/mds_mdh_40.html
>>>> 現在使用しているパラメータは以下のようになっています.
>>>>
>>>> VERSION 4.00000000
>>>>
>>>> VOLT 24.0000000 #[V]
>>>>
>>>> CYCLE 0.00100000 #[s]
>>>>
>>>> CONTROL_CYCLE 0.02000000 #[s]
>>>>
>>>> TORQUE_FINENESS 0.00000100
>>>>
>>>>
>>>> RADIUS[0] -0.15900000 #[m]
>>>>
>>>> RADIUS[1] 0.15900000 #[m]
>>>>
>>>> TREAD 1.00000000 #[m]
>>>>
>>>> MASS 3.0000001
>>>>
>>>> TIRE_M_INERTIA 0.10000001
>>>>
>>>> MOMENT_INERTIA 0.10000000
>>>>
>>>> TORQUE_VISCOS 0.00000000
>>>>
>>>> TORQUE_NEWTON 0.00000000
>>>>
>>>> TORQUE_MAX 20.50000000
>>>>
>>>> TORQUE_LIMIT 62.00000000
>>>>
>>>>
>>>> MOTOR_PHASE 3.00000000 #3相DC
>>>>
>>>> COUNT_REV 81000.00000000 #[Counts/rev] 324000/16極*4
>>>>
>>>> ENCODER_TYPE 2.0000
>>>>
>>>> GEAR 16.00000000 #[in/out] 1*16極
>>>>
>>>> MOTOR_VC 300.00000000 #逆起電力係数[rpm/V] rmax/V ... V:定格電圧[24]
>>> rmax:Vでの無負荷最大回転数[600]
>>>>
>>>> MOTOR_TC 0.04780000 #トルク係数[Nm/A] 60/2/Pi/Ke ...
>>> Ke:逆起電力係数MOTOR_VC
>>>>
>>>> MOTOR_R 8.00000000 #[ohm]:モータの端子間抵抗*3/4
>>>>
>>>> MOTOR_M_INERTIA 0.11700001
>>>>
>>>> GAIN_KP 0.00000000
>>>>
>>>> GAIN_KI 0.00000000
>>>>
>>>> INTEGRAL_MAX 0.05000000 #[rev]
>>>>
>>>>
>>>> MAX_VEL 1.00000000 #[m/s]
>>>>
>>>> MAX_W 20.28000000 #[rad/s]
>>>>
>>>> MAX_ACC_V 20.00000000 #[m/ss]
>>>>
>>>> MAX_ACC_W 41.89000000 #[rad/ss]
>>>>
>>>> MAX_CENTRI_ACC 1.95000000 #0.25G
>>>>
>>>>
>>>> L_C1 0.01000000 #
>>>>
>>>> L_K1 800.00000000 #
>>>>
>>>> L_K2 300.00000000 #
>>>>
>>>> L_K3 200.00000000 #
>>>>
>>>> L_DIST 0.60000000 #
>>>>
>>>>
>>>> STOP_LINEAR 0.01000000
>>>>
>>>> SPIN_LINEAR 0.05000000
>>>>
>>>> WHEEL_ANG_LINEAR 0.05000000
>>>>
>>>> このようになっています.
>>>>
>>>>
>>>> お手数おかけしますが,ご回答のほどよろしくお願いします.
>>>>
>>>> ----------------------------------
>>>>
>>>> 明治大学
>>>>
>>>> 理工学部機械工学科 4年生
>>>>
>>>> ロボット工学研究室
>>>>
>>>>
>>>> 細田佑樹
>>>>
>>>>
>>>> E-mail:
ee33080 at meiji dot ac dot jp

>>>>
>>>> ----------------------------------
>>>>
>>>>
>>>> <http://www.mtl.co.jp/products/motor/mds_mdh_40.html>
>>>>
>>>> <
>>> http://www.mtl.co.jp/dcms_media/other/%CE%BCDD%E3%83%A2%E3%83%BC%E3%82%BF%E3%82%AB%E3%82%BF%E3%83%AD%E3%82%B0.pdf
>>>> <http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html>
>>
>> ----
>> Yoji KURODA, Dr.E
>> Professor
>> Director of Autonomous Mobile Systems Laboratory
>> Department of Mechanical Engineering,
>> School of Science & Technology, Meiji University
>> http://www.isc.meiji.ac.jp/~amslab/racing
>> http://www.isc.meiji.ac.jp/~amslab/
>> Access Map: http://g.co/maps/tws8y
>>
>> ?????
>>
>>
>>
>>
>>
>>

References