ヘルニアクソ野郎エンジニアblog

~ヘルニアでHell near~

Raspberry piで2足歩行ロボットの作成⑦【完成改】「モーション修正、サーボモーターの速度制御」

calendar

以前にRaspberry piで2足歩行ロボットを作成しました。↓

 

上記の過去記事ではとりあえず完成を目指していたので、まともなモーションやサーボモーターの速度制御は行っていませんでした。

今回はその辺を修正する時間が出来たので、ここでまとめておこうかと思います。

 

 

スポンサーリンク

足周りの修正

過去記事ではとりあえず足の部分も段ボールで組み立てていたのですが、やはり本体を支える力に乏しく、また耐久性も弱かったので、まともなモーションで動作させる事が困難でした。

そこで、サムネイルにある通り、M5stackを使った2足歩行ロボ作成時に採用した「適当な金属」で足回りを組むことにしました。↓

 

見栄えは決して良いとは言えませんが、とりあえず良しとします。

 

 

モーションの修正

足回りが頑丈になったので、よくあるオーソドックスなモーション?が可能になりました。

①片足上げる⇒②腰を回転⇒③足をおろす

の繰り返しのやつです。

プログラムは後述します。

しかし、これだけではサーボ―モータの速度制御を行っていない為、荒々しいモーションになってしまいます。

それはそれで躍動感があってよかったのですが、一応サーボモーターの速度制御を追加する事にしました。

 

 

サーボモーターの速度制御

恐らく、大抵の場合は速度制御のライブラリを使って簡単に制御できるのだと思いますが、今回の仕様上「webiopi」を使用していて、速度制御のライブラリが存在しません。

従って、サーボモーターの速度を制御するプログラムを自力で作成するしかありませんでした。

サーボモーターはPWMで角度を決めているので、速度の制御はどうやるんだろう?と素朴な疑問がありましたが、どうやらループ処理で少しずつ角度を変えていき、そこに待機時間を含ませることで比較的滑らかな動作が再現できるようです。(違ったらスイマセン)

ライブラリがあればもっとスマートなんでしょうけども、一応ループ処理で速度制御が出来たので、以下にモーションを含めたPython scriptプログラムを記載しておきます。

 

 

python

グローバル変数を関数内で使用する為、各関数内でグローバル変数を宣言しています。

この変数を利用して、ループ処理で角度を1ずつ変化させ、その都度time sleepをかませています。

正直いってこの方法が合っているのかはわかりませんが、一応速度制御は出来ています。

ファイル名はmacro-pwm.pyとし、ラズパイのwebiopi/test/配下に上書きすればOKです。

 

 

完成

webiopiを起動させて、ブラウザからアクセスすれば下のような感じで操作できます。