ブログトップ

電子工作やってみたよ

カテゴリ:レゴ マインドストーム( 17 )

マインドストームのバラ部品を小学一年生の孫に預けておいたら、遊びながら2時間ほどで組み立ててしまいました。(くわがたリモコンロボ) もう びっくりですね。 
私が小学一年生のころは、おもちゃと言えばまだブリキのものや木製のものしか無い時代でした。
今の子は小さいときからガンダム(これも古いのかな)などのプラモデルを作っているので、このようなものに抵抗なく入れるのでしょうね。
プログラムはこれから教えるつもりですが、この調子だとすぐ追い越されてしまいそう。 小学生低学年では無理などと思っていたのは間違いかもね。


c0335218_19272981.jpg


c0335218_19265632.jpg


この花 アルストロメリア 未だ咲いています。 長いですね。 最初にブログに載せたのは6月12日ですので、もうまる2か月咲いていることになりますね。
他の花はもう終わってしまったのに、これだけはずーっと咲いています。



c0335218_14035237.jpg











by telmic-gunma | 2017-08-18 20:46 | レゴ マインドストーム | Trackback | Comments(4)

ジャイロボーイのプログラムいじり出してから もう 3か月も経ちました。
時間の過ぎるのは、早いですね。
この夏休みに孫が遊びにくるということなので、マインドストームを渡すことが出来るように何とかジャイロボーイソフトを終わりにしたいのですが、なかなか納得いくまでの理解が出来ません。
あの天才と言われた将棋の加藤九段も77歳でC級2組から落ちて現役を辞めるとニュースになっていましたが、天才でも若い時のままというわけにはいかないのですね。
ましてや、ただの凡人が歳を取ったらどうしたらいいのでしょうか。
まあ 無理せずに最善を尽くしてみます。

c0335218_20413527.jpg
ネットで「倒立振子」を検索したら「半日で作る倒立振子」というのが出てきました。
この人のブログ 素晴らしいですね。 丁寧に解りやすく書かれており、プログラムなども全部発表されて細かく説明されています。
その中で、倒立振子の制御動作を一言で分かりやすく説明している式がありました。

転載始め***************************************************

モータの回転力= k1 × 躯体の傾き(角度)
          +k2 × 躯体の傾きの変化率(角速度)
          +k3 × 車輪軸の移動速度
          +k4 × 車輪軸の移動距離

転載終了***************************************************

これ ジャイロスコープ EV3ソフト と全く同じですね。
実際にはこの式に積分要素などが入ってきますが基本的には全く同じ。
アメリカで考えられたものも、遠く離れた日本で考えられたものも目的が同じならば同じ形になるのはすごいですね。
特に3行目と4行目の項 k3 × 車輪軸の移動速度 と k4 × 車輪軸の移動距離
よく思いつくものですね。 これは倒立振子の制御では常識なのでしょうか。
私は、これ無くても制御できるのではないかな、と思い3行目と4行目の項 外してやってみました。
K1,K2にあたる係数をいろいろ変えてやって見たのですが足の動きがオーバーシュートしてしまい制御できませんでした。
この3行目と4行目の項が理解できれば、今回の勉強はおしまいということにしたいのですけれど。
この方は エクセルを使って倒立振子のシュミレーションも発表されています。
わたしは 回路シュミレーターのサーキットビュアーにのせてみたいですね。


わが家のアジサイです。 周りの家には真っ白なのが多いですが我が家にはありません。
分けてもらっておこうかな。

c0335218_22344960.jpg
作っていたトウモロコシ ついに食べられてしまいました。
まだひとつだけですが、器用に皮をむいてありました。
四つ足動物に皮むけるのでしょうか。 サルが出たのでしょうか。
やるやると言ってながらまだ「網」つけてなかったですからね。
やはり 言葉より行動ですね。







by telmic-gunma | 2017-07-30 23:29 | レゴ マインドストーム | Trackback | Comments(0)

