只今編集中です。 |CENTER:BGCOLOR(red):||c | :idea:|AX-12+に過度な負荷がかかったり、長時間負荷がかかったりすると、ロボットハンドで挟んだ物が壊れるだけでなく、AX-12+のギアが欠けたり、モーターが焼けたりする場合があります。プログラミングの際は十分ご注意下さい。| *プログラミング [#x9b50a54] 「掴む力を自動的にコントロールするロボットハンド」のプログラムを作成します。 少しづつ手を閉じて行き、物を挟むことで負荷が増加したら手を閉じるのを止めるという方法で、掴む力をコントロールします。 **処理の流れを図にする。 [#k595abe3] 処理の流れを図にしましょう。 #ref(RobotHand_p1.png, 100%) 先ず手を大きく開きます。そこから手を少し閉じて負荷を測定し、負荷の値が閾値より小さければ再び少し手を閉じるを繰り返します。手が物を挟むことによってAX-12+の負荷が増えて行き、負荷の値が閾値を超えたら手を閉じるのを止め、物を挟んだ状態でストップします。 **準備 [#i6f753bf] GCC Developer Liteを起動して、Chapter4で作成したプログラムを開いて下さい。 メニューの「ファイル」→「開く」→ ファイル(SoundMeter.c)を選択し、「開く」をクリックします。 ---- メニューの「ファイル」→「名前を付けて保存」→ファイル名に「RobotHand.c」と入力し、[[Chapter1.3のサンプルプログラムのダウンロード>FDIII-HC Starter Kit Guide Chapter1.3#r86cf508]]で作成したSampleフォルダに「保存」します。 **不要な部分を削除 [#p5868f6b] #ref(RobotHand_p2.png, 100%) メイン関数内の最初の uint8_t ReadData; bool PB; を削除します。 while文の中の fd_DXReadByteData (100, 36, &ReadData); fd_printf ("%3d\r", ReadData); fd_DXWriteWordData (1, 30, ReadData * 3); PB = fd_GetPB(); if(PB == true){ fd_DXWriteByteData (100, 36, 0); } を削除します。 **手を開く [#o0c589b7] AX-12+のホーンを動かして手を開きます。 #ref(RobotHand_p3.png, 100%) #ref(RobotHand_p4.png, 100%) 手が開いた状態は、AX-12+のホーンの中心が300の時とします。もし手を反対に付けてしまった場合は、700の時としましょう(以下300として説明します)。 #ref(RobotHand_p5.png, 100%) AX-12+のホーンを動かすには、アドレス30,31にゴールポジションを書き込みます。2バイトのデータを書き込むにはfd_DXWriteWordData関数を使います。 手を開くのは最初の1回だけなので、while文の前に fd_DXWriteWordData (1, 30, 300); と入力します。引数はDynamixel ID=1、アドレス=30、書き込むデータ=300です。 **負荷を読み込む [#x263bcf7] 本来は手を開いた後は「少し手を閉じる」ですが、その前に負荷がどのような値なのかを見てみましょう。 [[次のチャプターへ>FDIII-HC Starter Kit Guide Chaptert5.4]]~ [[FDIII-HC Starter Kit Guide]]に戻る
(This host) = http://www.besttechnology.co.jp