ロボティクス入門ゼミ 課題1

課題の説明

課題は、チームメイトの似顔絵を描くことです。

めいめいが、自分もしくは隣の人などの顔に似た絵を、ロボットを使い描きました。

ロボットについて

モーターは3つあり、二輪を2つのモーターで動かし、もう一つはペンを動かします。

ペンを動かす機構は固定されており、モーターを動かすことで上下に動かせます。

?plugin=attach&refer=2016a%2FMember%2Fkurokouchi%2FMission1&openfile=01.jpg

ぺんの固定部位はこんな感じです。3つのタイヤを噛ませて、ずれないようにしています。

?plugin=ref&page=2016a%2FMember%2Fkurokouchi%2FMission1&src=04.jpg

手法

顔を描くやり方は何通りもあるのでしょうが、ロボットを使って描くので、毎回必ず出てくる誤差も無視できる程度に単純化した似顔絵を目指しました。

顔の輪郭は、およそ丸と四角があります。

丸の利点

プログラムを単純にできること。

(丸はどんな丸もすべて相似だし、多少歪んでも半径が大きければ円に見える。)

丸の欠点

ロボットの体調未満の直径の丸は物理的に描けないので、紙に収まるようにするのが難しいこと。

四角の利点

より顔に見えること。

四角の欠点

プログラムが複雑になること。

 

結局自分は丸顔にしました。周りは四角が多かったのですが、いつも歪んだ顔になっていたので、より確実な丸が適当だと思いました。

プログラム

定義はこんな感じです。

#define  Go_Forward(t);OnFwd(OUT_AC); Wait(t); Off(OUT_AC);
#define  Go_Back(t) OnRev(OUT_AC); Wait(t); Off(OUT_AC);
#define  Turn_Right(t) OnFwd(OUT_A);  OnRev(OUT_C); Wait(t);  Off(OUT_AC);
#define  Turn_Left(t) OnFwd(OUT_C);  OnRev(OUT_A); Wait(t); Off(OUT_AC);
#define  Pen_Up OnRev(OUT_B); Wait(15); Off(OUT_B);
#define  Pen_Down OnFwd(OUT_B); Wait(20); Off(OUT_B);

本文

task main ()
{
 Turn_Right(550);  //輪郭を描く。
 Pen_Up;
 Go_Back(20);  
 Pen_Down;
 Go_Back(40);  //右目を描く。
 Pen_Up;
 Go_Back(20);  
 Pen_Down;
 Go_Back(40);  //左目を描く。
 Pen_Up;
 Turn_Left(50);
 Go_Forward(2);
 Pen_Down;
 Go_Forward(40);  //口を描く。
 Pen_Up;
 Turn_Right(20);
 Pen_Down;
 Turn_Right(20);   //鼻を描く。
 Pen_Up;
 Turn_Right(120);
 Go_Forward(130);
 Turn_Left(120);
 Pen_Down;
 Turn_Left(110);   //髪を描く。
 Off(OUT_AC);
 }

結果

IMG_1.JPG

感想

電池の残りのボルト数により、また描く時使う紙により、毎回似顔絵が変化してしまうので、冷や冷やすることも多かったのですが、ある意味面白かったです。

他の班のロボットを見るのも面白かったです。課題は顔を描くという以外指定がなかったので、みんないろいろなことを思いつきやっていたようです。

同じ目的のためにロボットやプログラムを作ったのに、みんな全然違うものを作っていたのでびっくりしました。


添付ファイル: fileIMG_1.JPG 137件 [詳細] fileIMG_0048.JPG 56件 [詳細] fileIMG_0046.JPG 65件 [詳細] fileIMG_0047.JPG 73件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-06-09 (木) 20:12:47 (1164d)