ジャイロボーイをいじっていて、いままでに解ったこといくつか書いて見ます。
アフレルに聞いたことや、私がいじってみて類推したことです。
正解である保証はありません。

デバッグでの問題点
1.ジャイロボーイのEV3ソフトには、ブレークポイントがありません。
2.変数の内容(数値)をパソコンで見ることが出来ません。
3.変数の内容を見るのはEV3の顔に表示して確認します。これはリアルタイムで変化が見えるのでいいですね。
  テキストのグリッドモードで10行表示できます。変数10個表示できるわけですね。
4.センサーの内容(数値)はデーターロギングのオシロスコープモードで見える。
  これは値の変化がチャートに残るので動きがわかります。

ジャイロボーイのEV3ソフトで解ったこと
1.自立制御のループは1回転10mSec位の時間で回っている。
  動作処理時間は8.5mSecで1.5mSecの無駄時間が加算されているようです。
  タイマー割り込みは使用せずに時間処理しているようです。
2. ジャイロセンサーを角度モードで使用するとゼロ点のドリフトが大きい、20度くらいずれる。
  このため角速度モードで使用しているのかな。
3.変数 gAng  角度データ(ジャイロセンサーの角速度を積分して作っている)
4.変数 gSpd  角速度データ(ジャイロセンサーの角速度をちょっと加工して使用)
5.変数 mSum モーターの回転角度を読み取り積分してスタート地点からの移動距離
6.変数 mSpd  モーターの回転角度から計算した移動速度。



c0335218_20420525.jpg







by telmic-gunma | 2017-07-01 20:56 | レゴ マインドストーム | Trackback | Comments(2)

マインドストームのジャイロボーイのプログラム EV3ソフトからC言語(もどき)に書き換えが済んで、おぼろげながら少し分かってきました。
変数の内容については、アフレルで教えてもらった方法でひとつづつ変数の値をジャイロボーイの顔に表示して調べ始めたところです。
変数を一つ表示すると前に表示していた変数が消されてしまうので効率わるいです。 何か考えないと。

画面を見やすくするためにジャイロボーイの形をかえました。 重心が高くなりモーメントが変わったためでしょうか、少し不安定になりました。
ソフトの定数はもとのままです。

c0335218_18161801.jpg

以下が、2輪自立動作をする部分のフィードバックプログラムのところです。
最初の方は、イニシャライズの部分ですので、実際の自立動作をするところは意外とコンパクトという感じをもちました。
8個あるマイブロックはみな一回しか使われずかつネスティングは1段なので メイン1本の形にして見やすくしました。

変数の内容が解ってきたら、細かなコメントをこれに書き込みますね。

「引用元)EV3 model program descriptionsGyroBoy Program Descriptions」

→リンク先
https://le-www-live-s.legocdn.com/sc/media/files/ev3-program-descriptions/ev3-program-description-gyroboy-8f351eb6ca8c99121f27be9cb2b12ad6.pdf

ジャイロボーイの全プログラムリスト

[M] ループヘッド

(RTS) マイブロックの先頭
Lモーター(右足)PortA イニシャライズ
Lモーター(左足)PortD イニシャライズ
ジャイロセンサー Port1 リセット
タイマー2リセット

mSum = mPos = mD = mDP1 = mDP2 = mDP3 = cDrv = 0;
cLo = gAng = pwr = st = Cstr = Cdrv = 0;
ok = X

Sleeping


( gOS )
Do
gMn = 1000;
gMx = -100;
gSum = 0;

For ( i = 0; i<200; i++ )
{
gyro = [ ジャイロセンサーの角速度値];
gSum = gSum + gyro;
if ( gyro > gMx ) gMx = gyro;
if ( gyro < gMn ) gMn = gyro;
wait(0.004) // 4mSec wait
}
while(( gMx - gMn ) >= 2 )
gOS = gSum / 200;

gAng = -0.25;
speed_up( );
Awake( );
st = 1;

