3Dプリンタで作る吉野式二足歩行ロボット「ArduiroidOne」の作り方を公開しています。ArduinoNanoV3を使う場合の記事です。今回は調整方法を記述します。
4 コマンドについて
ArduinoIDEのシリアルモニタからコマンド入力し送信を押して、PCからの指令をArduiroidOneに伝えます。コマンドは以下の通りです。なおコマンド文字は大文字でも小文字でも構いませんが、全角文字は使えません。
Sコマンド :サーボ番号と角度を指定して動かします。
S,サーボ番号,角度 の順で指定します。左足のすねのサーボモータを90度に設定するには
S,0,90
と入力します。角度は0~180の数値で指定しますが、サーボモータがどこかに当たってロックしない角度を入力して下さい。
Aコマンド:8個のサーボモータの角度を一度に指定して動かします。
A,角度0,角度1,角度2,角度3,角度4,角度5,角度6,角度7 の順に設定します。
すべてを基本の位置(ArduiroidOneが直立した位置)にするには、
A,90,90,90,90,90,90,90,90
と入力します。
まずは、SコマンドとPコマンドを使用してArduiroidOneの各サーボモータが動くか確認して下さい。
Pコマンド:予め定義された位置に8個のサーボモータを動かします。
Pコマンドは、基本の位置(ArduiroidOneが直立した位置)からの差分の角度で指定します。ロボットから見て、前に動かす場合をプラス、後ろに動かす場合がマイナスです。また腰と頭は、右に回す場合ががプラスで、左に回す場合がマイナスです。
Pコマンドは32個の配列として用意してあり、初期状態のスケッチでは全て0が書き込まれていますが、自分で定義して行きます。ただ 配列の最初は基本姿勢なので全てゼロのままにしておいて下さい。
基本姿勢を呼び出すには、
P,0
と入力します。
数値にしていできるのは、0~31までで、数値にマイナスをつけると、左右が反転した位置にサーボモータを動かします。
P-1
注意事項
・一度に動かせるサーボモータは4個までです。
・一度に動かせる角度は60度以内として下さい。それ以上の場合は二回に分けて下さい。
数値コマンド:0~9の指定されたユーザ定義のモーションを再生します。初期状態はP0を呼び出す様にしているので、自分で作成したポジションを組み合わせてモーションを作って見て下さい。
TIPS
予めテキストエディタにコマンドを書いておき、カットアンドペーストで貼り付けて動作を確認し、確認し終わったものからポジションに登録して行くようにしています。
5.調整
機械的調整:機械的なずれを調整する
最初の状態では基本姿勢が上手く取れていないかもしれません。まずは P0コマンドを入力して、各サーボモータを90度に設定して下さい。ここで大きくずれている場合は、一度サーボホーンを外して、できるだけ近くなるように機械的に調整します。
機械的調整後の脚部の状態です。だいたい左右のずれが10度以内になったら、ソフトウェアで校正します。
ソフトウェア調整:サーボモータの初期位置を設定する
サーボモータを全て0に設定してゼロの位置を調整します。機械的な調整だけでは、まだ左右でずれているはずです。SコマンドかAコマンドを使用してArduiroidOneの左右が均等になるような角度を探して行きます。
各サーボモータの丁度良い角度が探せたら、スケッチの servoCenter 配列の数値を修正してArduiroidOneに書き込みます。
以下は調整例です。
初期状態
const int8_t servoCenter[MAX_SERVO_NUM] = {90,90,90,90,90,90,90,90};
修正後
const int8_t servoCenter[MAX_SERVO_NUM] = {100,96,90,90,96,90,95,84};
ソフトウェア調整後の脚部のずれです。最初は部品同士のすり合わせが硬かったり、まだバリが残っていたり、電池の電圧によって1~2度はずれてしまうので、この程度合っていればOKです。
調整範囲が90°±10°を超えている場合は、再度機械的調整を行って下さい。また、毎回数値が変わる場合は、電池が消耗しているか特性の良くないサーボモータを交換してみて下さい。
つづく
次回はいよいよモーションを作成します。
購入品情報
中野島ロボットでは電池はeneloopか、Amaloopを使用しています。
こちらは大容量モデル。
【Amazon.co.jp限定】パナソニック エネループ 単4形充電池 4本パック 大容量モデル eneloop pro BK-4HCD/4SA
- 発売日: 2018/09/21
- メディア: エレクトロニクス
充電器セットはこれを使用しています。