[[2008b/MemberOnly/進行状況A]] *目次 [#q7c2244f] #contents *課題1/似顔絵を作成する [#c3d27323] **課題の概要 [#aaf96f25] A3の用紙に相棒の似顔絵を作成するロボットの作成。 ・・しかし、俺には相棒がいないっ!! というわけで一人寂しく作成しました。。 **ロボット君 [#c0ce7fde] 他の班と違うことをしようと思いタイヤを三輪にしてみた。 旋回がきれいにできるように、駆動輪にデフギヤー(左右の回転差を吸収するギヤ)を組み込み、前輪でかじを取る仕組みを考えた。 ペンを持つ部分はキャタピラを縦にしてロボットの後部に取り付け、ペンの上げ下ろしがスムーズにできるようにした。 |>|CENTER:COLOR(#808080):&ref(2008b/A7/課題1左/cimg1079_Medium.jpg,100%);| が、この先とんでもない問題が発生するとは誰も思わなかった。。 **どんな顔!? [#c0ce7fde] とりあえずどんな顔を描くか検討してみることに。 ・・という訳でペイントでサクッと作成。 顔 |>|CENTER:COLOR(#808080):&ref(2008b/A7/課題1左/kao.jpg,100%);| これを目標にプログラム作成へ **プログラム [#c0ce7fde] /*-----似顔絵制作プログラム-----*/ void pen_up() //ペンを上げる関数 { Wait(10); OnRev(OUT_B); Wait(20); Off(OUT_B); Wait(10); } void pen_down() //ペンを下げる関数 { Wait(10); OnFwd(OUT_B); Wait(20); Off(OUT_B); Wait(10); } void move_fwd(int t) //前進する関数 { //move_fwd(t); tの値だけ前進 OnFwd(OUT_A); Wait(t); Off(OUT_A); } void move_rev(int t) //後進する関数 { //move_rev(t); tの値だけ後進 OnRev(OUT_A); Wait(t); Off(OUT_A); } void move_right(int t) //右に舵を切る関数 { //move_right(t); tの値の時間だけ右へ OnRev(OUT_C); Wait(t); Off(OUT_C); Wait(10); //マシン動作安定のため } void move_left(int t) //左に舵を切る関数 { //move_left(t);tの値の時間だけ左へ OnFwd(OUT_C); Wait(t); Off(OUT_C); Wait(10); //マシン動作安定のため } task main() //main関数 { /*---初期設定---*/ int i; //繰り返しで使用する変数iの宣言 SetPower(OUT_A,5); //A出力のモータの出力を5に設定 SetPower(OUT_A,5); //B出力のモータの出力を5に設定 SetPower(OUT_C,7); //C出力のモータの出力を7に設定 /*---終了---*/ /*---顔の輪郭を描く---*/ pen_down(); //ペンを下げる move_right(int 40) //右に舵をt=40(60度ぐらい?)きる move_fwd(int 900) //前進t=900 → 時計回りに一周 pen_up(); //ペンを上げる move_light(int 40) //左に舵をt=40(60度ぐらい?)きる(戻す) /*---終了---*/ /*---髪の線を描く---*/ move_right(int 65) //右に舵をt=65(90度ぐらい?)きる move_fwd(85); //t = 85の時間だけ前進(90度旋回) move_light(int 65) //左に舵をt=65(90度ぐらい?)きる(戻す) pen_down(); //ペンを下げる move_fwd(225); //t = 225の時間だけ前進 pen_up(); //ペンを上げる /*---終了---*/ /*---位置調整---*/ move_right(int 65) //右に舵をt=65(90度ぐらい?)きる move_fwd(85); //t = 85の時間だけ前進(90度旋回) move_light(int 65) //左に舵をt=65(90度ぐらい?)きる(戻す) move_fwd(73); //t = 73の時間だけ前進 move_right(int 65) //右に舵をt=65(90度ぐらい?)きる move_fwd(85); //t = 85の時間だけ前進(90度旋回) move_light(int 65) //左に舵をt=65(90度ぐらい?)きる(戻す) /*---終了---*/ /*---目を描く---*/ pen_down(); //ペンを下げる move_fwd(80); //t =80の時間だけ前進 pen_up(); //ペンを上げる move_fwd(40); //t =40の時間だけ前進 pen_down(); //ペンを下げる move_fwd(80); //t = 80の時間だけ前進 pen_up(); //ペンを上げる /*---終了---*/ /*---位置微調整---*/ move_light(int 65) //左に舵をt=65(90度ぐらい?)きる move_fwd(112); //t = 112の時間だけ前進(120度旋回) move_right(int 65) //右に舵をt=65(90度ぐらい?)きる(戻す) move_fwd(88); //t = 88の時間だけ前進 move_right(int 65) //右に舵をt=65(90度ぐらい?)きる move_fwd(85); //t = 85の時間だけ前進(90度旋回) move_light(int 65) //左に舵をt=65(90度ぐらい?)きる(戻す) /*---終了---*/ /*---鼻を描く---*/ pen_down(); //ペンを下げる move_fwd(40); //t = 70の時間だけ前進 pen_up(); //ペンを上げる /*---終了---*/ /*---位置調整---*/ move_light(int 65) //左に舵をt=65(90度ぐらい?)きる move_fwd(112); //t = 112の時間だけ前進(120度旋回) move_right(int 65) //右に舵をt=65(90度ぐらい?)きる(戻す) /*---終了---*/ /*---口を描く---*/ pen_down(); //ペンを下げる move_fwd(110); //t = 110の時間だけ前進 pen_up(); //ペンを上げる /*---終了---*/ } /*-----プログラム終了-----*/ **試走だワッショイ! [#r9089927] というわけで、完成したプログラムで自宅で実験。。 ぅ〜ん、イイ感じ。これで本番に突入だっ!! ぁっ!写真撮るのを忘れていた・・orz **本番 [#qdad8f6a] ・・・ところが、本番で重大な問題が発生。 駆動軸にスペースの制約で使用したプーリー&ゴムでスリップが発生し、思ったように進まなかった。 かじ取りタイヤの負荷が思ったより大きく、上手にかじがとれなかった。 残念なことに一度も顔を描くことができず。。無念。。 そしてデジカメを置いてきたため写真も撮れず。。 製作段階で実験していた床では上手に作動したのだが、発表会場の床ではうまく動かなかった。(床材質の違いによるのだろうか?) ロボゼミの初っ端からこんな調子でよいのだろうか・・。 **感想 [#wb518e14] なんだか、一人の寂しさと虚しさを散々味わった気がします。 次の課題は相方と力を合わせて頑張ります!! *コメントをお願いします [#ze08a159] - 一人でよく頑張ったと思います。関数をうまく使えています。全体としてどんな動きをしているかわかりやすくするために、書き順を加えた図を加えてもいいかもしれません。 -- [[FI]] &new{2009-02-14 (土) 17:27:52}; - 一人でよく頑張ったと思います。関数をうまく使えています。全体としてどんな動きをしているかわかりやすくするために、書き順を加えた図を加えるともっと良くなります。 -- [[FI]] &new{2009-02-14 (土) 17:27:52}; #comment