// ここ迄が自立動作初期化ルーチン
// **********************************************
// ここ以後が二本足自立動作を行うところ。

[BAL] // 二本足自立のバランス処理ループヘッド

if ( cLo == 0 ) // ( GT head )
{
tInt = 0.014;
Timer1 = 0; // タイマー1をリセット
}
else
{
tInt = Timer1の経過時間 / cLo;
}
cLo = cLo + 1; // ( GT end )

タイマー1の経過時間測定;

a = 0.005; // ( GG head )
gOS = (ジャイロ角速度 × a ) + ( 1 - a ) × gOS;
gSpd = ジャイロ角速度 - gOS;
gAng = gAng + ( gSpd × tInt ); // ( GG end )


buff = mSum // ( GM head )
mSum = ( モーターAの回転角度測定値) + ( モーターDの回転角度測定値)
Diff = ( モーターAの回転角度測定値) - ( モーターDの回転角度測定値)
mD = mSum - buff;
mPos = mPos - mD;
mSpd = (( mD + mDP1 + mDP2 + mDP3 ) / 4 ) / tInt; //( GM end )
mDP3 = mDP2;
mDP2 = mDP1;
mDP1 = mD;

mPos = mPos - ( tInt × Cdrv ); // ( EQ head )
buff2 = ( 0.8 * gSpd ) + ( 15 * gAng );
pwr = ( -0.02 * Cdrv ) + buff3 - buff2;
if ( pwr > 100 ) pwr = 100;
if ( pwr < -100 ) pwr = -100; // ( EQ end )

mPos = mPos - ( Cdrv * tInt ); //(cntrl head)
右駆動 = pwr + ( Cstr * 0.1 );
左駆動 = pwr - ( Cstr * 0.1 ); //( cntrl end )


if ( | pwr | ) < 100 ) Timer2をリセット // ( CHK head )
if ( Timer2 > 1 ) ok = 真; // ( CHK end )

b = GGの直前の時刻; Timer1使用
a = 現在の時刻; Timer1使用
待機時間の値 = 0.005 - ( a - b );
wait( 待機時間 );

while( ok <> 真 )
{ ; );

GOTO BAL




この前 教えていただいた アルストロメリアの花です。
だいぶ数が増えたのでまたのせます。

c0335218_18181931.jpg
この調子でいくと、ブログごとに新しい花を乗せられるかも。









by telmic-gunma | 2017-06-18 19:48 | レゴ マインドストーム | Trackback | Comments(4)

ジャイロボーイのマイブロック GM, EQ, cntrl について調べてみました。


c0335218_20413527.jpg


***************************************************************************
Label GM

buff = mSum

mSum = ( モーターAの回転角度 測定値 )+( モーターDの回転角度 測定値 )

mDiff = ( モーターAの回転角度 測定値 )ー( モーターDの回転角度 測定値 )

mD = mSum - buff

mPos = mPos - mD

mSpd =(( mD + mDP1 + mDP2 + mDP3 ) / 4 ) / tInt

rtn

***************************************************************************
Label EQ

mPos = mPos - tInt * Cdrv

buff2 = ( 0.8 * gSpd ) + ( 15 * gAng )

buff3 = ( 0.08 * mSpd ) + ( 0.12 * mPos )

pwr = -0.02 * Cdrv + buff3 - buff2

IF pwr > 100 THEN pwr = 100

IF pwr < -100 THEN pwr = -100

rtn


***************************************************************************
Label cntrl

mPos = mPos - ( Cdrv * tInt )

右駆動 = pwr + ( Cstr * 0.1 )

左駆動 = pwr - ( Cstr * 0.1 )

rtn

***************************************************************************


数学の拡張命令における掛け算や足し算などの優先順位は以下の通り通常の数学と同等でした。

2 + 3 * 4 => 2+ ( 3 * 4 ) 答えは 14です。


a * b + ( 1 - a ) * c => ( a * b ) + ( ( 1 - a ) * c )





