3: 2010-01-05 (火) 19:03:58 takaboo | 現: 1970-01-01 (木) 18:00:00 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | TITLE:FREEDOM III Library Sample Code | ||
- | *FREEDOM III Library [#n5eea44f] | ||
- | FREEDOM III Libraryについて詳しくは[[こちら>FREEDOM III Library]]をご覧下さい。~ | ||
- | ~ | ||
- | *ダウンロード [#b82d8c07] | ||
- | #ref(http://www.besttechnology.co.jp/download/FDIII-HCSMPL1.0.zip) | ||
- | |||
- | *一覧 [#ff530b3f] | ||
- | **Initialize.c [#af73d454] | ||
- | ライブラリを使用するにあたって必要最低限の手順を示す。 | ||
- | fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); | ||
- | マイコンのDBGUポートをコンソールのシリアルバイパス機能として使用する場合の通信速度、FDIII-HC に搭載されるBluetooth の使用目的設定、コントローラのブザーを鳴らすイベントの設定、電源電圧低下を知らせるアラームの検出電圧[V]を指定する。 | ||
- | |||
- | 通信速度はFDIII-HCでは意味を持たないため常時0[bps]を設定。 | ||
- | fd_SoftReset (); | ||
- | コントローラのリセットを行い、ブートローダへ移行する。 | ||
- | |||
- | **Switch_LED.c [#d2cdd0b5] | ||
- | プッシュスイッチ、ディップスイッチ、LEDを使用する。 | ||
- | led = fd_GetPB (); | ||
- | fd_SetLed (led); | ||
- | FDIII-HCのプッシュスイッチが押されるとfd_GetPBがTrueを返し、fd_SetLedの引数をTureとなりLEDが点灯する。 | ||
- | dip = fd_GetDIP (); | ||
- | fd_printf (" %04b\r", dip); | ||
- | fd_GetDIPがFDIII-HCのディップスイッチの状態を返し表示する。 | ||
- | |||
- | **Acceleration.c [#i7ee0ea2] | ||
- | 加速度センサ値を取得。 | ||
- | fd_Acceleration (acceleration); | ||
- | fd_printf (" %4d %4d %4d\r", acceleration[0], acceleration[1], acceleration[2]); | ||
- | FDIII-HCに搭載されている加速度センサの値を取得し表示する。~ | ||
- | FDIII-HCを傾けたり、動かしたりすることで値の変化を確認できる。 | ||
- | |||
- | **DxWriteData.c [#l2479cb6] | ||
- | Dynamixelにデータを書き込む。 | ||
- | fd_DXWriteByteData (1, 25, led); | ||
- | fd_DXWriteWordData (1, 30, led * 512 + 256); | ||
- | Dynamixelのコントロールテーブルには、1バイトで表されるデータと2バイトで1つの意味を持つデータがある。1バイトのデータにはfd_DXWriteByteData、2バイトのデータにはfd_DXWriteWordDataで書き込みを行う。 | ||
- | |||
- | **DxReadData.c [#j5d7fdb4] | ||
- | Dynamixelからデータを読み出す。 | ||
- | fd_DXReadByteData (1, 46, &moving); | ||
- | fd_DXReadByteData (1, 36, &position); | ||
- | 書き込みと同様、1バイトのデータにはfd_DXReadByteData、2バイトのデータにはfd_DXReadByteDataで読み込みを行う。 | ||
- | |||
- | **Motion.c [#p9d647fc] | ||
- | Dynamixelはfd_DXWriteWordDataを使ってゴールポジションを指定することで角度を動かすことが可能だが、モーションを使うとゴールポジションとの間を補完して動かすため滑らかな動作を実現できる。~ | ||
- | また複数軸の一連の動作を1つのモーションとして管理するため、多軸ロボットの動作に向いている。ここでは3軸のみの簡単な説明に留めるので、詳しくは[[FREEDOM jr.III Sample Code]]を参照のこと。 | ||
- | fd_SetServoParameter (&HomePosition, SVParam, fd_SVSize (SVParam)); | ||
- | モーションを使う前に必ずサーボパラメータ初期化が必要。 | ||
- | fd_SetMotion (SmoothMotion, 1, fd_MSize (SmoothMotion), 100, &AllDynamixel); | ||
- | モーション再生を開始する。再生するモーション、モーションの始点と終点、再生速度、モーションを適用する部位を設定。 | ||
- | |||
- | モーションは、任意のDynamixelにのみ設定することができ、異なる部位において異なるモーションを複数同時に非同期で再生することができる。 | ||
- | |||
- | **RC100.c [#se4a33fe] | ||
- | RC-100Bを使う。 | ||
- | fd_Init (0, BT_RC100, FD_BEEP_MMI | FD_BEEP_BOOTUP, 7.4); | ||
- | 初期化でBluetoothの設定をBT_RC100にする必要がある。 | ||
- | fd_GetRC100Data (&rc); | ||
- | ボタンの状況を取得する。ボタンが押下されているか、ボタンの状態が変わったかを取得する。 | ||
- | |||
- | **DxInstruction.c [#ee61939a] | ||
- | バックグラウンドでのDynamixelインストラクションの設定。 | ||
- | fd_AddInstruction (&GetAXS1DataInst); | ||
- | 一度インストラクションを登録するだけで、バックグラウンドで一定周期でAX-S1の距離センサ値を読み込んでいる。 | ||
- | |||
- | **Plugin.c [#x0d37eec] | ||
- | プラグインの設定。 | ||
- | fd_AddPlugin ((TFDPluginFunc)PluginCount, 100, NULL, &i); | ||
- | 前項と同様に一度プラグインを登録するだけで、バックグラウンドで一定周期でプラグインが実行される。 | ||
- | プラグイン関数はユーザーが任意で作成可能。 |