明日誕生日なんですけど、いつも通りにお仕事で特に予定もありません←
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秒を設定する

以上です!

・・・やっぱり文字だけだと見づらい…!

みなさん、頑張って読解してください←

分からないよーって方はロボットセンター秋葉原店にお越しいただき、店長に聞いてみてください(笑)

それではまた!