[[2008a/A7R/課題1右]]
[[2008a/A7/課題1右]]


<工夫点>


●ペンを上下運動しかしない仕組みにして、円運動よりかは正確に地面をペン先が捉えるようにした 

●ペンをロボットと中心に設置してあるので、向きを変更する時にペンを上下させる必要がなく、さらにロボットの動いたラインがペンのラインとなるので、プログラミングしやすい

●上記の事によってギザギザ線がペンを上下させる必要なくスムーズにかける 

●FLOATとOFFによるモータの自由回転と無回転の使い分けによる円の差異を表現した 

●サブルーチンを使った


<今後の課題>

●より確実に紙に線が写ること

●ごちゃごちゃしているのでもっとシンプルでかつ実用的でとり回しやすくすること

●モーターへの出力を調整してさらなる円の差異をつくる

●今回は脳天が省略してあるので、今後正確に右のこめかみから左のこめかみまできれいにつなげるようにすること

●長時間使用していると、たまに脱輪するのでそれを防ぐ方法を考えること

●もっとプログラムを省略できるようにする



一人目の顔のプログラム

↓↓一人目の顔のプログラム
#br
sub pen_up()
sub pen_up()//ペンを上昇させるサブルーチン
{
         Off(OUT_A+OUT_C);
         OnRev(OUT_B);
         Wait(100);
}
     
sub pen_down()
sub pen_down()//ペンを下降させるサブルーチン
{
       Off(OUT_A+OUT_C);OnFwd(OUT_B);
        Off(OUT_A+OUT_C);OnFwd(OUT_B);
        Off(OUT_A+OUT_C);OnFwd(OUT_B);
        Wait(100);
        Off(OUT_B);         
        Off(OUT_B);//モーターの回転を固定させペンがブレないようにする         
}    
task main()
{
        pen_down();//ペンの下降
    OnFwd(OUT_A+OUT_C);Wait(100);//襟足を書く
        OnFwd(OUT_A+OUT_C);Wait(100);//右襟足を書く
        OnRev(OUT_A+OUT_C);Wait(100);
        OnFwd(OUT_A):Wait(20);//
        
        OnFwd(OUT_A+OUT_C);Wait(80); //右輪郭をかく
        Off(OUT_C);//Aを停止して顎の曲線を書く
        Wait(320);
        OnFwd(OUT_A+OUT_C);Wait(80);左輪郭を書く
        OnRev(OUT_C);Wait(20);//方向転回
        Rev(OUT_A+OUT_C);Wait(100);//襟足を書く
        Rev(OUT_A+OUT_C);Wait(100);//左襟足を書く
        OnFwd(OUT_A+OUT_C);
        Wait(100);
        OnFwd(OUT_A);OnRev(OUT_C);//方向転回
        Wait(110);
        Off(OUT_A+OUT_C);Wait(30);//ペン再下降のための停止
        
        pen_down();//ペンを再下降させて筆圧を取り戻す
        pen_down();//停止してペンを再下降させて筆圧を取り戻す
        Float(OUT_A);//Aを自由回転にして右側の前髪曲線を書く
        OnFwd(OUT_C);Wait(240);
        Off(OUT_C);
        OnRev(OUT_A);//Cを停止してAの逆回転による左側の前髪曲線を書く
        Wait(180);
         
        Rev(OUT_A);Fwd(OUT_C);//方向転回
        Wait(140);
        
        Off(OUT_A+OUT_C);OnRev(OUT_B);//停止してペンをあげる
        Wait(100);
        pen_up();
        OnFwd(OUT_C);OnRev(OUT_A);//右目の位置を目指す
        Wait(20);
        Fwd(OUT_A);Wait(25);
        OnFwd(OUT_A);OnRev(OUT_C);
        Wait(80);
        Wait(74);
        
        
        OnFwd(OUT_A+OUT_C);Wait(40);
        Off(OUT_A+OUT_C);OnFwd(OUT_B);//ペンを下ろす
        Wait(100);
        Off(OUT_B);//ペンのモーターを固定
        pen_down();//ペンを下ろす
        
        OnFwd(OUT_A+OUT_C);//右目を書く
        Wait(40);
        Off(OUT_A+OUT_C);OnRev(OUT_B);//停止してペンをあげる
        Wait(100);
        pen_up();//停止してペンをあげる
         
        OnFwd(OUT_A+OUT_C);
        OnFwd(OUT_A+OUT_C);//眉間を通過
        Wait(20);
        Off(OUT_A+OUT_C);OnFwd(OUT_B);//ペンを下ろす
        Wait(100);       
        pen_down();//ペンを下ろす     
     
        Off(OUT_B);
        OnFwd(OUT_A+OUT_C);/左目を書く
        Wait(40);
        
        OnRev(OUT_A+OUT_C);Wait(40);//来た道をそのままバックして
        Fwd(OUT_C);Wait(50);//方向転換
        Fwd(OUT_A+OUT_C);//鼻をかく
        Wait(64);
        Off(OUT_A+OUT_C); 
        OnRev(OUT_B);//停止してペンをあげる
        Wait(100);
        pen_up();//停止してペンをあげる
        
        Off(OUT_B);//
        OnFwd(OUT_A+OUT_C);//口の位置へ
        Wait(35);
        
        OnRev(OUT_A);Wait(60);
        Off(OUT_A+OUT_C);
        OnFwd(OUT_B);//停止してペンを下ろす
        Wait(100);
        Off(OUT_B);//ペンを固定
        pen_down();//停止してペンを下ろす

        OnFwd(OUT_C);//Cモーターのみで口の曲線
        Off(OUT_A);Wait(270);
        Off(OUT_A+OUT_B+OUT_C);//終了
                
          
        
        
     
}



●感想

単純なプログラムしか扱ってないけど、でもそれだけでも十分なほど多彩な動きができたことに驚いた。こんなに奥深いものだとは思わなかった。

今後もっと複雑なプログラミングを覚えて、ロボットにみんなが驚くような動きをさせてみたい。





もう一つの似顔絵のプログラム
http://yakushi.shinshu-u.ac.jp/robotics/?2008a%2FA7%2F%B2%DD%C2%EA%A3%B1%B1%A6%2F%A3%B2


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS