2: 2009-07-02 (木) 12:18:50 sho | 3: 2009-07-03 (金) 12:54:27 sho | ||
---|---|---|---|
Line 135: | Line 135: | ||
&color(#000,#DDD){PARAMETER}; : なし~ | &color(#000,#DDD){PARAMETER}; : なし~ | ||
~ | ~ | ||
- | 複数のDynamixelを同時に動作させるときにはACTIONが役立ちます。複数のDynamixelを制御するとき、1番目と最後のDynamixelの間にわずかな遅延が発生します。ACTIONを使うことでこの問題を解決することができます。2個以上のDynamixelへACTIONを送信するときにBroadcast ID(0xFE)を使用します。Broadcast IDを使用するとパケットが一切返ってこないことに注意が必要です。 | + | 複数のDynamixelを同時に動作させるときにはACTIONが役立ちます。複数のDynamixelを制御するとき、1番目と最後のDynamixelの間にわずかな遅延が発生します。ACTIONを使うことでこの問題を解決することができます。2個以上のDynamixelへACTIONを送信するときにBroadcast ID(0xFE)を使用します。Broadcast IDを使用するとパケットが一切返ってこないことに注意して下さい。 |
**PINGインストラクション [#ya8e46c6] | **PINGインストラクション [#ya8e46c6] | ||
Line 167: | Line 167: | ||
|ヘッダ|ID|LENGTH|ERROR|CHECKSUM| | |ヘッダ|ID|LENGTH|ERROR|CHECKSUM| | ||
|0xFF 0xFF|0x00|0x02|0x00|0xFD| | |0xFF 0xFF|0x00|0x02|0x00|0xFD| | ||
- | RESETを実行した後、DynamixelのIDが1に変わっていることに注意しましょう。 | + | RESETを実行した後、DynamixelのIDが1に変わっていることに注意して下さい。 |
+ | |||
+ | **SYNC_WRITEインストラクション [#d25e994b] | ||
+ | 同時に複数のDynamixelを制御します。SYNC_WRITEは1つのインストラクションパケットで複数のインストラクションを送るので通信時間を減らすことが可能です。しかし、書き込むデータのアドレスとデータ長が同じインストラクションに限ります。また、Broadcast IDの使用が必要です。~ | ||
+ | ~ | ||
+ | &color(#000,#DDD){ID}; : 0xFE~ | ||
+ | &color(#000,#DDD){LENGTH}; : (L+1) * N+4 (L : 各Dynamixelのデータ長、N : Dynamixelの個数)~ | ||
+ | &color(#000,#DDD){INSTRUCTION}; : 0x83~ | ||
+ | &color(#000,#DDD){PARAMETER 1}; : 書き込むデータの先頭アドレス~ | ||
+ | &color(#000,#DDD){PARAMETER 2}; : 書き込むデータの長さ~ | ||
+ | &color(#000,#DDD){PARAMETER 3}; : 1番目のDynamixelのID~ | ||
+ | &color(#000,#DDD){PARAMETER 4}; : 1番目のDynamixelの書き込む1番目のデータ~ | ||
+ | &color(#000,#DDD){PARAMETER 5}; : 1番目のDynamixelの書き込む2番目のデータ~ | ||
+ | ・~ | ||
+ | ・~ | ||
+ | &color(#000,#DDD){PARAMETER L+3}; : 1番目のDynamixelの書き込むL番目のデータ~ | ||
+ | &color(#000,#DDD){PARAMETER L+4}; : 2番目のDynamixelのID~ | ||
+ | &color(#000,#DDD){PARAMETER L+5}; : 2番目のDynamixelの書き込む1番目のデータ~ | ||
+ | &color(#000,#DDD){PARAMETER L+6}; : 2番目のDynamixelの書き込む2番目のデータ~ | ||
+ | ・~ | ||
+ | ・~ | ||
+ | &color(#000,#DDD){PARAMETER 2L+4}; : 2番目のDynamixelの書き込むL番目のデータ~ | ||
+ | ~ | ||
+ | 例) 4個のDynamixelに以下の位置と速度を設定~ | ||
+ | ID0のDynamixel : スピード0x150でポジション0x010へ~ | ||
+ | ID1のDynamixel : スピード0x360でポジション0x220へ~ | ||
+ | ID2のDynamixel : スピード0x170でポジション0x030へ~ | ||
+ | ID3のDynamixel : スピード0x380でポジション0x220へ~ | ||
+ | ~ | ||
+ | ''インストラクションパケット : 0xFF 0xFF 0xFE 0x18 0x83 0x1E 0x04 0x00 0x10 0x00 0x50 0x01 0x01 0x20 0x02 0x60 0x03 0x02 0x30 0x00 0x70 0x01 0x03 0x20 0x02 0x80 0x03 0x12''~ | ||
+ | ~ | ||
+ | Broadcast IDを使ったのでステータスパケットは返ってきません。 |