いま 庭に咲いている花です。  名前は不明です。

c0335218_20123857.jpg




by telmic-gunma | 2017-06-12 08:33 | レゴ マインドストーム | Trackback | Comments(2)

ジャイロボーイ マイブロック GG 調べました
機械的にBASIC言語もどきには、すぐできたのですが、ではここで何をしているのと、言葉で説明するところまで理解できていません。
また 使われている変数の意味、内容も分かりません。
まずは、全体をこんな感じで流してみて、それから相関関係など調べながら理解を進めるということでしょうか。
こつこつ行くしかないでしょうね。


c0335218_20413527.jpg

位置的に対応するところの下にBASIC言語もどきで書いてみます。
昔の象形文字を翻訳しているようなものですか。
ロゼッタストーンでしたか、歴史で習いましたね。

「引用元)EV3 model program descriptionsGyroBoy Program Descriptions」

→リンク先
https://le-www-live-s.legocdn.com/sc/media/files/ev3-program-descriptions/ev3-program-description-gyroboy-8f351eb6ca8c99121f27be9cb2b12ad6.pdf

c0335218_20111562.jpg
こちらは まとめて書いてます。
まだ 変数や個別の動作など分かりません。
理解できたら書き直します。



c0335218_20112738.jpg



今日も採れたイチゴです。 孫に食べさせてあげたいけど、宅急便では送れないよね。

c0335218_20120671.jpg





by telmic-gunma | 2017-06-03 20:42 | レゴ マインドストーム | Trackback | Comments(0)


ジャイロボーイのソフト 初期設定のマイブロック gOS(サブルーチン)
私なりに理解できたので下に記載します。
全体から見ればごく一部ですけれど、まとまってから発表しようとするといつになるか分らないので出来たところから発表します。

まずは、言葉だけで表現していきます。 つぎにBASIC言語もどきで書いてます

gOS は自立するためのフィードバック制御がかかる前の処理です。
ジャイロセンサーの値が0.8Secの間(4mSecごとに200回データをとる)、連続して2より小さい値になるとここを抜け出します。 
すなわち ジャイロボーイをスタンドに座らせて0.8秒間ふらつかずに安定したら次の自立動作に進むということですね。

数値の単位は、たぶんですがジャイロボーイを90度前に倒すとジャイロセンサーの出力が90の数値になるので数値の1が角度の1度とおもわれます。 ちなみに後ろに倒すとー90となります。

オリジナルのソフト見やすくするため3つに分けて拡大してあります。
つながる部分は、解りやすくするため重複しています。

「引用元)EV3 model program descriptionsGyroBoy Program Descriptions」

→リンク先
https://le-www-live-s.legocdn.com/sc/media/files/ev3-program-descriptions/ev3-program-description-gyroboy-8f351eb6ca8c99121f27be9cb2b12ad6.pdf

c0335218_13241778.jpg

c0335218_13242567.jpg


c0335218_13243275.jpg

上記のオリジナルソフトをBASIC風に書いてみました。
このまま動くものではありません。
流れや考え方が解りやすくならないかなと思い書きました。
もし おかしいな と思われるところがありましたら、コメントで教えてください。
c0335218_16183118.jpg

私のように マインドストームの適正年齢を遥かに超えた人間にとっては動作の流れを見るのは、このほうが考えやすい気がします。

ただ どっちのソフトがいいの なんて言ってはいけないのでしょうね。
各々気に入った方を使えばいいのですから。
やはり 子供に初めていじらせるには、マインドストームの方がゲーム感覚でいじれるから良いのでしょうね。

このソフト 初めてみた時は、皆目解からなかったのですが、あちこちの方向から何日かかけてアタックしていたら少しづつ霧が晴れるような感じで見えてきました。
マイブロックは全部で8個あるので、まずはこれらを一つづつ片づけてからですね。

