明日誕生日なんですけど、いつも通りにお仕事で特に予定もありません←
moshiroboです、こんにちは!ケーキ食べたい!カロリー低めのやつ!(笑)
さて今日は、店長ローバーこと「48mmメカナムロボット」の色んな動き(2種類だけ←)の紹介です。
プログラミングは、ビュートローバーH8/ARM専用ソフト「Beauto Builder2」で行います。
以前、前後左右斜め8方向+回転2方向をVS-C3(無線コントローラ)で動かすプログラムを作り記事にしました。
↓こちら
http://lets-robot.com/modules/weblog/details.php?blog_id=3574
これを応用すれば「八角形」の動きは簡単ですね。
前 → 右前 → 右 → 右後 → 後 → 左後 → 左 → 左前
と動けば、八角形を描けます。
さてさて、今日の本題は「円」を描く方法です。
と言っても正確な円ではなく「楕円」ですけどね。
プログラムはざっくりこんな感じです。
(見えない定期←)
それでは説明しますね。
《ステップ1》
前、右、後、左方向へ進む動きの、各モータのパラメータを確認します。
店長ローバーのパラメータはこんな感じでした。
「前」
モータ1(左前)【-60 】
モータ2(右前)【 60 】
モータ3(左後)【-60 】
モータ4(右後)【 60 】
「右」
モータ1(左前)【-120 】
モータ2(右前)【-120 】
モータ3(左後)【 120 】
モータ4(右後)【 120 】
「後」
モータ1(左前)【 60 】
モータ2(右前)【-60 】
モータ3(左後)【 60 】
モータ4(右後)【-60 】
「左」
モータ1(左前)【 120 】
モータ2(右前)【 120 】
モータ3(左後)【-120 】
モータ4(右後)【-120 】
《ステップ2》
「前」から「右」
「右」から「後」
「後」から「左」
「左」から「前」
へ動くために、各モータのパラメータがどう変化しているかを見てみます。
「前」から「右」
モータ1(左前)【 -60 】(-60 → -120)
モータ2(右前)【-180 】( 60 → -120)
モータ3(左後)【+180 】(-60 → 120)
モータ4(右後)【 +60 】( 60 → 120)
「右」から「後」
モータ1(左前)【+180 】(-120 → 60)
モータ2(右前)【 +60 】(-120 → -60)
モータ3(左後)【 -60 】( 120 → 60)
モータ4(右後)【-180 】( 120 → -60)
「後」から「左」
モータ1(左前)【 +60 】( 60 → 120)
モータ2(右前)【+180 】(-60 → 120)
モータ3(左後)【-180 】( 60 → -120)
モータ4(右後)【 -60 】(-60 → -120)
「左」から「前」
モータ1(左前)【-180 】( 120 → -60)
モータ2(右前)【 -60 】( 120 → 60)
モータ3(左後)【 +60 】(-120 → -60)
モータ4(右後)【+180 】(-120 → 60)
《ステップ3》
【】の数値の最大公約数を求めます。
-180,-60,60,180の最大公約数は、60ですね。
これで、前→右などへ動く際に、60回に分けて動かすことに決めます。
(=ループ回数)
《ステップ4》
ステップ2の、各動きの際に変化する数値を最大公約数で割ります。
「前」から「右」
モータ1(左前)【 -1 】
モータ2(右前)【 -3 】
モータ3(左後)【 +3 】
モータ4(右後)【 +1 】
「右」から「後」
モータ1(左前)【 +3 】
モータ2(右前)【 +1 】
モータ3(左後)【 -1 】
モータ4(右後)【 -3 】
「後」から「左」
モータ1(左前)【 +1 】
モータ2(右前)【 +3 】
モータ3(左後)【 -3 】
モータ4(右後)【 -1 】
「左」から「前」
モータ1(左前)【 -3 】
モータ2(右前)【 -1 】
モータ3(左後)【 +1 】
モータ4(右後)【 +3 】
《ステップ5》
プログラムに実装します。
基本的な流れとしては以下の通りです。
①初期値として《ステップ1》の「前」のパラメータを各変数に代入する
(※無限ループの手前)
a=-60,b=60,c=-60,d=60
a=モータ1(左前)
b=モータ2(右前)
c=モータ3(左後)
d=モータ4(右後)
②無限ループを設置する
以下の③~⑤まるまる入ります
③4つの「60回」で回るループを組み込む
④4つのループにそれぞれ下記内容を組み込む
1.《ステップ4》で算出した演算を行う
1つ目のループの場合、「前」から「右」なので、
a += 1
b -= 3
c += 3
d += 1 となります。
2.モータのスピードに、演算後の変数の値を代入する
左前モータ = a
右前モータ = b
左後モータ = c
右後モータ = d
※Beauto Builder2でのブロックの文字表記は「右モ」となっていても、店長ローバー的には「左前のモータ」となったりもしますので、製作するロボットによって変わることにご注意ください。
3.ウエイト0.01秒を設定する
以上です!
・・・やっぱり文字だけだと見づらい…!
みなさん、頑張って読解してください←
分からないよーって方はロボットセンター秋葉原店にお越しいただき、店長に聞いてみてください(笑)
それではまた!