2018b/Member

目次

課題1

これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上、かつ合計10画以上のものを選び、それをA4の紙を書くロボットを製作せよ。

私たちは書きやすさを考慮し、「仙台」という文字を書くことにした。私は「台」という文字のプログラミングを担当した。

ロボットの説明

ロボット

私たちのグループでは、当初プリンタ型のロボットを作ろうと考えていたが、斜線が書けるのか、与えられた部品でうまくロボットを制御できるのかと疑問が浮かび、2人で考えた結果、車両にペンを固定させた書道ロボットを作成することになった。

走行時にみられた問題点

問題点1 使用するペンについて

アームを下げるたびにペンの角度が変化して文字が書けなくなってしまったり、ペンが下がりすぎて車体を浮かせてしまう。

改善策1

プログラムを変えることは難しいと考えたため、使用するペンを鉛筆、名前ペンから筆ペンへと変更した。筆ペンは、先のほうが鉛筆などと比べて柔らかく、ペンが下がりすぎてもペンの角度を微調整してくれるため、これらの問題を解決することが出来た。 また、ロボットの工夫としては以下の4つを行った。

ロボット

.撻鵑肇織ぅ笋竜離をなるべく近づけた。

ロボット

▲◆璽爐肇蹈椒奪箸鯤森佞房茲衂佞韻拭

ロボット

2つのタイヤの中点にペン先を配置した。

ロボット

せ罎反眥召砲覆襪茲Δ縫撻鵑鮓把蠅垢襪海箸如▲◆璽爐上下に動いてもペン先が紙に触れるようにした。

アームとロボットが平衡で紙とペンが垂直になるように固定することにより、ペンが上下に動いても、常に紙とペンが接するようにできた。また、ペンをタイヤの中点に固定しタイヤとの距離を短くすることで文字を書きやすくした。

問題点2 旋回について

ロボットのスピードを50で走行すると片側の車輪が浮いてしまい走行できなくなった。また、紙との摩擦により同じプログラムでも旋回の角度がずれてしまった。

改善策2

私たちはロボットの重心とスピードに問題があると考えた。そのため、重心がロボットの真ん中にくるようにするために左右対称になるようにロボットを組み立て、ロボットのスピードを30にすることでロボットが旋回する時に片側の車輪が浮くことを防いだ。

ロボット

さらに、一番の工夫としてロボットの電池を地面と平衡に取り付けることでタイヤへの摩擦を軽減し、スムーズな旋回ができるようにした。

プログラムの説明

各定義の説明

M_TはMove_Timeの略称であり、ロボットが動く時間、モータが停止する時間などを定義している。

STPはSTOPの略称である。

SSMはSUSUMEの略称である。

MDRはMODOREの略称である。

MMGRはMiginiMAGAREの略称であり、このプログラムでは45度右に回転する。

HMGRはHidariniMAGAREの略称であり、このプログラムでは45度左に回転する。

PDはPenDownの略称である。

PUはPenUpの略称である。

定義は大きく分けて以下の8種類を作成した。

ロボットの動く時間の定義

   #define M_T    250    //0.250秒を表している。
   #define M_T1   500    //0.500秒を表している。
   #define M_T2    707   //0.707秒を表している。
   #define M_T3    1000  //1.000秒を表している。
   #define M_T4   1500   //1.500秒を表している。
   #define M_T5   1875   //1.875秒を表している。
   #define M_T6   275    //0.275秒を表している。
   #define M_T7   457    //0.457秒を表している。

ロボットの走行スピードの定義

   #define SP 30  //ロボットの走行スピードが30であることを表している。

ロボットの停止の定義

   #define STP Wait(M_T)   //0.250秒間ロボットが停止する。
   #define STP1 Wait(M_T1) //0.500秒間ロボットが停止する。
   #define STP2 Wait(M_T2) //0.707秒間ロボットが停止する。
   #define STP3 Wait(M_T3) //1.000秒間ロボットが停止する。
   #define STP4 Wait(M_T4) //1.500秒間ロボットが停止する。
   #define STP5 Wait(M_T5) //1.875秒間ロボットが停止する。
   #define STP6 Wait(M_T6) //0.275秒間ロボットが停止する。
   #define STP7 Wait(M_T7) //0.457秒間ロボットが停止する。

モータの停止時間の定義

   #define TIS Off(OUT_BC);Wait(M_T1)  //0.500秒間モータが停止する。