忘れないで書いておきたい事なのでここに書いておきます。
メインのルーチンは大きく分けて2つあります。
(A)自立だけのコントロールをする部分と、(B)カラーセンサーなどで感じて何か動作をするルーチンです。
このうち B の部分を抹消してブログラムを書き込み動作させても自立動作は正常でした。
今後はこの状態でテスト、解析するつもりです。





これ 庭に満開で咲いている「なでしこ」です。(たぶん)
ネットでみたら形は似ているけれど違う種類が100個くらいあるのにびっくりです。
c0335218_17041722.jpg


by telmic-gunma | 2017-06-01 17:19 | レゴ マインドストーム | Trackback | Comments(2)

ジャイロボーイの基本的な数値を計ってみました。

全重量(充電式バッテリー搭載して)   817g
身長(高さ 接地部からてっぺんまで)  235mm
幅(タイヤ接地部外側)         130mm
ジャイロセンサーの中心の高さ(接地部より)75mm
重心の高さ(接地部より)        125mm
車輪の直径                55mm


ジャイロセンサーのプログラム上の使われ方について

プログラム上の使用箇所  3か所
   マイブロック RST   リセット
   マイブロック gOS  測定ー角速度
   マイブロック GG   測定ー角速度

とりあえず 上記のものを調べました。 忘れないうちに書いておきます。

疑問点は、ジャイロセンサーで「角度」を測るのではなくて、「角速度」を計っていることですね。(角度の測定モードは付いているにもかかわらず。)
累積誤差が出ないのかしら。
前回のジャイロボーイの動画では誤差の累積は見受けられませんね。
まあ 1時間とか動作させていれば、そのうちやってみます。




c0335218_20413527.jpg

庭に咲いたはなです。  名前はちょっとわかりません。
c0335218_10011358.jpg


by telmic-gunma | 2017-05-31 10:11 | レゴ マインドストーム | Trackback | Comments(2)

マインドストームのジャイロボーイの動画を撮れたので載せます。
すごく安定しています。
これから いろいろ調査、勉強したいと思います。






c0335218_20413527.jpg


イチゴが色づいたのでたべました。
苗を植えて二年目、今回 初めて採れましたが、思いのほか大きかったです。
野イチゴみたいなのを考えていたのでスーパーで売っているのとそん色ない大きさには嬉しくなりました。
甘さは今一かな。 砂糖と牛乳で食べればいいかも。 ジャムもいいね。


c0335218_21065252.jpg


by telmic-gunma | 2017-05-30 07:16 | レゴ マインドストーム | Trackback | Comments(2)

ジャイロボーイのソフト どうなっているのか勉強を始めてみたのですが、思いのほか難しくてわからない。
そこで代理店のアフレルに「ジャイロボーイのソフトの説明書有りませんか」、と聞いてみたら英文のソフト説明を教えてくれました。
こう言っちゃあなんですが、英語はからっきしなので、もう無条件に翻訳ソフトを通過させてみました。
グーグルの「英文和訳」で検索して最初に出てきたグーグルのものを使って翻訳してみました。
日本語として少しおかしなところもあるけれど、 私よりは遥かに頭いいですね。
なにも 完璧である必要はなく たった一言でもヒントとなってスカッとわかることありますものね。


もし これを読んだ人で 「ここの意味こうじゃないの」というのがありましたら コメントで教えて下さい。

どこかで読んだのですが、この マインドストームの適正年齢は10歳から21歳と書いてありました。
私なんか この上限を3倍以上過ぎてしまっているのですよ。 どうしたらいいのでしょうか。


「引用元)EV3 model program descriptionsGyroBoy Program Descriptions」

リンク先
https://le-www-live-s.legocdn.com/sc/media/files/ev3-program-descriptions/ev3-program-description-gyroboy-8f351eb6ca8c99121f27be9cb2b12ad6.pdf

c0335218_18520597.jpg



ジャイロボーイ メインまとめ

**************************************************************************
ジャイロボーイ Overview

