【レゴ】 マインドストーム Python編

Robot Inventor Python編
  Pythonで下記の命令が実行できるスケッチを作成します。

         ① ボールを感知して停車
         ② ボールを上にあげる
         ③ 180度回転
         ④ ボールを下す 

 

スケッチをする準備
Ⅰ)   python を選択し、Createを押す。

Ⅱ) プログラマ作成画面が現れます。

1~4行目までは、Robot InventorをPythonのプログラムで動かすための設定が書かれています。


Ⅲ) リファレンスマニュアルは右真ん中の本のアイコンをすると現れます。

 

オブジェクトとは
オブジェクトとは、物や物体、目標物をいいます。

どのように扱うかというと

○ Motor(“F”) でもモータは動きますが、もしもモータのポートを変更した場合は、Motor(“F”)のFの部分を全て新しいポートに書き換えなければなりません。そこで、オブジェクトを用いることでこれに対応することが出来ます。

Motor(“F”) を arm とおく

 arm = Motor(“F”)  ・・・・ 式(1)

 Fポート に接続されたシングルモータ を オブジェクト名 armとしました。これで 違うポートに換えても、式(1)のMotor(“F”)の()内を変更することで、変更したポートに換えれることで対応できます。

Motor(“F”)と オブジェクト名 arm の差し替えると

次のようになります

または、
 

ボールを移動するスケッチ
〇 オブジェクトを設定する 

ここで使うモータやセンサのオブジェクトを設定する
  ・コントローラ   モーションセンサ オブジェクト名  hub
  ・走行用      モータ 2個    オブジェクト名  run
  ・超音波センサ            オブジェクト名  sensor
  ・アームで使用する モータ 1個    オブジェクト名  arm

① 車を前方に移動しボールを感知して停車

・車体にぶつからない位置で停車するために モータの出力を調整する。超音波センサがボールの距離を測定し、条件が一致したら停車する。

○ 解説

run.set_default_speed(20)

移動のスピードを選択  設定 20% 出力

arm.set_default_speed(10)

モータのスピードを選択 設定 10% 出力

run.start()

走行開始

sensor.wait_for_distance_closer_than(5,”cm”)

超音波センサが5cm以下になるまで現状維持

run.stop()

走行停止

 
② ボールを上にあげる

○ 解説

arm=Motor(“F”)
 
arm.set_default_speed(10)  ・・・ (A)
モータ出力10%にする。
 
arm.run_to_position(90)
(度、回転方向、モータ出力)の回転方向、モータ出力は省略出来ます。この場合、回転方向は最短経路、モータ出力は100%になります。しかし、上記でモータ出力10%に設定しているため、モータ出力は10%になります。
 
〇 モータ制御

○ 解説

Motor(“F”).run_to_position(90,’shortest path’, 10)
Fポートのモータを90度の位置に最短経路で出力10%の力で動きなさい

wait_for_seconds(2)
2秒待つ

Motor(“F”).run_to_position(186,’shortest path’, 10)
Fポートのモータを186度の位置に最短経路で出力10%の力で動きなさい

○ 対象モータ.run_to_position(度、回転方向、モータ出力)
モーターを指定した角度に移動する。
・回転方向
指定された角度に移動する時、

最短経路 “shortest path”
時計回り “clockwise”
反時計回り  “counterclockwise”

A点からB点に移動する際、180度以下側が最短経路になります。よってここでは時計回り側がなります。
また、最短経路がdefaultになります。

 
③ 180度回転

○ 解説

hub.motion_sensor.reset_yaw_angle()

6軸ジャイロスコープ の yaw を リセット

while hub.motion_sensor.get_yaw_angle()<179:
run.start(100)

179度になるまで小回りで回転する。

run.stop()

④ ボールを下す

まとめ
オブジェクトを用いる事でオブジェクトに属性を持たせる事が出来ます。

全てを表示します。

目次