5: 2013-09-11 (水) 12:40:12 takaboo | 6: 2014-06-10 (火) 15:17:01 takaboo | ||
---|---|---|---|
Line 1: | Line 1: | ||
**適用 [#q973e381] | **適用 [#q973e381] | ||
以下のDynamixelに共通のコントロールテーブルです。ここに記載されないDynamixelのコントロールテーブルとは異なります。 | 以下のDynamixelに共通のコントロールテーブルです。ここに記載されないDynamixelのコントロールテーブルとは異なります。 | ||
+ | -MX-12W | ||
-MX-28R/MX-28T | -MX-28R/MX-28T | ||
-MX-64R/MX-64T | -MX-64R/MX-64T | ||
Line 6: | Line 7: | ||
**コントロールテーブル [#x4eb66a5] | **コントロールテーブル [#x4eb66a5] | ||
- | Dynamixelの機能及び設定は次のメモリマップ上に1バイトないし2バイト(リトルエンディアン)のアイテムとして割り当てられ、インストラクションパケットを使用して操作します。 | + | Dynamixelの機能及び設定は次のメモリマップ上に1~4バイト(リトルエンディアン)のアイテムとして割り当てられ、インストラクションパケットを使用して操作します。~ |
- | 2バイトに渡るアイテムは1つのインストラクションパケットにおいて同時に書き込まれる必要があります。 | + | なお、複数バイトに渡るアイテムは、同時性を確保するために1回のインストラクションパケットにおいて読み書きする必要があります。 |
|=~Control Table|||||h | |=~Control Table|||||h | ||
|=''Address''|=''Item''|=''Access''|=''Initial Value''|=''Range''| | |=''Address''|=''Item''|=''Access''|=''Initial Value''|=''Range''| | ||
Line 15: | Line 16: | ||
|2 (0x2)|[[Version of Firmware>#x2b21b74]]|R|-| | | |2 (0x2)|[[Version of Firmware>#x2b21b74]]|R|-| | | ||
|3 (0x3)|[[ID>#n563922f]]|R/W|1 (0x01)|0~253| | |3 (0x3)|[[ID>#n563922f]]|R/W|1 (0x01)|0~253| | ||
- | |4 (0x4)|[[Baudrate>#r27c0a5d]]|R/W|34 (0x22)|0~254| | + | |4 (0x4)|[[Baudrate>#r27c0a5d]]|R/W|34 (0x22)&br;(MX-12Wのみ1)|0~254| |
|5 (0x5)|[[Return Delay Time>#z6a035d0]]|R/W|250 (0xFA)|0~254| | |5 (0x5)|[[Return Delay Time>#z6a035d0]]|R/W|250 (0xFA)|0~254| | ||
|6 (0x6)|[[CW Angle Limit>#h4561931]]|R/W|0 (0x00)|0~4095| | |6 (0x6)|[[CW Angle Limit>#h4561931]]|R/W|0 (0x00)|0~4095| | ||
Line 30: | Line 31: | ||
|17 (0x11)|[[Alarm LED>#q8d97e3d]]|R/W|36 (0x24)|0~127| | |17 (0x11)|[[Alarm LED>#q8d97e3d]]|R/W|36 (0x24)|0~127| | ||
|18 (0x12)|[[Alarm Shutdwon>#y219e63a]]|R/W|36 (0x24)|0~127| | |18 (0x12)|[[Alarm Shutdwon>#y219e63a]]|R/W|36 (0x24)|0~127| | ||
- | |19 (0x13)|(Reserved)|RW|0 (0x00)| | | ||
|20 (0x14)|[[Down Calibration>#f95fb07c]]|R|?| | | |20 (0x14)|[[Down Calibration>#f95fb07c]]|R|?| | | ||
|21 (0x15)|~|~|~|~| | |21 (0x15)|~|~|~|~| | ||
Line 37: | Line 37: | ||
|24 (0x18)|[[Torque Enable>#ae42664f]]|R/W|0 (0x00)|0~1| | |24 (0x18)|[[Torque Enable>#ae42664f]]|R/W|0 (0x00)|0~1| | ||
|25 (0x19)|[[LED>#j0f1ab3d]]|R/W|0 (0x00)|0~1| | |25 (0x19)|[[LED>#j0f1ab3d]]|R/W|0 (0x00)|0~1| | ||
- | |26 (0x1A)|[[D Gain>#z76ef779]]|R/W|0 (0x00)|0~254| | + | |26 (0x1A)|[[D Gain>#z76ef779]]|R/W|0 (0x00)&br;(MX-12Wのみ8)|0~254| |
|27 (0x1B)|[[I Gain>#n47ffacd]]|R/W|0 (0x00)|0~254| | |27 (0x1B)|[[I Gain>#n47ffacd]]|R/W|0 (0x00)|0~254| | ||
- | |28 (0x1C)|[[P Gain>#l6ed04c6]]|R/W|32 (0x20)|1~254| | + | |28 (0x1C)|[[P Gain>#l6ed04c6]]|R/W|32 (0x20)&br;(MX-12Wのみ8)|1~254| |
- | |30 (0x1E)|[[Goal Position>#i10660fa]]|R/W|[Addr36]value|0~4095| | + | |30 (0x1E)|[[Goal Position>#i10660fa]]|R/W|[Addr36]value|0~4095/-28672~28672| |
|31 (0x1F)|~|~|~|~| | |31 (0x1F)|~|~|~|~| | ||
- | |32 (0x20)|[[Moving Speed>#s3139326]]|R/W|0 (0x00)|0~1023((Moving SpeedはEndless Turnモードの場合のRange:0~2047となる))| | + | |32 (0x20)|[[Moving Speed>#s3139326]]|R/W|0 (0x00)|-1023~1023| |
|33 (0x21)|~|~|~|~| | |33 (0x21)|~|~|~|~| | ||
|34 (0x22)|[[Torque Limit>#l9afa11c]]|R/W|[Addr14]value|0~1023| | |34 (0x22)|[[Torque Limit>#l9afa11c]]|R/W|[Addr14]value|0~1023| | ||
Line 68: | Line 68: | ||
**各アイテムの詳細 [#hd8e7c4e] | **各アイテムの詳細 [#hd8e7c4e] | ||
***0~1:Model Number [#ta493b6c] | ***0~1:Model Number [#ta493b6c] | ||
- | モデルナンバーです。 | + | モデルナンバーです。各モデルには以下の固有値が割り当てられます。 |
+ | | Model Name | Value | | ||
+ | | MW-12W | 0x0168 | | ||
+ | | MX-28R/MX-28T | 0x001D | | ||
+ | | MX-64R/MX-64T | 0x0136 | | ||
+ | | MX-106R/MX-106T | 0x0140 | | ||
***2:Version of Firmware [#x2b21b74] | ***2:Version of Firmware [#x2b21b74] | ||
Line 74: | Line 79: | ||
***3: ID [#afcb4273] | ***3: ID [#afcb4273] | ||
- | 各Dynamixelを特定するための固有のIDナンバーです。同じネットワークの各Dynamixelに異なるIDが必要です。 | + | 各Dynamixelを特定するための固有の値で0~253の範囲で設定します。同一ネットワーク中のDynamixelには各々異なるIDが要求されます。 |
- | 0~253まで設定可能で、254はBroadcast IDと呼ばれ全てのDynamixelへパケットを送信する際に使用します。 | + | 254はBroadcast IDとし、全てのDynamixelへパケットを送信する際に使用します。 |
***4:Baudrate [#r27c0a5d] | ***4:Baudrate [#r27c0a5d] | ||
- | 通信速度を決定します。valueが249以下であれば次の公式で計算できます。~ | + | 通信速度を決定します。値が249以下であれば次の式でボーレートが算出されます。~ |
Baudrate[BPS]=2000000 / (value + 1)~ | Baudrate[BPS]=2000000 / (value + 1)~ | ||
~ | ~ | ||
主なBaudrateのデータ値~ | 主なBaudrateのデータ値~ | ||
- | | value | Baudrate[BPS] | Target Baudrate[BPS] | Error※[%] | | + | | Value | Baudrate[BPS] | Target Baudrate[BPS] | Error※[%] | |
+ | | 0 | 2000000.0| 2000000| 0.000| | ||
| 1 | 1000000.0| 1000000| 0.000| | | 1 | 1000000.0| 1000000| 0.000| | ||
| 3 | 500000.0| 500000| 0.000| | | 3 | 500000.0| 500000| 0.000| | ||
Line 97: | Line 103: | ||
なお、MXシリーズのみ以下の値の時にイリガルなボーレートが割り当てられています。 | なお、MXシリーズのみ以下の値の時にイリガルなボーレートが割り当てられています。 | ||
- | | value | Baudrate[BPS] | | + | | Value | Baudrate[BPS] | |
| 250 | 2250000.0| | | 250 | 2250000.0| | ||
| 251 | 2500000.0| | | 251 | 2500000.0| | ||
Line 106: | Line 112: | ||
***5:Return Delay Time [#z6a035d0] | ***5:Return Delay Time [#z6a035d0] | ||
- | インストラクションパケットが送られた後、ステータスパケットが返ってくるまでの時間です。遅延時間は2uSec * Address5の値です。 | + | インストラクションパケットが送られた後、ステータスパケットを返すまでの待ち時間を設定します。~ |
+ | 単位は2[usec]です。 | ||
***6~7:CW Angle Limit [#h4561931] | ***6~7:CW Angle Limit [#h4561931] | ||
***8~9:CCW Angle Limit [#u752e406] | ***8~9:CCW Angle Limit [#u752e406] | ||
- | Dynamixelの動作角を設定します。Goal Positionは以下の範囲にある必要があります。~ | + | Jointモード時のDynamixelの動作角度範囲を設定します。Goal Positionは以下の範囲にある必要があります。~ |
CW Angle Limit <= Goal Position <= CCW Angle Limit~ | CW Angle Limit <= Goal Position <= CCW Angle Limit~ | ||
Goal Positionが動作角のリミットを越えると、Angle Limit Errorが起こります。 | Goal Positionが動作角のリミットを越えると、Angle Limit Errorが起こります。 | ||
- | CW Angle Limit及びCCW Angle Limitを両方0に設定すると[[Endless Turnモード>#m81274a2]]になります。 | + | なお、設定値に応じてDynamixelの動作モードが変わります。 |
+ | -CW Angle Limit < CCW Angle Limit時~ | ||
+ | Jointモードとなり、出荷時の位置決め制御となります。 | ||
+ | -CW Angle Limit = CCW Angle Limit = 0~ | ||
+ | [[Wheelモード>#m81274a2]]になります。 | ||
+ | -CW Angle Limit = CCW Angle Limit = 4095~ | ||
+ | [[Multi Turnモード>#m8457ffc]]になります。 | ||
***10:Drive Mode [#rd7fa695] | ***10:Drive Mode [#rd7fa695] | ||
Line 121: | Line 134: | ||
| Bit | 機能 | 設定 | | | Bit | 機能 | 設定 | | ||
- | | Bit7~2 | - | - | | + | | 7~2 | - | - | |
- | | Bit1 |マスター/スレーブ選択 | 0:マスタ, 1:スレーブ | | + | | 1 |マスター/スレーブ選択 | 0:マスタ, 1:スレーブ | |
- | | Bit0 |回転方向選 | 0:順方向, 1:逆方向 | | + | | 0 |回転方向選 | 0:順方向, 1:逆方向 | |
****マスター/スレーブ選択ビット [#x1127b7a] | ****マスター/スレーブ選択ビット [#x1127b7a] | ||
Line 147: | Line 160: | ||
***16:Status Return Level [#mc2f793d] | ***16:Status Return Level [#mc2f793d] | ||
- | インストラクションパケットを受けた後にDynamixelがステータスパケットを返すかどうかを決定します。 | + | Dynamixelが返すステータスパケットの措置を設定します。 |
- | |Adress16|ステータスパケット| | + | | Value | 処理 | |
- | |0|PING以外のインストラクションには応答しない| | + | | 0 |PINGインストラクションパケットのみに応答| |
- | |1|READ_DATAだけに応答する| | + | | 1 |PING及びREAD_DATAインストラクションパケットのみに応答する| |
- | |2|すべてのインストラクションに応答する| | + | | 2 |全てのインストラクションパケットに応答する| |
- | Broadcast ID(0xFE)を使ったインストラクションの場合は、Address16の値に関わらずステータスパケットを返しません。 | + | |
***17:Alarm LED [#q8d97e3d] | ***17:Alarm LED [#q8d97e3d] | ||
- | 対応するBitが1に設定されると、Errorが起こったときにステータスLEDが点滅します。 | + | 対応するBitが1に設定されると、その要因発生時にステータスLEDが点滅します。要因が解消するとLEDは2秒後に消灯します。 |
- | |Bit|Function| | + | | Bit | 要因 | |
- | |Bit7|0| | + | | 7 |-| |
- | |Bit6|1に設定されていたら、Instruction Errorが起こるとLEDが点滅します| | + | | 6 |Instruction Error| |
- | |Bit5|1に設定されていたら、Overload Errorが起こるとLEDが点滅します| | + | | 5 |Overload Error| |
- | |Bit4|1に設定されていたら、Checksum Errorが起こるとLEDが点滅します| | + | | 4 |Checksum Error| |
- | |Bit3|1に設定されていたら、Range Errorが起こるとLEDが点滅します| | + | | 3 |Range Error| |
- | |Bit2|1に設定されていたら、Overheating Errorが起こるとLEDが点滅します| | + | | 2 |Overheating Error| |
- | |Bit1|1に設定されていたら、Angle Errorが起こるとLEDが点滅します| | + | | 1 |Angle Error| |
- | |Bit0|1に設定されていたら、Input Voltage Errorが起こるとLEDが点滅します| | + | | 0 |Input Voltage Error| |
- | すべてのビットのOR論理演算に従って動作します。例えば0x05が設定されていたら、Input Voltage ErrorかOverheating Errorが起こったときにLEDが点滅します。エラー状態から正常状態に戻るとLEDは2秒後に点滅を止めます。 | + | |
***18:Alarm Shutdown [#y219e63a] | ***18:Alarm Shutdown [#y219e63a] | ||
- | 対応するビットが1に設定されていて、エラーが発生するとDynamixelのトルクがオフになります。Alarm LEDとは異なり、Errorが発生した後、正常状態に戻ってもトルクオフの状態が維持されます。復帰するためにはTorque Enable(Address24)を1に再設定しなければなりません。 | + | 対応するBitが1に設定されると、その要因発生時にDynamixelのTorque Limit(Address34~35)を0にします。復帰する際はTorque Limit(Address34~35)を再設定する必要があります。 |
- | |Bit|Function| | + | | Bit | 要因 | |
- | |Bit7|0| | + | | 7 |-| |
- | |Bit6|1に設定されていたら、Instruction Errorが起こるとトルクをオフにします| | + | | 6 |Instruction Error| |
- | |Bit5|1に設定されていたら、Overload Errorが起こるとトルクをオフにします| | + | | 5 |Overload Error| |
- | |Bit4|1に設定されていたら、Checksum Errorが起こるとトルクをオフにします| | + | | 4 |Checksum Error| |
- | |Bit3|1に設定されていたら、Range Errorが起こるとトルクをオフにします| | + | | 3 |Range Error| |
- | |Bit2|1に設定されていたら、Overheating Errorが起こるとトルクをオフにします| | + | | 2 |Overheating Error| |
- | |Bit1|1に設定されていたら、Angle Errorが起こるとトルクをオフにします| | + | | 1 |Angle Error| |
- | |Bit0|1に設定されていたら、Input Voltage Errorが起こるとトルクをオフにします| | + | | 0 |Input Voltage Error| |
***20~21:Down Calibration [#f95fb07c] | ***20~21:Down Calibration [#f95fb07c] | ||
Line 189: | Line 200: | ||
1が設定されるとLEDが点灯し、0が設定されると消灯します。 | 1が設定されるとLEDが点灯し、0が設定されると消灯します。 | ||
- | ***26:CW Compliance Margin [#z76ef779] | + | ***26:D Gain [#z76ef779] |
- | ***27:CCW Compliance Margin [#n47ffacd] | + | |
- | ***28:CW Compliance Slope [#l6ed04c6] | + | ***27:I Gain [#n47ffacd] |
- | ***29:CCW Compliance Slope [#re44c84d] | + | |
- | Dynamixelのコンプライアンスは、コンプライアンスのMarginとSlopeを設定することで定義されます。この特徴は出力軸で衝撃を吸収するのに利用します。下のグラフはそれぞれのコンプライアンス値(A、B、C、Dの長さ)がポジションエラーと適用されたトルクによってどう定義されるかを示します。 | + | ***28:P Gain [#l6ed04c6] |
- | #ref(Dynamixelコントロールテーブル/DxCntTable1.png) | + | |
- | A : CCW Compliance Slope(Address26)~ | + | MXシリーズはPID制御を行います。P Gainは比例、I Gainは積分、D Gainは微分ゲインで、いずれも値の範囲は0〜254です。 |
- | B : CCW Compliance Margin(Address27)~ | + | #ref(pidcontrol_.png,70%) |
- | C : CW Compliance Margin(Address28)~ | + | Kp=(P Gain)/8~ |
- | D : CW Compliance Slope(Address 29)~ | + | Ki=(I Gain)*1000/2048~ |
- | E : Punch(Address48, 49)~ | + | Kd=(D Gain)*4/1000~ |
***30~31:Goal Position [#i10660fa] | ***30~31:Goal Position [#i10660fa] | ||
- | Dynamixelの出力角の位置を要求します。0(0x000)~4095(0xfff)の設定値に対し、出力軸は0°~360°まで動作します。 | + | Dynamixelの出力角の位置を設定します。0(0x000)~4095(0xfff)の設定値に対し、出力軸は0°~360°の範囲で動作します。 |
#ref(DxCntTable2.png) | #ref(DxCntTable2.png) | ||
+ | |||
+ | [[Multi Turnモード>#m8457ffc]]時はそのモードに従います。 | ||
***32~33:Moving Speed [#s3139326] | ***32~33:Moving Speed [#s3139326] | ||
- | 出力軸がGoal Positionへ動く時の角速度です。0に設定すると速度調節が適用されない供給電圧で可能な最大の速度になります。 | + | 出力軸がGoal Positionへ動く時の速度で、単位は約0.114rpmです。~ |
+ | 0に設定すると速度制御を無視し、モータの最大速度で運転します。~ | ||
+ | 1023に設定すると約117.07rpmで運転します。~ | ||
+ | |||
+ | [[Wheelモード>#m8457ffc]]時は10bit目が回転方向を意味します。 | ||
- | Endless Turnモードでは回転速度になります。詳しくは[[Endless Turn>#m81274a2]]を参照。 | + | | Bit15~11 | Bit10 | Bit9~0 | |
+ | | 0 | Turn Direction | Speed | | ||
+ | Sing = 0 : CCW, 1 : CW | ||
***34~35:Torque Limit [#l9afa11c] | ***34~35:Torque Limit [#l9afa11c] | ||
Line 218: | Line 237: | ||
出力軸の現在の角度です。Goal Positionと同様0(0x000)~4095(0xfff)の値に対し、0°~360°を表します。 | 出力軸の現在の角度です。Goal Positionと同様0(0x000)~4095(0xfff)の値に対し、0°~360°を表します。 | ||
- | Endless Turnモードでは総回転角度を表します。詳しくは[[Endless Turn>#m81274a2]]を参照。 | + | [[Wheelモード>#m8457ffc]]では総回転角度を表します。 |
***38~39:Present Speed [#qeda324a] | ***38~39:Present Speed [#qeda324a] | ||
Line 224: | Line 243: | ||
ビット10は回転方向を表します。 | ビット10は回転方向を表します。 | ||
- | | BIT | Bit15~11 | Bit10 | Bit9~0 | | + | | Bit15~11 | Bit10 | Bit9~0 | |
- | | Value | 0 | Turn Direction | Speed Value | | + | | 0 | Turn Direction | Speed | |
Trun Direction = 0 : CCW, Trun Direction = 1 : CW | Trun Direction = 0 : CCW, Trun Direction = 1 : CW | ||
***40~41:Present Load [#j002f18d] | ***40~41:Present Load [#j002f18d] | ||
- | 操作するDynamixelの負荷の大きさです。ビット10は負荷の向きを表します。 | + | 操作するDynamixelの負荷の大きさです。10bit目が負荷の向きを表します。 |
- | | Bit | Bit15~11 | Bit10 | Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 | | + | | Bit15~11 | Bit10 | Bit9~0 | |
- | | Value | 0 | Load Direction | Load Value | | + | | 0 | Load Direction | Load | |
Load Direction = 0 : CCW Load, Load Direction = 1 : CW Load | Load Direction = 0 : CCW Load, Load Direction = 1 : CW Load | ||
Line 244: | Line 263: | ||
***46:Moving [#vc953eee] | ***46:Moving [#vc953eee] | ||
- | Dynamixelが供給された電力で動いているときに1が設定されます。 | + | Goal Positionが更新され、Dynamixelが目標位置へ移動している間に1となります。 |
***47:Lock [#ib2c369f] | ***47:Lock [#ib2c369f] | ||
Line 271: | Line 290: | ||
***73:Goal Acceleration [#z3b818ed] | ***73:Goal Acceleration [#z3b818ed] | ||
- | 目標加速度値です。 | + | 目標加速度で、単位は 8.583 deg/sec^2 です。Goal Positionが更新された際のメカニカルなショックを抑止する場合に設定します。~ |
- | 単位は 8.583 deg/sec^2 です。 | + | 0に設定すると加速度制御を行いません。また、加速度制御を行う場合は、Goal Speedを0以外の値に設定する必要があります。 |
- | **Endless Turn [#m81274a2] | + | **Wheelモード [#m81274a2] |
- | Address 6(0x06)~9(0x09)のCW Angle Limit、CCW Angle Limitを0に設定し、Address 32(0x20),33(0x21)に以下の通りMoving Speedを設定するとEndless Turnモードになります。車輪のような役割で使用する際にこのモードに設定します。~ | + | Address 6(0x06)~9(0x09)のCW Angle LimitとCCW Angle Limitを0に設定するとWheelモードになります。車輪として使用する際にこのモードに設定します。~ |
~ | ~ | ||
Moving Speedの設定 | Moving Speedの設定 | ||
- | | BIT | Bit15~11 | Bit10 | Bit9~0 | | + | | Bit15~11 | Bit10 | Bit9~0 | |
- | | Value | 0 | Turn Direction | Speed Value | | + | | 0 | Turn Direction | Speed Value | |
Trun Direction = 0 : CCW, Trun Direction = 1 : CW | Trun Direction = 0 : CCW, Trun Direction = 1 : CW | ||
Present Positionは車輪の総回転角度を表します。 | Present Positionは車輪の総回転角度を表します。 | ||
値はCCW方向に回転すると減少、CW方向に回転すると増加し、積算されます。値が0を下回ると65535になり、65535を超えると0になります。 | 値はCCW方向に回転すると減少、CW方向に回転すると増加し、積算されます。値が0を下回ると65535になり、65535を超えると0になります。 | ||
+ | |||
+ | **Multi Turnモード [#m8457ffc] | ||
+ | Address 6(0x06)~9(0x09)のCW Angle LimitとCCW Angle Limitを4095に設定するとMulti Turnモードになります。通常の位置決め制御時の範囲である-180°~180°を超えて、-2520°~2520°の位置決め制御を行う際にこのモードに設定します。~ | ||
+ | |||
+ | Goal Positionの設定 | ||
+ | | Bit15~0 | | ||
+ | | Gola Position -28672~28672 (符号付16bit整数) | | ||
**不揮発エリアとRAMエリア [#ub0b5828] | **不揮発エリアとRAMエリア [#ub0b5828] | ||
Address0から23は不揮発エリア、Address24以降はRAMエリアです。RAMエリアのデータは電源を入れたときに常に初期値に設定されます。不揮発エリアのデータは電源を切っても値が保持されます。~ | Address0から23は不揮発エリア、Address24以降はRAMエリアです。RAMエリアのデータは電源を入れたときに常に初期値に設定されます。不揮発エリアのデータは電源を切っても値が保持されます。~ | ||
不揮発エリアのデータ書き換え回数には数万回という制限があります。必要な時だけ書き換を行うような運用を行ってください。~ | 不揮発エリアのデータ書き換え回数には数万回という制限があります。必要な時だけ書き換を行うような運用を行ってください。~ | ||
+ | また、不揮発エリアの書き換えを行った直後は、0.5秒以上間隔をおいてから通信してください。 |