Gyroboy runs two parallel program string.
The first string, loop M, handles the data collection and balancing equations.
These are all tuned to the robot and should not be changed without advanced knowledge.
The second loop, BHV,handles the behavior of the robot.
It allows basic control and sensor feedback.
By changing the varables Cdrv and Cstr, you can make the robot do what you want


Gyroboyは2つの並列プログラム文字列を実行します。
最初の文字列、ループMは、データ収集とバランシング方程式を処理します。
これらはすべてロボットに調整されており、高度な知識がなければ変更しないでください。
2番目のループBHVは、ロボットの動作を処理します。
基本的な制御とセンサフィードバックが可能です。
変数CdrvとCstrを変更することで、ロボットはあなたが望むことをすることができます


**********************************************************************
ジャイロボーイ Overrview 1

Loop M begins with My Block RST, this will reset all motors and sensor.
My block gOS checks to see how still the robot is.
Once complete, the robot sets up its launch sequence.
On display graphics show an expression for the robot.


Loop MはMy Block RSTで始まり、すべてのモーターとセンサーをリセットします。
マイブロックgOSは、ロボットがまだどれくらいの状態であるかを確認します。
完了すると、ロボットは起動シーケンスを設定します。
ディスプレイグラフィックスでは、ロボットの式が表示されます。

**********************************************************************
ジャイロボーイ Overview2

Loop BAL takes all of the data from the Gyro Sensor and Motor sensores to process then to balance
Time is also used in the calculations
Timer1 is used to calculate the time it take to run the equation, and regulated,and requlates the time between getting the data and running the balancing equation.
The time needs to be regulate in order to have a more stable robot.
The Unregulated Motor Blocks for Motor A and D are used to make sure that only the balancing equation requlates the movement.
not any other internal calculations.
Myblock CHK is there to check if the robot has fallen and ends the loop with Variable ok ifit dose.
The My Blocks are show as they are to improve readability and possible customization.


ループBALは、ジャイロセンサーとモーターセンサーのすべてのデータを処理してバランスを取る
時間も計算に使用されます
Timer1は、方程式を実行するのにかかる時間を計算するために使用され、調整され、データを取得してバランシング方程式を実行するまでの時間を再計算します。
より安定したロボットを使用するためには、時間を調整する必要があります。
モーターAとDの調整されていないモーターブロックは、平衡式だけが動きを再現することを確認するために使用されます。
他の内部計算ではありません。
Myblock CHKは、ロボットが落ちたかどうかをチェックし、用量が変わったらループを終了します。
My Blocksは、読みやすさとカスタマイズ可能性を向上させるためのものです。

**********************************************************************
ジャイロボーイ Overview 3

Loop Mends by stopping the motors and behaviors
Achange in graphics,sound and brick light display
indicate the fallen status and is ready to reset.
the user to put the robot back on the stand,then by pressing the touch sensor the robot can start again


モーターとビヘイビアを停止してループを作成する
グラフィック、サウンド、ブリックライトディスプレイのAchange
落ちた状態を示し、リセットする準備ができています。
ユーザがロボットをスタンドに戻すようにしてから、タッチセンサを押すことによってロボットは再び始動することができる

**********************************************************************
ジャイロボーイ Overview 4

Loop BHV controls the behavior of the robot
State variable S is wired to A switch in Numeric Mode with 3 options.
If Variable S is 0, the Variables CDrv and Cstr are set to 0 and this is the idle state of the robot.
If S is 1.
the robot does a launch sequence.
Variable CDrv is set to 40 for 4 seconds.
then back to zero then Variable S is changed to 2 in order to begin the movement state


ループBHVはロボットの動作を制御します
状態変数Sは3つのオプションで数字モードのAスイッチに接続されています。
変数Sが0の場合、変数CDrvとCstrは0に設定され、これはロボットのアイドル状態です。
Sが1の場合
ロボットは起動シーケンスを実行します。
変数CDrvは4秒間40に設定されます。
次にゼロに戻り、変数Sが2に変更されて移動状態を開始する