ロボットの前進の定義

   #define SSM  OnFwd(OUT_BC,SP);STP;TIS  //0.250秒間ロボットが前進する。
   #define SSM1 OnFwd(OUT_BC,SP);STP1;TIS //0.500秒間ロボットが前進する。
   #define SSM2 OnFwd(OUT_BC,SP);STP2;TIS //0.707秒間ロボットが前進する。
   #define SSM3 OnFwd(OUT_BC,SP);STP3;TIS //1.000秒間ロボットが前進する。
   #define SSM4 OnFwd(OUT_BC,SP);STP4;TIS //1.500秒間ロボットが前進する。
   #define SSM5 OnFwd(OUT_BC,SP);STP7;TIS //0.457秒間ロボットが前進する。

ロボットの後退の定義

   #define MDR  OnRev(OUT_BC,SP);STP;TIS  //0.250秒間ロボットが後退する。
   #define MDR1 OnRev(OUT_BC,SP);STP1;TIS //0.500秒間ロボットが後退する。
   #define MDR2 OnRev(OUT_BC,SP);STP2;TIS //0.707秒間ロボットが後退する。
   #define MDR3 OnRev(OUT_BC,SP);STP3;TIS //1.000秒間ロボットが後退する。
   #define MDR4 OnRev(OUT_BC,SP);STP4;TIS //1.500秒間ロボットが後退する。
   #define MDR5 OnRev(OUT_BC,SP);STP7;TIS //0.457秒間ロボットが後退する。

旋回の定義

   #define MMGR OnFwd(OUT_B,SP);OnRev(OUT_C,SP);STP6;TIS;  //右に45度回転する。
   #define HMGR OnFwd(OUT_C,SP);OnRev(OUT_B,SP);STP6;TIS; //左に45度回転する。

ペンの上げ下げの定義

   #define PD RotateMotor(OUT_A,50,-90);Wait(M_T3);  //ペンを下ろす。
   #define PU RotateMotor(OUT_A,50,90);Wait(M_T3);  //ペンを上げる。

ロボットを動かすプログラム

ロボット

文字の書き順は写真の通りであり、プログラムの右側の数字と書き順が対応している。

「仙」のイ

   MMGR;  //右に45度回転する。
   TIS;   //,鮟颪ために移動した。
   PD;    //ペンを下げる。
   SSM2;  //,鮟颪。
   TIS;
   PU;    //ペンを上げる。
   MDR;   //,能颪い神の中点まで戻る。ここで,書き終わる。
   TIS;
   HMGR;  //△鮟颪ために左に45度回転する。
   TIS;
   PD;    //ペンを下げる。
   SSM1;  //△鮟颪。
   TIS;
   PU;  //ここで△書き終わる。     
   HMGR;  //ここからはを書くための移動のプログラム。
   TIS;
   HMGR;  //左に旋回を2回することで90度回転し右を向く。
   TIS;
   SSM;   //を書くために右に進む。
   TIS;
   HMGR;  
   TIS;
   HMGR;  //を書くために左に2回旋回する。
   TIS;   //移動完了。 

「仙」の山

   PD;    //ペンを下げる。
   SSM;   //を書く。
   TIS;   //ここでが書き終わる。
   PU;    //ペンを上げる。
   MDR;   //ここからはい鮟颪ための移動のプログラム。
   TIS;
   MMGR;
   MMGR;  //右に2回旋回することで90度回転する。
   TIS;   //移動完了。
   PD;    //ペンを下げる。
   SSM1;  //い鮟颪。
   TIS;   //ここでい書き終わる。
   PU;  //ペンを上げる。
   HMGR;  //ここからはイ鮟颪ための方向転換のプログラム。
   TIS;
   HMGR;  //左に2回旋回することで90度回転する。方向転換完了。  
   PD;    //ペンを下げる。
   SSM;   //イ鮟颪。
   TIS;   //ここでイ書き終わる。
   PU;    //ペンを上げる。
   SSM;   //ここからはΔ鮟颪ための移動プログラム。          
   TIS:
   HMGR;  
   TIS;
   HMGR;  //左に2回旋回することで90度回転する。
   TIS;
   SSM;   //い涼翕世留篦浩上まで移動する。
   TIS;   
   HMGR;
   TIS;
   HMGR;  //左に2回旋回することで90度回転する。
   TIS;   //移動完了。
   PD;    //ペンを下げる。
   SSM1;  //Δ鮟颪。
   TIS;   //ここでΔ書き終わる。
   PU;    //ペンを上げる。
   TIS;   //ここからはГ鮟颪ための移動プログラム。
   HMGR;  //
   TIS;
   HMGR;  //左に2回旋回することで90度回転する。
   SSM2;  //Г鮟颪ための初期位置に移動する。
   TIS;   //移動完了。

