The Fool In The Valleyの雑記帳

-- 好奇心いっぱいのおじいちゃんが綴るよしなし事 --

EV3でハノイの塔を その6

THS1の機構ができ、解法のアルゴリズムが確認できたので、いよいよ実際のパズルを解くためのプログラムの作成です。 パズルを解く処理を、
  1)グリッパーとパズルをある範囲内にセットする
  2)原点を自動的に設定する
  3)グリッパーで円盤を動かしパズルを解く
のステップで考えることにして、今回から3回に分けて説明します。
まず1)ですが、これを実行するためにはグリッパーとパズルの位置関係をラフにマニュアルで調整できると好都合です。その調整はモータ軸を手で回しても可能でしょうが、すこしスマートにやりたいところです。「EV3でハノイの塔を その1~その3」で3軸方向に動かす機構を作った際に、IRリモコンとレシーバを使ってモーターを動かしましたが、その機能を使うと非接触で調整できて楽です。そこで、THS1にもそれを組み込むことにしました。
以下にその概要を記します。


x軸用モーターをMotorPortA、y軸用モーターをMotorPortB、z軸用モーターをMotorPortCに接続する。
IRレシーバーをSensorPort2に接続する。
IRリモコンの1ch左にy軸用モーター、1ch右にz軸用モーター、2ch右にx軸用モーターのコントロールアサインする。
IRリモコンで3軸のモーターを制御し、位置決めが完了したらブリックのボタンをどれかを押して終了する。
Pythonのプログラムは以下の通り。

#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import Motor
from pybricks.iodevices import I2CDevice
from pybricks.parameters import Port, Stop

ev3 = EV3Brick()
motor_x = Motor(Port.A)
motor_y = Motor(Port.B)
motor_z = Motor(Port.C)
IRR = I2CDevice(Port.S2, 0x01)

while True:
    buff = IRR.read(0x42, 4)  #42から4byte読み込みbuff[4]に入れる
    if buff[0] == 100:        #1ch左が前 
        motor_y.run(300)      # medium motorを300deg/sで正回転
    if buff[0] == 156:        #1ch左が後
        motor_y.run(-300)     # medium motorを300deg/sで逆回転
    if buff[0] == 0:          #1ch左が中立
        motor_y.hold( )      # medium motorを停止させ固定
        
    if buff[1] == 100:        #1ch右が前 
        motor_z.run(300)      # medium motorを300deg/sで正回転    
    if buff[1] == 156:        #1ch右が後
        motor_z.run(-300)     # medium motorを300deg/sで逆回転 
    if buff[1] == 0:          #1ch右が中立
        motor_z.hold( )      # medium motorを停止させ固定

    if buff[3] == 100:        #2ch右が前  
        motor_x.run(150)      # medium motorを150deg/sで正回転   
    if buff[3] == 156:        #2ch右が後 
        motor_x.run(-150)     # medium motorを150deg/sで逆回転
    if buff[3] == 0:          #2ch右が中立
        motor_x.hold( )      # medium motorを停止させ固定
       
    if any(ev3.buttons.pressed()): # ボタンのどれかが押されたらwhileループをでる
        break

ビデオは、このプログラムを使ってラフな位置決めをする様子である。 youtu.be

EV3でハノイの塔を その5 ⇔ EV3でハノイの塔を その7