**********************************************************************
ジャイロボーイ Overview 5

when Variable S is 2,
it is the main operating and interctive state of the robot.
The Color Sensor is checked and for each available color,
this is a different value for variables Cstr and Cdrv.
The next Switch in Ultrasonic Mode checks to see if an object is in front of the robot.
if there is,the robot stops and saves its last driving condition,
then prepares to tum away by moving slightly back, and waving its arms.
The robot than turns randomly left or right for a few seconds and goes back to its
previous driving state.


それはロボットの主な動作状態および活動状態である。
カラーセンサーがチェックされ、使用可能な色ごとに、
これは変数CstrとCdrvの値が異なります。
次の超音波モードのスイッチは、物体がロボットの前にあるかどうかをチェックする。
ロボットが停止していれば、その最後の運転状態を保存し、
やや後ろを動かして腕を振って脱走する準備をする。
ロボットは数秒間ランダムに左右に振り回され、
前の運転状態。

******************************************************************


ジャイロボーイ サブルーチン オールまとめ


*************************************************************
ジャイロボーイ サブ RST

My Block RST resets all motors, sensors, timers and variables that are needed in this program.


マイブロック RSTは、このプログラムで必要とされるすべてのモーター、センサー、タイマー、および変数をリセットします。

*************************************************************
ジャイロボーイ サブ gOS

My Block gOS makes an offset value of the Gyro Sensor in its steady position.
If the Gyro is slightly drifting.
this will keep the value requlated as the robot moves.
The offset is also dynamically calclated while the robot is running.
To calculate this value the gyro value is read and added together 250 times.
In each addition,
the value is checked at maximum and minimum values to make sure the robot is steady.
After Loop gChk ends, the difference between gMax and gMin is checked,
if the value is less than 2,
the calculation will continue, otherwise the robot will check the gyro again.
The average of the gSum is takenby the Math Block dividing by 250, and then this is wired to the Variable gOS.


マイブロック gOSは、ジャイロセンサのオフセット値を安定した位置にします。
ジャイロがわずかに変動している場合,これは、ロボットの動きに応じて値を再設定します。
オフセットは、ロボットが動作している間も動的に計算されます。
この値を計算するために、ジャイロ値を250回読み取り、加算します。
各追加において、値は最大値と最小値でチェックされ、ロボットが安定していることを確認します。
ループの終了後、gMaxとgMinの差がチェックされ、値が2未満の場合、計算が続行されます。
そうでなければ、ロボットはジャイロを再度チェックします。
gSumの平均は250で除算された数学ブロックによって取り込まれ、次にこれは変数gOSに配線されます。

*************************************************************
ジャイロボーイ サブ GT

My Block GT calculates a time interval based on a timer and loop count.
Timer 1 is divied by Variable cLo,
witch represents the loop count and wired to the Variable tlnt.
One is added to Variable cLo after the calculation.


マイブロックGTはタイマーとループカウントに基づいて時間間隔を計算します。
タイマー1は変数cLoで除算され、witchはループカウントを表し、変数tlntに配線されています。
計算後に1が変数cLoに追加されます

*************************************************************
ジャイロボーイ サブ GG

My Block GG gets information from the Gyro Sensor.
Variable gOS, from the My Block gOS,is used to create a dynamic offset.
The Gyro Sensor,reading degrees/seconds is used to create a newoffset.
The difference between the gyro reading and Variable gOS creates Variable gSpd.
This way is faster than using the direct readings from the gyro and compensates for drifting in the gyro as it happens on the robot.


マイブロック GGはジャイロセンサーから情報を取得します。
マイブロック gOSからの変数gOSは、動的オフセットを作成するために使用されます。
度/秒を読み取るジャイロセンサーを使用して、新しいオフセットを作成します。
ジャイロの読み値と変数gOSの違いは、変数gSpdを作成します。
この方法では、ジャイロからの直接読み取りを使用するよりも高速で、ロボットで発生するジャイロのドリフトを補正します。

