中野島ロボット

小さなロボットの自作記事を書いています。

週刊中ロボ98 4日でできる! 二足歩行ロボット Day4 モーション作成

3Dプリンタで作る吉野式二足歩行ロボット「ArduiroidOne」の作り方を公開しています。ArduinoNanoV3を使う場合の記事です。今回はモーションを作成します。

f:id:nakarobo:20200510083106j:plain


6 ポジションの作成
ArduiroidOneは8個のサーボモータの位置を基本姿勢から角度を指定して動かして姿勢(ポジション:Position)を作成し、それを繋げてモーションを作成します。
ポジションは32個保存でき、保存したポジションはPコマンドで呼び出すことができます。
SコマンドやAコマンドを使用して姿勢を確認したら、basicPosition構造体にポジションを格納していきます。

試しにP1に、右手を上げるポジションを追加してみましょう。右手は7番目のサーボモータなので、以下のようになります。

ArduiroidOneTest.ino

(中略)

const int8_t basicPosition[32][MAX_SERVO_NUM] =
{
 {0,0,0,0,0,0,0,0}, // P00:
 {0,0,0,0,0,0,90,0}, // P01: 右手を上げる
(以下略)

また何のモーションだったか忘れないように、コメントを書いておきます。コメントは ダブルスラッシュ ”//”の後に書くと、改行までが、コメントとして扱われます。

f:id:nakarobo:20200510122446p:plain

スケッチをArduinoNanoに書き込んだら、シリアルモニタからPコマンドで呼び出して確認します。
p1と入力して送信を押します。

f:id:nakarobo:20200510122621p:plain

ArduiroidOneが右手を上げたら成功です。

f:id:nakarobo:20200510123638j:plain

Hello World!

注意事項
一度にサーボモータを動かすと、電流が足りなかったり、時間内にサーボモータが指定の角度まで回しきれなかったりするので、一度に使うサーボモータの個数は4回まで、一回の移動距離は60度以内になるようにポジションを作って下さい。

 

TIPS
p-1と入力して送信を押すと、今度は左手を上げるはずです。実際は左右のサーボモータの特性が同じではないし、重量バランスも異なるので、全てのポジションが代用できる訳ではありませんが、Pコマンドのミラー機能を上手に使うとメモリの消費を少なくすることができます。

 

7.モーションの作成

モーションの確認方法
ポジションが作成できたら、それをつないでモーションを作成して行きます。作成したポジションをシリアルモニタから連続して呼び出して動作を確認する事ができます。たとえば

 p0,p1, p-1, p1, p-1,p1, p-1,p0

 と入力すると、基本姿勢→右手→左手→右手→左手→右手→左手→基本姿勢の順に動作するはずです。シリアルモニタで一度に指示できるのは、64バイトまでなので、20ポジション位のモーションを確認する事ができます。

 

モーションの呼び出し
モーションが決まったら、数値コマンドに作成したポジションを割り付けて行きます。
ポジションを呼び出すのは set8pos() 関数です。この関数の引数はポジションの番号です。数値コマンドの1番に割り付けた場合のプログラムの修正は以下となります。

f:id:nakarobo:20200510122816p:plain

シリアルモニタから送るよりも通信が無い分、少し早く動くかもしれません。そうなるとバランスが変わって来るので、微調整を行ってモーションを完成させて下さい。

 

TIPS
また、二足歩行ロボットの場合は、ちょっとでもバランスを崩すと転倒してしまうので、特に腰は一気に動かさないで、ポジションを数回に分けて目的の位置に止めるようにして下さい。

 

つづく

 

購入品情報
ArduinoNano 純正品です。少し高いです。

Arduino Nano

Arduino Nano

  • メディア:
 

 ピンヘッダを自分で半田付けする必要があります。 

ピンヘッダ装着済みで国内発生ならここが良いと思います。