GND基本的な固定方法フレームにより以下の様な構成が可能です。様々な配線方法が考慮されていますので、用途に応じた方法を選択します。DXHUBとDynamixelを接続する場合は、同じピン数のコネクタを装備したケーブルを使用します。電源が供給された状態での配線作業は絶対に避けて下さい。配線を終え電源を投入すると、正常であればDynamixelの背面上部に装備された赤色のLEDが0.5秒点滅した後消灯します(ホストからLEDの点灯指示等が無いものとする)。通信を行っていないにもかかわらず電源投入時にLEDが常時消灯ないし常時点灯した場合は、何らかの重大な問題が生じている可能性があります。電源を切り、配線方法やケーブル、電源装置を確認して下さい。LEDが一定周期で点滅し続ける場合は、Dynamixel自信が何かしらの異常を検出した時です。通信プロトコルについてDynamixel(スレーブ)自らが勝手にデータを送信することは無く、別途用意されるPC等(マスターないしホスト)から送信されるデータをDynamixelが受信した際にのみデータを返信するといったマスタースレーブ方式を採用しています。決められた電文に従った(プロトコル)電文にのみ応答します。その1回分の電文をパケットと言います。Dynamixelシリーズには2種類の通信プロトコル(1.0と2.0)が存在し、本品はその2種類に対応しています。I/Fはシリアル通信を行う際の電気的な仕様の1つです。1つの信号線で送信と受信を行う半二重を選択しています。IDについてDynamixelは出荷時において個体識別用のID(数字)が全て1に設定されいます。その状態のまま1つのネットワークに複数台接続してしまうと、ホストから個々のDynamixelを識別することができないまでか、全てのDynamixelが自分自身への指令と認識してしまいます。そのため、複数台を接続して使用する際は、必ず予め1台ずつ異なるIDを設定しておきます。IDを設定する際は先の識別の問題を回避するためホストが提供するネットワークに1台のみのDynamixelを接続し、複数台のDynamixelが接続されていない状態で作業を行う必要があります。ボーレートについてDynamixelのボーレートは高いほど大量のデータを短時間に送受信できます。高いボーレートはケーブルの長さや等の外的要因が相まって、データそのものの信頼性が損なわれる確率が高くなります。複数台のDynamixelを使用する際は、全て同じボーレートに設定しておく必要があります。コントロールテーブルとはDynamixel内に用意されたメモリ領域をここではコントロールテーブルと称します。コントロールテーブル中の任意のデータにアクセスする手段として通信プロトコロルが用意されています。ホストから指定されたIDを持ったDynamixelのコントロールテーブルに対して読み書きを行う事で全てを統括するため、先のIDやボーレートもコントロールテーブル上に配置されています。コントロールテーブルの詳細は後述の表に示します。動作モードについてDynamixelは用途に応じて複数の動作モードを選択できます。大きく分けて3つの基本動作を持ちます。関節を構成する部位等に使用し、指定された角度を維持する。本Dynamixelでは「角度」とは言わず「位置」と称し、通常は0~360°の範囲でホーンの位置決めを行う。車輪を構成する部位等に使用し、指定された回転速度を維持する。負荷に対してトルクを加える部位等に使用し、指定された負荷を制御する。これらの制御の切り替えや制御を行う際の条件の設定は、コントロールテーブル上に配置された様々なパラメータの値を変更することで行います。DX/EX/AX/MXシリーズ共通の通信プロトコルです。XシリーズでプロトコルをV1に切り替えた際にも適用されます。WRITE基本的な情報IDDynamixelでは複数のデバイスを同じネットワークに接続して運用する事を前提としているため、各々のデバイスを区別するためにユニークなID番号を用いる事としています。ホストは任意のIDを持ったデバイスを指定して命令し、指定されたIDに一致したデバイスがそれに応答するといったマスタースレーブ方式を採用しています。複数のデバイスに同じID値が付けられている事は前提としていないため、1つのネットワークに同一IDを持つデバイスが複数存在してはなりません。コントロールテーブルデバイスの情報はメモリマップでとして提供されており、それをコントロールテーブルと称します。複数の情報はコントロールテーブル上の異なるアドレスに割り当てられており、必要に応じてホストから任意のIDを持ったデバイスの任意のアドレスへアクセスします。パケット通信ホストとデバイス間は一般的なシリアル通信を行うハードウェアで接続され、パケット単位で処理される共通の通信プロトコルを用いて相互に情報をやりとりします。ここではホストからデバイスへ送信されるパケットを「インストラクションパケット」、デバイスからホストへ送信されるパケットを「ステータスパケット」と称します。ホストから送信するインストラクションパケットの主な機能はIDの指定とコントロールテーブルの任意のアドレスへのデータの読み書きとなります。そのパケットに対して応答すべきデバイスから返信されるステータスパケットには、ホストから読み出し要求されたコントロールテーブル内のデータや、書き込み要求に対する整合性の結果などが含まれます。以後「0x」が付与された英数字は16進数、そうでないものは10進数とみなします。Levelによってパケットの有無が異なります。インストラクションパケットインストラクションパケットはホストからデバイスへ命令するためのパケットです。パケット構造は以下の通りで、囲み1つが1byteを意味します。Header先頭2バイトは0xFF,0xFFの固定値。ID送信先のデバイスのID。0~253(0x00~0xFD)の範囲及び254(0xFE)。254のIDは1回のインストラクションパケットで複数のデバイスに対して命令を発効する際に使用。LengthInstruction以後の全てのバイト数。Instruction以下のいずれかのインストラクション。4~ParameterInstructionで要求される追加情報(可変長)。Checksum計算方法は次の通りです。ParamN)計算された値が255を超えた場合は下位8ビットをSUMとします。ステータスパケットステータスパケットはホストから送信されるインストラクションパケットをデバイスが受信した後、その応答としてデバイスからホストへ返信されるパケットです。パケット構造は以下の通りで、囲み1つが1byteを意味します。Header先頭2バイトは0xFF,0xFFの固定値。LengthError以後の全てのバイト数。Errorパケット処理中に検出されたデバイスの動作状況等。電源電圧が指定動作電圧の範囲を超えたParameterインストラクションパケットに従った追加情報(可変長)。Checksum計算方法は次の通りです。ParamN)計算された値が255を超えた場合は下位8ビットをSUMとします。インストラクション詳細PING特定のIDを持ったDynamixelの存在を確認します。IDに254を指定してPINGインストラクションを送信すると、ネットワークに存在する全てのDynamixelが順次ステータスパケットを返します。インストラクションパケットのParameterなしステータスパケットのParameterなし例)INST:ID=1にPINGを発行。...ChecksumSTAT:ID=1のDynamixelが応答。...ChecksumREAD特定IDのデバイスへアドレス・バイトサイズを指定してコントロールテーブルのデータを読み出します。IDは0~253の範囲が指定できます。DATA[N-1]例)INST:AX-12A想定。Length=2(0x02)を指定してREADを発行。...ChecksumSTAT:8bit幅で現在のPresentTemperature=32(0x20)の値を返信。...ChecksumWRITE特定IDのデバイスへアドレス・データ(任意バイト数)を指定してコントロールテーブルへ書き込みます。IDは0~252の範囲と254が指定でき、254を指定した場合はステータスパケットが返りません。DATA[N-1]ステータスパケットのParameterなし例)INST:AX-12A想定。16bit幅)を指定してWRITEを発行。...ChecksumSTAT:ID=1のDynamixelが応答。WRITE特定IDのデバイスへアドレス・データ(任意バイト数)を指定してコントロールテーブルへ書き込む点ではWRITEインストラクションと同じですが、その後ACTIONインストラクションが実行されない限りコントロールテーブルへ反映されません。IDは0~253の範囲と254が指定でき、254を指定した場合はステータスパケットが返りません。Instructionを1にし、ACTIONインストラクションを待機中である事を示します。DATA[N-1]ステータスパケットのParameterなし例)INST:AX-12A想定。...ChecksumSTAT:ID=1のDynamixelが応答。WRITEインストラクションで待機中のデバイスのコントロールテーブルを更新します。IDは0~253の範囲と254が指定でき、254を指定した場合はステータスパケットが返りません。Instructionが1であれば0になりますが、0であったデバイスはエラーを返します。インストラクションパケットのParameterなしステータスパケットのParameterなし例)INST:ID=1に対しACTIONを発行。Instructionが1であった場合の正常時の返信。...Error0xFC...ChecksumRESET特定IDのデバイスを出荷時の状態にします。IDは0~253の範囲と254が指定でき、254を指定した場合はステータスパケットが返りません。インストラクションパケットのParameterなしステータスパケットのParameterなし例)INST:ID=0にRESETを発行。WRITEParameterに共通のアドレス・共通のバイトサイズ(16bit幅)・複数のIDと各データを指定した1回のインストラクションパケットで、複数のデバイスのコントロールテーブルへ書き込みます。インストラクションパケットのIDは254固定、パラメータ内のIDは重複しない0~253の範囲をとります。...例)INST:AX-12A想定。以下のDynamixelに共通のコントロールテーブルです。DX-113DX-116DX-117RX-10RX-24FRX-28RX-64AX-12AX-12+AX-12AAX-18FAX-18Aアイテム一覧Dynamixelの機能及び設定は次のメモリマップ上に1バイトないし2バイト(リトルエンディアン)のアイテムとして割り当てられ、インストラクションパケットを使用して操作します。2バイトに渡るアイテムは1つのインストラクションパケットにおいて同時に書き込まれる必要があります。uint160~102349データ幅が16bitのアイテムはリトルエンディアン(データの下位バイトから順に格納)。Accessに(NVM)とあるアイテムは不揮発メモリとなっており、電源を切っても値が保持される。頻繁な書き換えは想定されていないため、書き換えは必要最低限にとどめること。Enalbeが0でなくてはならない。(reserve)はシステムで予約され、読み出した値に有効性はない。書き込みを行ってはならない。Valueは出荷時ないしファクトリーリセットを行った際の値。ファームウェアのバージョンによって値が変更される場合がある。Numberモデル固有の値を保持します。異なる種類のDynamixelを混在して使用する際の個体識別などに使用できます。Firmware内蔵されるCPUに書き込まれたプログラムのバージョンです。ファームウェアの更新を行った際に合わせて自動的に変更されます。ID各Dynamixelを特定するための固有の値で0~253の範囲の数値で設定します。同一ネットワーク内に存在するDynamixelには各々異なるIDが要求されます。Baudrate通信速度を決める分周値で、通信速度は次式で導かれます。-0.160※ホストとのボーレートの誤差は±2%以下が要求されます。Timeインストラクションパケットが送られた後、ステータスパケットを返すまでの待ち時間を設定します。ホストにおいて半二重のバス制御のタイミングに合わせて調整しますが、DXHUBを使用する限りでは0を設定しても問題ありません。Limit動作角の範囲です。Positionは以下の範囲に設定する必要があります。Errorが起こります。Turnモードになります。Errorの該当ビットがONになります。Errorの該当ビットはONになります。Torque最大出力トルクの初期値です。Limitへコピーされ、以後使用されません。単位は最大出力に対する割合です。Torqueが512なら最大出力対比約50%、1023なら100%が出力の上限となります。Levelステータスパケットを返信するインストラクションパケットを選択します。LED対応するビットを1に設定すると、エラーが発生した時にステータスLEDが点滅します。すべてのビットのOR論理演算に従って動作します。Errorが起こったときにLEDが点滅します。Limitを0に設定し、モータの出力を遮断します。Limitに値を再設定する必要があります。Calibrationポテンショメータの誤差を補うのに使用されるデータです。ユーザは変更できません。Enable電源を入れた時、出力軸はフリーの状態です。Enableを1に設定するとトルクが有効になります。Positionを指定した場合も1になります。LED本体に装備されたLEDを点灯ないし消灯します。SlopeDynamixelはコンプライアンスを設定することで出力軸に柔軟性を持たせます。グラフはポジションと出力の相関を表し、A~Dは各コンプライアンス値です。Position出力軸の位置を設定します。出力軸0~300°に対し、0~1023の値を与えます。Turnモードでは使用しません。Speed出力軸が動く際の回転数を指定します。[rpm]但し該当モデルの最大回転数以上では動作しません。0に設定すると供給電圧で可能な最大速度になります。Limit最大出力の上限値です。単位は最大出力に対する割合です。Torqueが512なら最大出力対比約50%、1023なら100%が出力の上限となります。Torqueの値を初期値として使用します。Position出力軸の現在位置です。出力軸0~300°に対し、0~1023の値をとります。Turnモードでは300~360°の間は不定値となります。Speed出力軸の現在の角速度です。10番目のビットは回転方向を表します。Load出力に基づいて算出された負荷の大きさです。10番目のビットは負荷の方向です。単位は最大出力に対する割合です。512ならCCW方向に最大出力対比約50%、1023なら100%の負荷となります。Voltage現在供給されている電圧です。値は電圧(V)の10倍値です。10Vは100となります。Temperature内部温度(°C)です。InstructionREG_WRITEコマンドでインストラクションが格納されたとき1になり、ACTIONコマンドでインストラクションが完了したら0になります。Moving供給された電力で出力軸が回転しているときに1、それ以外は0が設定されます。外力によって出力軸が動いても1にはなりません。Lock1を設定するとコントロールテーブルの不揮発エリア(アドレス0~23)が書き換え不能になります。ロックの解除するには電源を入れ直す必要があります。Punch現バージョンのファームウェアでは使用していません。操作時にモータに供給される最小の電流です。Turnモードになります。Speedで回転速度を指定します。Speedは、最大出力に対する出力の割合です。512ならCCW方向に最大出力対比約50%、1023なら100%の出力で制御します。負荷の大きさによって回転速度は変わります。