*************************************************************
ジャイロボーイ サブ GM

My Block GM gets information from the motors.
First,the motor position is calculated by adding the degree values of Motor A and D and subtracting that value from a prevous calculation.
Variable mD is the initial difference.
The difference is added to an old mPos and makes the new mPos.
Motor speed,Variable mSpd,is created by taking an average of 4 motor differences and dividing by Variable tlnt.
The last blocks move the motor differences to other variables in succesion.


マイブロック GMはモーターからの情報を取得します。
まず、モーターの位置は、モーターAとDの次数値を加算し、その値を前の計算から引いて計算されます。
変数mDは初期差です。
差異は古いmPosに追加され、新しいmPosが作成されます。
モータ速度、変数mSpdは、平均4つのモータ差をとり、変数tlntで除算することによって作成されます。
最後のブロックは、モーターの違いを他の変数に移動します。

*************************************************************:
ジャイロボーイ サブ EQ

My Block EQ is the balancing equation.
Using the variables mPos,mSpd,gAng,gSpd and Cdrv, the Veriable pwr is created.
First create a target mPos using Variable Cdrv.
Next,Multiply gAng with .8 and gSpd with 15.
The same is done with Variables mPos, with .12 and mSpd with .08.
These multipliers give weight to the variables that are added together in a Math Block.
All arefinally added together with Cdrv and multiplier -.02 to create the pwr Variable.
Lastly, Variable pwr is checked if it is greater than 100 or less than -100 and sets the value to the maximum or minimum if needed.


マイブロックEQはバランスの取れた式です。
変数mPos、mSpd、gAng、gSpd、およびCdrvを使用して、Veriable pwrが作成されます。
最初に、変数Cdrvを使用してターゲットmPosを作成します。
次に、0.8でgAngを乗算し、15でgSpdを乗算します。
変数mPosでは.12、mSpdでは.08と同じことが行われます。
これらの乗数は、算術ブロックで一緒に加算される変数に重みを与えます。
すべてがCdrvと乗算器-.02と一緒に追加され、pwr変数を作成します。
最後に、変数pwrが100より大きいか-100より小さいかどうかがチェックされ、必要に応じて値が最大値または最小値に設定されます。

*************************************************************
ジャイロボーイ サブ Ctrl

My Block Ctrl uses teo variables to control the robot.
Cdrv is again used to create a target motor position.
The Variable Cdrv is multiplied by tlnt and subtracted from the previous mPos to create the target.
Variable Cstr is multplied by .1and, when added to the power,
Variable pwr will wire to the left drive motor.
By subtracting the wire will go to the right drive motor.


マイブロック Ctrlは、ロボットを制御するためにteo変数を使用します。
Cdrvを再び使用して目標モータ位置を作成する。
変数Cdrvにtlntを掛け、前のmPosから減算してターゲットを作成します。
変数Cstrは.1で乗算され、電力に加えられると、
変数pwrは左の駆動モーターに配線されます。
ワイヤを差し引くことにより、右側の駆動モーターに送られます

*************************************************************
ジャイロボーイ サブ Chk

My Block Chk checks if the robot has fallen.
If the power is 100 for more than 2 seconds,
the Variable ok will end the balancing loop and robot can be placed on the stand again.


マイブロック Chkは、ロボットが落ちたかどうかをチェックします。
電源が100秒間2秒を超える場合、
[OK]ボタンを押すとバランシングループが終了し、ロボットを再びスタンドに置くことができます。

*************************************************************

庭のイチゴに実がなってきました。まだ花が咲いているのに早いですね。
赤くなるまでもうちょい、イチゴジャム できるかな。

c0335218_15060424.jpg








by telmic-gunma | 2017-05-20 18:57 | レゴ マインドストーム | Trackback | Comments(2)