たろうのたろうによるたろうのためのホームページ

初めてのプログラム

task main()
{
OnFwd(Out_A+C);
Wait(300);
Off(Out_A+C);
}
 初めてプログラムだったから動くか心配だったが、無事動いてくれてよかった。動いたときは感動した。 [#fa4be7ed]

『水』を書くロボットを作る

 とりあえず見本として、TAの先生が作ったロボットを見せてもらった。 [#q8bae0c8]

なんだこれは。

動いている。

動いているじゃないか。

しかも『水』を書いているじゃないか。 ひょっとして俺よりもうまく『水』を書いているんじゃないのか、このロボット君は。

ロボット本体を作る

とりあえず本体が無いことには話にならないから取説を参考に本体を作り始める。

タイヤをつけるためのベースはあっさりと完成したが、アームを作る際に問題が発生することになる。

どうやってペンをつけようかと試行錯誤することとなったのだ。 そんなことも知らずにベースがあれば何とか書けると思い込み、プログラムのほうに取り掛かる。

プログラムを作る

そんなこんなでプログラムに取りかかる。

とにかく水という文字をなぞるプログラムを作る。

ペンをつけるアームの部分は後回し。

プログラム [#idcf8063]
  task main()
      {
      Wait (500);
      OnFwd(OUT_A+OUT_C);
      Wait(100);
      Off(OUT_A+OUT_C);
      OnRev(OUT_A+OUT_C);
      Wait(100);
      Off(OUT_A+OUT_C);
      Wait(100);//戻る
      OnFwd(OUT_A);
      OnRev(OUT_C);
      Wait(15);
      Off(OUT_A+OUT_C);//二画目へ方向転換    
      Wait(100);
      OnFwd(OUT_A+OUT_C);
      Wait(50);
      Off(OUT_A+OUT_C);//二画目へ移動。
      OnFwd(OUT_A);
      OnRev(OUT_C);
      Wait(40);
      Off(OUT_A+OUT_C);//方向転換
      Wait(100);
      OnRev(OUT_A+OUT_C);
      Wait(40);
      Off(OUT_A+OUT_C);
      Wait(100);//二画目を書く
      OnFwd(OUT_A+OUT_C);
      Wait(40);
      Off(OUT_A+OUT_C);
      Wait(100);//方向転換
      OnFwd(OUT_C);
      OnRev(OUT_A);
      Wait(30);
      Off(OUT_A+OUT_C);
      OnRev(OUT_A+OUT_C);
      Wait(38);
      Off(OUT_A+OUT_C);
      Wait(100);
      OnFwd(OUT_A+OUT_C);
      Wait(55);
      Off(OUT_A+OUT_C);
      Wait(100);//二画目の払い部分
      OnFwd(OUT_A);
      OnRev(OUT_C);
      Wait(26);
      Off(OUT_A+OUT_C);//三角目の場所へ方向転換
      Wait(100);
      OnRev(OUT_A+OUT_C);
      Wait(130);
      Off(OUT_A+OUT_C);
      Wait(100);//三画目に移動
      OnFwd(OUT_A+OUT_C);
      Wait(45);
      Off(OUT_A+OUT_C);
      Wait(100);//三画目を書く
      OnFwd(OUT_A+OUT_C);
      Wait(45);
      Off(OUT_A+OUT_C);
      Wait(100);//方向転換
      Wait(100);
      OnFwd(OUT_C);
      OnRev(OUT_A);
      Wait(70);
      Off(OUT_A+OUT_C); 
      OnRev(OUT_A+OUT_C);
      Wait(40);
      Off(OUT_A+OUT_C);
      Wait(100);
      OnFwd(OUT_A+OUT_C);
      Wait(85);
      Off(OUT_A+OUT_C);//はらい
      }

考察

とりあえず動くことは動いてくれた。

後はペンの動きをどうにかすれば何とかなりそうだ。

でもこのプログラム長い…

アーム作成

チームのメンバーと相談した結果、キャタピラを使ってペンの上げ下げをするアームを作ることに。

けれどこのアームがなかなか完成せず。

プログラム2

プログラムにペンの動きを追加

  task main()
      {
      Wait (500);
      PEN_D();Wait (100);//ペンを下げる
      OnFwd(OUT_A+OUT_C);
      Wait(100);
      Off(OUT_A+OUT_C);
      Wait(100);//一画目
      PEN_U();Wait(100);//ペンを持ち上げる
      OnRev(OUT_A+OUT_C);
      Wait(100);
      Off(OUT_A+OUT_C);
      Wait(100);//戻る
      OnFwd(OUT_A);
      OnRev(OUT_C);
      Wait(15);
      Off(OUT_A+OUT_C);//二画目へ方向転換    
      Wait(100);
      OnFwd(OUT_A+OUT_C);
      Wait(50);
      Off(OUT_A+OUT_C);//二画目へ移動。
      OnFwd(OUT_A);
      OnRev(OUT_C);
      Wait(40);
      Off(OUT_A+OUT_C);//方向転換
      Wait(100);
      PEN_D();Wait (100);//ペンをおろ
      OnRev(OUT_A+OUT_C);
      Wait(42);
      Off(OUT_A+OUT_C);
      Wait(100);//二画目を書く
      PEN_U();Wait (100);//ペンをあげる
      OnFwd(OUT_A+OUT_C);
      Wait(39);
      Off(OUT_A+OUT_C);
      Wait(100);//方向転換
      OnFwd(OUT_C);
      OnRev(OUT_A);
      Wait(30);
      Off(OUT_A+OUT_C);
      OnRev(OUT_A+OUT_C);
      Wait(38);
      Off(OUT_A+OUT_C);
      Wait(100);
      PEN_D();Wait(100);//ペンをおろす
      OnFwd(OUT_A+OUT_C);
      Wait(55);
      Off(OUT_A+OUT_C);
      Wait(100);//二画目の払い部分
      PEN_U();Wait(100);//ペンをあげる
      OnFwd(OUT_A);
      OnRev(OUT_C);
      Wait(26);
      Off(OUT_A+OUT_C);//三角目の場所へ方向転換
      Wait(100);
      OnRev(OUT_A+OUT_C);
      Wait(130);
      Off(OUT_A+OUT_C);
      Wait(100);//三画目に移動
      PEN_D();Wait(100);//ペンをおろす
      OnFwd(OUT_A+OUT_C);
      Wait(45);
      Off(OUT_A+OUT_C);
      Wait(100);//三画目を書く
      PEN_U();Wait(100);//ペンをあげる
      OnFwd(OUT_A+OUT_C);
      Wait(44);
      Off(OUT_A+OUT_C);
      Wait(100);//方向転換
      Wait(100);
      OnFwd(OUT_C);
      OnRev(OUT_A);
      Wait(70);
      Off(OUT_A+OUT_C); 
      OnRev(OUT_A+OUT_C);
      Wait(40);
      Off(OUT_A+OUT_C);
      Wait(100);
      PEN_D();Wait(100);//ペンをおろす
      OnFwd(OUT_A+OUT_C);
      Wait(85);
      Off(OUT_A+OUT_C);//はらい
      }

反省・感想

とにかく本体が完成してからプログラムを作るべきだった。

本体が完成していなかったためにどんな動きをさせればいいかわからず、プログラムの完成が遅れてしまった。 ^構造的にロボット本体の強度が弱かった。途中、数回自然解体したり、運搬中に分解を経験。もっと頑丈なロボットにしなければ。

次回からはプログラムを組みやすいような、シンプルで頑丈なロボットを作ろう。

タッチセンサーを使う

 今回はタッチセンサーを使ってロボットを作った。
 まず、どのようなロボットを作ればよいか?
 ずばり、障害物に当たったら別の方向を向いて再発進できるロボットである。
 というわけで、課題に取り掛かる。

ロボット

 今回は前回の反省を踏まえてシンプルに作り上げることにした。
 ベースは前回作ったものを流用。
 取説を参考にしながらタッチセンサーのついたバンパーを作る。あまり工夫はされていないが、一番シンプルな形に収まった。
 本体ができたからプログラムに取り掛かる。

プログラム


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-08-13 (日) 16:56:38