「台」のロ

   PD;    //ペンを下げる。
   SSM1;  //Г鮟颪。
   TIS;
   PU;    //ペンを上げる。
   HMGR;
   TIS;
   HMGR;  //左に2回旋回することで90度回転し、向きを変える。
   TIS;
   PD;    //ペンを下げる。
   TIS;
   SSM;   //Г梁海を書く
   TIS;   //ここでГ書き終わる。
   PU;    //ペンを上げる。
   TIS;   //ここからは┐鮟颪ために向きを変えるプログラム。
   HMGR;  
   TIS;   
   HMGR;  //左に2回旋回することで90度回転し、向きを変える。
   TIS;   //方向転換完了。
   PD;    //ペンを下げる。
   SSM1;  //┐鮟颪。
   TIS;
   PU;    //ペンを上げる。
   HMGR;
   TIS;
   HMGR;  //左に2回旋回することで90度回転し、向きを変える。
   TIS;
   PD;    //ペンを下げる。
   SSM;   //┐梁海を書く。
   TIS;   //ここで┐書き終わる。
   PU;    //ペンを上げる。
   MDR1;  //ここからはを書くための移動のプログラム。
   TIS;
   HMGR;
   TIS;
   HMGR;  //左に2回旋回することで90度回転し、向きを変える。
   TIS;   //移動完了。

「台」のム

   PD;    //ペンを下げる。
   SSM1;  //を書く。
   TIS;   //ここでが書き終わる。
   PU;    //ペンを上げる。     
   HMGR;  //ここからはを書くための移動のプログラム。
   HMGR;
   HMGR;  //左に3回旋回することで135度回転し向きを変える。
   MDR1;  //を書くための初期位置に移動する。
   TIS;   //移動完了。
   PD;    //ペンを下げる。
   SSM5;  //を書く。
   TIS;   //ここでが書き終わる。
   PU;    //ペンを上げる。
   SSM;   //ここからはを書くための移動のプログラム。前進する。
   TIS;   
   HMGR;
   HMGR;  //左に2回旋回することで90度回転し、向きを変える。
   TIS;   //移動完了。
   PD;    //ペンを下げる。
   SSM1;  //を書く。
   TIS;   //ここでが書き終わる。
   PU;    //ペンを上げる。

実際に書けた文字

ロボット

「台」という文字のムの部分のバランスが悪くなってしまった。

考察

ロボット

書いた文字を見てみると、写真の赤丸の部分に線の途切れがみられる。

ロボット

これはペンとタイヤの距離を失くしきれなかったことが原因だと考えられる。

ロボットの重心を真ん中にしても後ろ重心になると旋回の角度がずれてしまい、1度旋回を失敗すると立て直すことが難しく、紙の上でタイヤを動かすと紙が折れ曲がりロボットが進まなくなってしまったり、紙との摩擦で回転の角度がずれるという予想外の問題が発生してしまった。これらのことから、書道ロボットは紙の上でなるべく旋回が少なるなるようなプログラムを作成することが良いと考えられる。また、車両にペンを固定して走行する書道ロボットは、旋回をいかに正確に行えるかが字をうまく書くための重要な要素になると考えられる。また、斜線を書くのはプリンタ型より移動型ロボットのほうが適していると思われたが、他の班の発表では、プリンタ型でも斜線がきれいに引くことが出来ていたため、旋回を行うことのないプリンタ型のロボットのほうが書道ロボットには適しているよ考えられる。 今回の課題では、自分たちで解決できた問題もあったが、予想外の問題が発生してしまい手直しが間に合わなくなってしまったので、過去の作品をもっと参考にする必要があると思った。また、プリンタ型では斜線が書けないという自分たちの思い込みですぐにプリンタ型のロボットを製作するのをあきらめてしまったので、製作するロボットについて考える時に、できるできないを考える前にどのような機能があるとロボットをうまく制御できるのかということを議論し、それを実現するために努力してみる必要があると痛感した。

発表会後の考察

先生のアドバイスを参考にして、重心の位置だけではなく重心の向きも考えてロボットを組み立て直した。後ろに取り付けたタイヤにかかる力をなるべく地面と垂直になるようにすると、改善前よりもスムーズに旋回することが出来た。力学的に考えることで問題を解決することができたので、今まで学習してきた力学の知識も有効に利用し、自分たちの考える最善のロボットを製作できるようにしていこうと思う。


添付ファイル: file38285.jpg 1件 [詳細] filekuhuu5.jpg [詳細] filesendai3.jpg [詳細] file39107.jpg [詳細] filekuhuu2.jpg [詳細] filekuhuu4.jpg [詳細] filerobo.jpg [詳細] filekuhuu3.jpg 2件 [詳細] filekuhuu1.jpg [詳細] filesendai2.jpg 1件 [詳細] filesendai.jpg 3件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-11-30 (金) 16:27:47 (15d)