M5stackで2足歩行ロボットの作成④「micropythonでPCA9685を制御してロボットのモーションを作成」
M5Stack
2021-07-23
2021-07-23
今回は以前に作成したmicropythonでのPCA9685制御プログラムで2足歩行ロボットのモーションを作成したいと思います。
それでは初めに、ロボット(サーボモーター)、pca9685,M5stack,pcを繋いで、モーションの確認が出来るようにしておきます。
モーションテスト環境構築
テンプレのように準備ができれば、第2回で作成した「mtest.py」のプログラムにモーションのプログラムを追加していきます。
mtest.py
from machine import Pin,I2C import time import servo import pca9685 i2c = I2C(0, scl=Pin(22), sda=Pin(21)) s = servo.Servos(i2c) def set(): s.position(0, 97) time.sleep_ms(1000) print('a') s.position(1, 90) time.sleep_ms(1000) print('b') s.position(2, 100) time.sleep_ms(1000) print('c') s.position(3, 90) time.sleep_ms(1000) print('c') def fw(): s.position(3, 70) s.position(1, 70) time.sleep_ms(500) s.position(0, 77) s.position(2, 80) time.sleep_ms(500) s.position(3, 90) s.position(1, 90) time.sleep_ms(500) s.position(3, 110) s.position(1, 110) time.sleep_ms(500) s.position(0,117) s.position(2, 120) time.sleep_ms(500) s.position(3, 90) s.position(1, 90) time.sleep_ms(500) def bk(): s.position(3, 110) s.position(1, 110) time.sleep_ms(500) s.position(0, 77) s.position(2, 80) time.sleep_ms(500) s.position(3, 90) s.position(1, 90) time.sleep_ms(500) s.position(3, 70) s.position(1, 70) time.sleep_ms(500) s.position(0,117) s.position(2, 120) time.sleep_ms(500) s.position(3, 90) s.position(1, 90) time.sleep_ms(500) def lt(): s.position(3, 40) s.position(1, 60) time.sleep_ms(500) s.position(0, 117) time.sleep_ms(500) s.position(3, 90) time.sleep_ms(500) s.position(1, 90) time.sleep_ms(500) s.position(0, 97) time.sleep_ms(500) def rt(): s.position(3, 120) s.position(1, 140) time.sleep_ms(500) s.position(2, 80) time.sleep_ms(500) s.position(1, 90) time.sleep_ms(500) s.position(3, 90) time.sleep_ms(500) s.position(2, 100) time.sleep_ms(500) while(True): print('0/set 1/fw 2/lt 3/rt 4/bk') move = int(input('set No please:')) if move == 0: set() elif move == 1: fw() elif move == 2: lt() elif move == 3: rt() elif move == 4: bk() else: exit
関数にそれぞれ前進、後退、左旋回、右旋回、セットポジション、のモーションを作成しました。
第二引数の角度については、使用するサーボモーターで誤差が生じるため、微調整を繰り返しながらいい感じの数値に修正していきます。
このプログラムを実行すると、set No please: の表示の後でシェルに番号を入力出来るので、動作させたい箇所の関数の番号を入力すればそれぞれのモーションの確認が可能になっています。
実行すると、下のような感じになります。↓
次回はこのプログラムを、前回作成したWEBサーバーのプログラムに埋め込みたいと思います。
コメントを残す
コメント一覧
コメントはまだありません⇧