以前、爬虫類・哺乳類など歩容を調べ、ロボットの歩き方を紹介しました。前回は、簡単な方法で歩かせてみましたが、今回は、少し進化させたものをやってみました。脚に肘・膝に当たる部分を追加(一軸追加)してみました。
めちゃくちゃ難しかったというか、時間掛かってしまいました。でも、なんとか出来たので、紹介します。
1.脚の動作
ひとつの脚にモーターを2個使い、ひざ下の動作はワイヤーで繋いで動作させます。
ひとつは、太ももの動作、もう一つは、膝から下の可動部になります。


あとの動画と細かいところは違いますが、構造としては同じです。 これでは、強度が無かったので動画のように改良しました。
2.動作
では、動作させてみます。
まずは、膝の運動から。いち・に・・桂、さん・し~ ・・・♪Boyo-n
蹴り出しの動作です。
3. Arduinoのスケッチ (プログラム)
曲げ伸ばし、のArduinoのスケッチ(プログラム)ですが、こんな感じです。
//曲げ伸ばし
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define SERVOMIN 102 // this is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX 492 // this is the 'maximum' pulse length count (out of 4096)
void setup(){
pwm.begin();
pwm.setPWMFreq(50); // Analog servos run at ~50 Hz updates
servo_write(0,90);
}
void servo_write(int n, int ang){ // 動かすサーボと角度を引数に持つ
ang = map(ang, 0, 180, SERVOMIN, SERVOMAX); // 角度(0~180)をPWMのパルス幅(102~492)へ変換
pwm.setPWM(n, 0, ang);
}
void loop(){
//基準位置
servo_write(0,70);
servo_write(4,70);
servo_write(2,20);
servo_write(6,20);
servo_write(1,20);
servo_write(5,20);
servo_write(3,70);
servo_write(7,70);
delay(1000);
//伸ばす
servo_write(0,60);
servo_write(4,90);
servo_write(2,40);
servo_write(6,5);
servo_write(1,40);
servo_write(5,5);
servo_write(3,60);
servo_write(7,90);
delay(1000);
}
4.よちよち動画
歩いているところの動画です。お楽しみください。
実は歩く動作の中で、2つの課題がありました。
①1脚ずつでは前に進まない。
②蹴り出した脚を戻す時に引きずってしまい、抵抗になる。さらに、後ろに戻してしまうときもある。
そこで対策です。
①、②の原因と対策はそれぞれ、
①推進力が足りない。 → 蹴り出しは、2脚使って行う。
②送り出す脚に体重が載っている。 → 脚を前に送り出す時に、送り出す脚を浮かし気味にする必要がある。
特に、②の対策は四足歩行のYouTubeを見ると、脚の付け根や肩のあたる関節部分にもう一軸追加して体を捻られる構造になっています。
今回は、もう少し簡単にしたいと思ったので、送り出したい脚の前後反対の脚を伸ばして、重心を少しだけ左右にずらしました。(例えば、右の前脚を前に出したいときは、右の後ろ脚を伸ばして少し重心を左側へ傾けて右の前脚に掛かる荷重を軽くします)
と、書きつつも、後ろ脚に関しては、前後ではなく左右で行ったので、ぎこちない歩き方になり、それが、カワイイ歩き方になったようです。(カワイイ歩き方と思うのは私だけ?)
5.まとめ
今回は、
①1脚ずつでは前に進まない。
②蹴り出した脚を戻す時に引きずってしまい、抵抗になる。さらに、後ろに戻してしまうときもある。
ので、
①蹴り出しは、2脚同時に行う。
②脚を前に送り出す時に、送り出す脚の前後逆の脚を伸ばして、送り出す脚を浮かし気味にする。
としました。
次回は、もう少し細かいところを説明します。
参考に、今回使った、電子機器部品を紹介しておきます。チェックしてみて下さい。
品名 | 型名(製造元) | 個数 | |
1 | マイコン基板 | Arduino Uno Rev3 ATmega328 マイ コンボード A000066 | 1 |
2 | モータードライバー | PCA9685搭載16チャネル PW M/サーボ ドライバー | 1 |
3 | サーボモーター | デジタル・マイクロサーボ SG90 | 8 |
4 | 接続電線他 | 接続電線、USBケーブル、バルサ材、針金など | 1式 |
6.最後に
今回は、強度が必要な工作物だったので、なかなか簡易的に検証することができず、構造物をしっかり作る必要があったり、今度、しっかり作ると重すぎて動かず、軽量化の方法を検討する必要があったりと、ホントに進まないことが多かったです。しかしなから、なんとか動いた時、特に、可愛く撮影出来た時は、感動でした。(私には、トイプードルに見えた)モーエエカ。これからも、ボチボチやっていきます。
禅語に 「円相」 という言葉があります。
切れることない縁は、始まりも終わりもない。同じところをグルグル回っているようで、少しずつ成長していく。新しい発見がある。金メダルは無理やけど、この小さな積み重ねに、自分にとっての幸せを感じます。なーんてな♪