以下のDynamixelに共通のコントロールテーブルです。ここに記載されないDynamixelのコントロールテーブルとは異なります。
Dynamixelの機能及び設定は次のメモリマップ上に1バイトないし2バイト(リトルエンディアン)のアイテムとして割り当てられ、インストラクションパケットを使用して操作します。 2バイトに渡るアイテムは1つのインストラクションパケットにおいて同時に書き込まれる必要があります。
Control Table | ||||
---|---|---|---|---|
Address | Item | Access | Initial Value | Range |
0 (0x0) | Model Number | R | - | |
1 (0x1) | ||||
2 (0x2) | Version of Firmware | R | - | |
3 (0x3) | ID | R/W | 1 (0x01) | 0~253 |
4 (0x4) | Baudrate | R/W | 34 (0x22) | 0~254 |
5 (0x5) | Return Delay Time | R/W | 250 (0xFA) | 0~254 |
6 (0x6) | CW Angle Limit | R/W | 0 (0x00) | 0~4095 |
7 (0x7) | ||||
8 (0x8) | CCW Angle Limit | R/W | 255 (0xFF) | 0~4095 |
9 (0x9) | ||||
10 (0xA) | Drive Mode | R/W | 0 (0x00) | 0~3 |
11 (0xB) | Highest Limit Temperature | R/W | 80 (0x50) | 10~99 |
12 (0xC) | Lowest Limit Voltage | R/W | 60 (0x3C) | 50~250 |
13 (0xD) | Highest Limit Voltage | R/W | 190 (0xBE) | 50~250 |
14 (0xE) | Max Torque | R/W | 255 (0xFF) | 0~1023 |
15 (0xF) | ||||
16 (0x10) | Status Return Level | R/W | 2 (0x02) | 0~2 |
17 (0x11) | Alarm LED | R/W | 36 (0x24) | 0~127 |
18 (0x12) | Alarm Shutdwon | R/W | 36 (0x24) | 0~127 |
19 (0x13) | (Reserved) | RW | 0 (0x00) | |
20 (0x14) | Down Calibration | R | ? | |
21 (0x15) | ||||
22 (0x16) | Up Calibration | R | ? | |
23 (0x17) | ||||
24 (0x18) | Torque Enable | R/W | 0 (0x00) | 0~1 |
25 (0x19) | LED | R/W | 0 (0x00) | 0~1 |
26 (0x1A) | CW Compliance Margin | R/W | 1 (0x01) | 0~254 |
27 (0x1B) | CCW Compliance Margin | R/W | 1 (0x01) | 0~254 |
28 (0x1C) | CW Compliance Slope | R/W | 32 (0x20) | 1~254 |
29 (0x1D) | CCW Compliance Slope | R/W | 32 (0x20) | 1~254 |
30 (0x1E) | Goal Position | R/W | [Addr36]value | 0~4095 |
31 (0x1F) | ||||
32 (0x20) | Moving Speed | R/W | 0 (0x00) | 0~1023*1 |
33 (0x21) | ||||
34 (0x22) | Torque Limit | R/W | [Addr14]value | 0~1023 |
35 (0x23) | ||||
36 (0x24) | Present Position | R | ? | |
37 (0x25) | ||||
38 (0x26) | Present Speed | R | ? | |
39 (0x27) | ||||
40 (0x28) | Present Load | R | ? | |
41 (0x29) | ||||
42 (0x2A) | Present Voltage | R | ? | |
43 (0x2B) | Present Temperature | R | ? | |
44 (0x2C) | Registered Instruction | R/W | 0 (0x00) | 0~1 |
45 (0x2D) | (Reserved) | - | 0 (0x00) | |
46 (0x2E) | Moving | R | 0 (0x00) | |
47 (0x2F) | Lock | R/W | 0 (0x00) | 0~1 |
48 (0x30) | Punch | R/W | 32 (0x20) | 0~1023 |
49 (0x31) | ||||
56 (0x38) | Sensed Current | R | ? | |
57 (0x39) |
各Dynamixelを特定するための固有のIDナンバーです。同じネットワークの各Dynamixelに異なるIDが必要です。
0~253まで設定可能で、254はBroadcast IDと呼ばれ全てのDynamixelへパケットを送信する際に使用します。
通信速度を決定します。以下の公式で計算します。
Baudrate[BPS]=2000000 / (value + 1)
主なBaudrateのデータ値
Set value(Dec.) | Set value(Hex.) | Baudrate[BPS] | Target Baudrate[BPS] | Error※[%] |
1 | 0X01 | 1000000.0 | 1000000 | 0.000 |
3 | 0X03 | 500000.0 | 500000 | 0.000 |
4 | 0X04 | 400000.0 | 400000 | 0.000 |
7 | 0X07 | 250000.0 | 250000 | 0.000 |
9 | 0X09 | 200000.0 | 200000 | 0.000 |
16 | 0X10 | 117647.1 | 115200 | -2.124 |
34 | 0X22 | 57142.9 | 57600 | 0.794 |
103 | 0X67 | 19230.8 | 19200 | -0.160 |
207 | 0XCF | 9615.4 | 9600 | -0.160 |
注意: ±3%以下の許容誤差が一般に通信可能な範囲です。
Dynamixelの動作角を設定します。Goal Positionは以下の範囲にある必要があります。
CW Angle Limit <= Goal Position <= CCW Angle Limit
Goal Positionが動作角のリミットを越えると、Angle Limit Errorが起こります。
CW Angle Limit及びCCW Angle Limitを両方0に設定するとEndless Turnモードになります。
デュアルモードにおけるマスタ/スレーブ、及び回転方向を設定します。
Bit | 名称 | 内容 |
Bit7~2 | - | - |
Bit1 | デュアルモード | 0:マスタ、1:スレーブ |
Bit0 | リバースモード | 0:ノーマル、1:リバース |
スレーブに設定されたDynamixelは、マスタに設定されたDynamixelとデュアルモード用ケーブルで接続すると、マスタに設定されたDynamixelと同期したポジションに自動的に動作します。 1つの関節に対し、2つのDynamixelを使用して、トルクアップを図る場合などに使用します。
デュアルモード用ケーブルの接続の仕方により、スレーブのDynamixelの回転方向が変わります。 黒い線を並列に接続した場合は順方向に、クロスして接続した場合は逆方向に回転します。
リバースモードをオンにすると、図のようにポジションが左右対称になります。デュアルモードでスレーブに設定されている場合は無効です。
左右対称の機構などに対し、片方をリバースすることで回転方向を統一できます。
Dynamixelの動作温度の上限です。Dynamixelの内部温度がこの値より高くなるとOverheating Errorが起こります。値は℃です。
Dynamixelの動作電圧の上限と下限です。現在の電圧(Address42)が指定した範囲から出ると、Input Voltage Errorが起こります。値は実際の電圧の10倍です。例えばAddress12が80なら、電圧の下限は8Vに設定されます。
Dynamixelの最大トルク出力です。この値が0に設定されるとDynamixelはトルクがかかっていないFree Runモードになります。EEPROM(Address14, 15)とRAM(Address34, 35)の2つに最大トルクが定義されます。電源を入れるとEEPROMの最大トルク値がRAMの最大トルク値にコピーされます。DynamixelのトルクはRAM(Address34, 35)の値によって制限されます。
インストラクションパケットを受けた後にDynamixelがステータスパケットを返すかどうかを決定します。
Adress16 | ステータスパケット |
0 | PING以外のインストラクションには応答しない |
1 | READ_DATAだけに応答する |
2 | すべてのインストラクションに応答する |
Broadcast ID(0xFE)を使ったインストラクションの場合は、Address16の値に関わらずステータスパケットを返しません。
対応するBitが1に設定されると、Errorが起こったときにステータスLEDが点滅します。
Bit | Function |
Bit7 | 0 |
Bit6 | 1に設定されていたら、Instruction Errorが起こるとLEDが点滅します |
Bit5 | 1に設定されていたら、Overload Errorが起こるとLEDが点滅します |
Bit4 | 1に設定されていたら、Checksum Errorが起こるとLEDが点滅します |
Bit3 | 1に設定されていたら、Range Errorが起こるとLEDが点滅します |
Bit2 | 1に設定されていたら、Overheating Errorが起こるとLEDが点滅します |
Bit1 | 1に設定されていたら、Angle Errorが起こるとLEDが点滅します |
Bit0 | 1に設定されていたら、Input Voltage Errorが起こるとLEDが点滅します |
すべてのビットのOR論理演算に従って動作します。例えば0x05が設定されていたら、Input Voltage ErrorかOverheating Errorが起こったときにLEDが点滅します。エラー状態から正常状態に戻るとLEDは2秒後に点滅を止めます。
対応するビットが1に設定されていて、エラーが発生するとDynamixelのトルクがオフになります。Alarm LEDとは異なり、Errorが発生した後、正常状態に戻ってもトルクオフの状態が維持されます。復帰するためにはTorque Enable(Address24)を1に再設定しなければなりません。
Bit | Function |
Bit7 | 0 |
Bit6 | 1に設定されていたら、Instruction Errorが起こるとトルクをオフにします |
Bit5 | 1に設定されていたら、Overload Errorが起こるとトルクをオフにします |
Bit4 | 1に設定されていたら、Checksum Errorが起こるとトルクをオフにします |
Bit3 | 1に設定されていたら、Range Errorが起こるとトルクをオフにします |
Bit2 | 1に設定されていたら、Overheating Errorが起こるとトルクをオフにします |
Bit1 | 1に設定されていたら、Angle Errorが起こるとトルクをオフにします |
Bit0 | 1に設定されていたら、Input Voltage Errorが起こるとトルクをオフにします |
最初に電源を入れるとDynamixelはTorque Free Run(ゼロトルク)になります。Address24に1を設定するかゴールポジションが設定されるとトルクが有効になります。
Dynamixelのコンプライアンスは、コンプライアンスのMarginとSlopeを設定することで定義されます。この特徴は出力軸で衝撃を吸収するのに利用します。下のグラフはそれぞれのコンプライアンス値(A、B、C、Dの長さ)がポジションエラーと適用されたトルクによってどう定義されるかを示します。
A : CCW Compliance Slope(Address26)
B : CCW Compliance Margin(Address27)
C : CW Compliance Margin(Address28)
D : CW Compliance Slope(Address 29)
E : Punch(Address48, 49)
出力軸がGoal Positionへ動く時の角速度です。0に設定すると速度調節が適用されない供給電圧で可能な最大の速度になります。
Endless Turnモードでは回転速度になります。詳しくはEndless Turnを参照。
最大出力の上限値です。単位は最大出力に対する割合です。Max Torqueが512なら最大出力対比約50%、1023なら100%が出力の上限となります。 電源を入れるとMax Torqueの値を初期値として使用します。
出力軸の現在の角度です。Goal Positionと同様0(0x000)~4095(0xfff)の値に対し、0°~250.92°を表します。
Endless Turnモードでは総回転角度を表します。詳しくはEndless Turnを参照。
出力軸の現在の角速度です。 ビット10は回転方向を表します。
BIT | Bit15~11 | Bit10 | Bit9~0 |
Value | 0 | Turn Direction | Speed Value |
Trun Direction = 0 : CCW, Trun Direction = 1 : CW
操作するDynamixelの負荷の大きさです。ビット10は負荷の向きを表します。
Bit | Bit15~11 | Bit10 | Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 |
Value | 0 | Load Direction | Load Value |
Load Direction = 0 : CCW Load, Load Direction = 1 : CW Load
REG_WRITEコマンドでインストラクションが格納されたとき1が設定され、ACTIONコマンドによって格納されたインストラクションが完了したら0が設定されます。
現在の電流値です。 単位は10mAです。
値が512より大きい場合はCW方向に、512より小さい場合はCCW方向にモータが回転していることを意味し、値と512の差が電流値となります。
例えば値が612なら、回転方向はCWで、612 - 512 = 100 -> 100 × 10mA = 1000mAとなります。値が312なら、回転方向はCCWで、512 - 312 = 200 -> 200 × 10mA = 2000mAとなります。
Address 6(0x06)~9(0x09)のCW Angle Limit、CCW Angle Limitを0に設定し、Address 32(0x20),33(0x21)に以下の通りMoving Speedを設定するとEndless Turnモードになります。車輪のような役割で使用する際にこのモードに設定します。
Moving Speedの設定
BIT | Bit15~11 | Bit10 | Bit9~0 |
Value | 0 | Turn Direction | Speed Value |
Trun Direction = 0 : CCW, Trun Direction = 1 : CW
Present Positionは車輪の総回転角度を表します。 値はCCW方向に回転すると減少、CW方向に回転すると増加し、積算されます。値が0を下回ると65535になり、65535を超えると0になります。