2015b/Member/ugwis/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* 目次 [#id9032f5]
#contents
* 追記 [#s8d95e47]
** 12月28日・29日 [#sd4aa10a]
図の追加(力の関係とギアの解説二枚)と、文章の一部の追加...
* 課題の説明 [#hb9fc5e3]
[[課題1:書道ロボット>2015b/Mission1]]
> 各自の出身地または氏名の中の一文字をA4用紙の中に書きな...
* 実際に書いた字 [#s9bdc04a]
#ref(2015b/Member/ugwis/Mission1/kitamura.jpg,50%)
* ロボット本体 [#rdae30fd]
書道ロボットにどのような性能が必要か二人で考えたところ、...
そこで、製作方針として
- 線を書いている時にバランスを崩さないように本体を大きく...
- 線が擦れないようにギアを組み合わせてゆっくり動かす
を念頭に置き、ロボットを製作しました。
#ref(2015b/Member/ugwis/Mission1/Robot.jpg,50%)
プリンターのように紙を巻き上げて書くようなロボットを基に...
そのままのロボットでは紙が宙に浮いていて線が描けないこと...
** 本体を大きく作る [#h036a119]
回転して線を描くタイプのロボットの場合は小さく小回りの利...
タイヤの幅を大きくすることで、筆が左右に動いても不安定に...
また、コントローラ側の重量が若干重いので、タイヤを5つ装着...
** ゆっくり動かす [#hc49faf6]
モーターの動きは筆を動かすスピードとしては速すぎます。そ...
その力はラックへ伝えて筆を左右に動かしたり、タイヤに伝え...
&ref(2015b/Member/ugwis/Mission1/model_before.jpg,50%);
&ref(2015b/Member/ugwis/Mission1/model.png,50%);
これはある角度から見た本体(左)と同じ角度から見た歯車の...
** その他 [#ad2d10fb]
プログラムの調整を何度も行うことが予想されたので、終了時...
#ref(2015b/Member/ugwis/Mission1/TOUCH_SENSOR.jpg,50%)
* プログラム [#n86ff36f]
単調なプログラムが続くので、特にこだわった部分だけを書き...
全体のコードは添付ファイルを見てください
&ref(kita.nqc);
&ref(mura.nqc);
** 共通部分 [#v700232f]
『北』と『村』という字は別々のプログラムで書きましたが、...
*** 筆を右に動かしながら下げる [#pa6fbcf7]
書道の経験からですが、筆画の初めは斜めに入ると字全体が綺...
今回の書道ロボットでもこのテクニックを用いています。
#define DOWN SetPower(OUT_B,10);fwd(OUT_A,40);OnRev(OUT_...
最後のWaitは、筆を下げた直後に次の動作に入ると字がブレて...
*** 筆を上げる [#debf1c08]
#define UP SetPower(OUT_B,10);OnRev(OUT_B);Wait(50);Off(...
*** 後ろに下がりながら筆を上げる [#o195e1d8]
ロボットの特性上、筆を上げるときに前にはねることがありま...
#define SUP SetPower(OUT_B,10);OnFwd(OUT_C);OnRev(OUT_B)...
*** 上下左右の力と移動時間を指定して動かす [#qe124ee8]
これが今回のプログラムの肝になります。授業では触れていま...
モーターの動き続ける速度は力の強さにはほとんど関係ありま...
&ref(2015b/Member/ugwis/Mission1/low_power.png,50%);
&ref(2015b/Member/ugwis/Mission1/high_power.png,50%);
このことより、0.01秒ごとに移動する量は実は異なっています。
これを利用して0.01秒ごとに動く→止まるを繰り返すことによっ...
void move(int lx, int ly, int time)
{
/* ~~省略~~ */
SetPower(OUT_A,x);
SetPower(OUT_C,y);
for(i=0;i<time;i++){
if(lx>0){
OnRev(OUT_A);
}
if(lx<0){
OnFwd(OUT_A);
}
if(ly>0){
OnFwd(OUT_C);
}
if(ly<0){
OnRev(OUT_C);
}
Wait(1);
Off(OUT_AC);
}
/* ~~省略~~ */
}
** 『北』の字を書く [#h05a121a]
五画目について
task main ()
{
/* ~~省略~~ */
/* 五画目 */
DOWN;
move(0,10,110);
move(1,9,4);
move(3,7,4);
move(5,5,4);
move(7,3,4);
move(9,1,4);
move(10,-1,130);
move(0,-10,30);
UP;
/* ~~省略~~ */
/* 筆を上げて右の所定の位置に戻る */
SetSensor(SENSOR_1, SENSOR_TOUCH);
OnRev(OUT_A);
until(SENSOR_1 == 1);
Off(OUT_A);
}
『北』の字で特にこだわって作ったのは、五画目のカーブの部...
カーブの部分は五回ほど筆を進める方向を変えて表現していま...
はねの部分はロボットの構造上筆を上げる時に上方向にはねて...
#ref(2015b/Member/ugwis/Mission1/kita_gokakume.jpg,50%)
** 『村』の字を書く [#l2429489]
三画目について
task main ()
{
/* ~~省略~~ */
/* 三角目 */
DOWN;
move(-2,10,80);
move(-2,5,60);
SUP;
/* ~~省略~~ */
/* 筆を上げて右の所定の位置に戻る */
SetSensor(SENSOR_1, SENSOR_TOUCH);
OnRev(OUT_A);
until(SENSOR_1 == 1);
Off(OUT_A);
}
三画目のはらいの部分にSUPというマクロを使用しています。こ...
#ref(2015b/Member/ugwis/Mission1/harai.jpg,50%)
* 反省 [#nb620c7f]
** ロボットに関して [#sb7e48ca]
結果としては製作する方針とあったロボットが出来たと認識し...
** プログラムに関して [#i61485d5]
共通部分のmoveという関数は、『北村』という斜めの字の角度...
それとSetPowerを多用していますが、最大が7であることに気づ...
ロボットを回転できるようにすればプログラムがもっとシンプ...
** 全体として [#g8c024ec]
出来るだけ効率よくロボットの製作、プログラムの作成を行っ...
今回の課題は二人で共同のロボットを作るということで、なか...
次の課題はもっと余裕を持って行いたいです。
終了行:
* 目次 [#id9032f5]
#contents
* 追記 [#s8d95e47]
** 12月28日・29日 [#sd4aa10a]
図の追加(力の関係とギアの解説二枚)と、文章の一部の追加...
* 課題の説明 [#hb9fc5e3]
[[課題1:書道ロボット>2015b/Mission1]]
> 各自の出身地または氏名の中の一文字をA4用紙の中に書きな...
* 実際に書いた字 [#s9bdc04a]
#ref(2015b/Member/ugwis/Mission1/kitamura.jpg,50%)
* ロボット本体 [#rdae30fd]
書道ロボットにどのような性能が必要か二人で考えたところ、...
そこで、製作方針として
- 線を書いている時にバランスを崩さないように本体を大きく...
- 線が擦れないようにギアを組み合わせてゆっくり動かす
を念頭に置き、ロボットを製作しました。
#ref(2015b/Member/ugwis/Mission1/Robot.jpg,50%)
プリンターのように紙を巻き上げて書くようなロボットを基に...
そのままのロボットでは紙が宙に浮いていて線が描けないこと...
** 本体を大きく作る [#h036a119]
回転して線を描くタイプのロボットの場合は小さく小回りの利...
タイヤの幅を大きくすることで、筆が左右に動いても不安定に...
また、コントローラ側の重量が若干重いので、タイヤを5つ装着...
** ゆっくり動かす [#hc49faf6]
モーターの動きは筆を動かすスピードとしては速すぎます。そ...
その力はラックへ伝えて筆を左右に動かしたり、タイヤに伝え...
&ref(2015b/Member/ugwis/Mission1/model_before.jpg,50%);
&ref(2015b/Member/ugwis/Mission1/model.png,50%);
これはある角度から見た本体(左)と同じ角度から見た歯車の...
** その他 [#ad2d10fb]
プログラムの調整を何度も行うことが予想されたので、終了時...
#ref(2015b/Member/ugwis/Mission1/TOUCH_SENSOR.jpg,50%)
* プログラム [#n86ff36f]
単調なプログラムが続くので、特にこだわった部分だけを書き...
全体のコードは添付ファイルを見てください
&ref(kita.nqc);
&ref(mura.nqc);
** 共通部分 [#v700232f]
『北』と『村』という字は別々のプログラムで書きましたが、...
*** 筆を右に動かしながら下げる [#pa6fbcf7]
書道の経験からですが、筆画の初めは斜めに入ると字全体が綺...
今回の書道ロボットでもこのテクニックを用いています。
#define DOWN SetPower(OUT_B,10);fwd(OUT_A,40);OnRev(OUT_...
最後のWaitは、筆を下げた直後に次の動作に入ると字がブレて...
*** 筆を上げる [#debf1c08]
#define UP SetPower(OUT_B,10);OnRev(OUT_B);Wait(50);Off(...
*** 後ろに下がりながら筆を上げる [#o195e1d8]
ロボットの特性上、筆を上げるときに前にはねることがありま...
#define SUP SetPower(OUT_B,10);OnFwd(OUT_C);OnRev(OUT_B)...
*** 上下左右の力と移動時間を指定して動かす [#qe124ee8]
これが今回のプログラムの肝になります。授業では触れていま...
モーターの動き続ける速度は力の強さにはほとんど関係ありま...
&ref(2015b/Member/ugwis/Mission1/low_power.png,50%);
&ref(2015b/Member/ugwis/Mission1/high_power.png,50%);
このことより、0.01秒ごとに移動する量は実は異なっています。
これを利用して0.01秒ごとに動く→止まるを繰り返すことによっ...
void move(int lx, int ly, int time)
{
/* ~~省略~~ */
SetPower(OUT_A,x);
SetPower(OUT_C,y);
for(i=0;i<time;i++){
if(lx>0){
OnRev(OUT_A);
}
if(lx<0){
OnFwd(OUT_A);
}
if(ly>0){
OnFwd(OUT_C);
}
if(ly<0){
OnRev(OUT_C);
}
Wait(1);
Off(OUT_AC);
}
/* ~~省略~~ */
}
** 『北』の字を書く [#h05a121a]
五画目について
task main ()
{
/* ~~省略~~ */
/* 五画目 */
DOWN;
move(0,10,110);
move(1,9,4);
move(3,7,4);
move(5,5,4);
move(7,3,4);
move(9,1,4);
move(10,-1,130);
move(0,-10,30);
UP;
/* ~~省略~~ */
/* 筆を上げて右の所定の位置に戻る */
SetSensor(SENSOR_1, SENSOR_TOUCH);
OnRev(OUT_A);
until(SENSOR_1 == 1);
Off(OUT_A);
}
『北』の字で特にこだわって作ったのは、五画目のカーブの部...
カーブの部分は五回ほど筆を進める方向を変えて表現していま...
はねの部分はロボットの構造上筆を上げる時に上方向にはねて...
#ref(2015b/Member/ugwis/Mission1/kita_gokakume.jpg,50%)
** 『村』の字を書く [#l2429489]
三画目について
task main ()
{
/* ~~省略~~ */
/* 三角目 */
DOWN;
move(-2,10,80);
move(-2,5,60);
SUP;
/* ~~省略~~ */
/* 筆を上げて右の所定の位置に戻る */
SetSensor(SENSOR_1, SENSOR_TOUCH);
OnRev(OUT_A);
until(SENSOR_1 == 1);
Off(OUT_A);
}
三画目のはらいの部分にSUPというマクロを使用しています。こ...
#ref(2015b/Member/ugwis/Mission1/harai.jpg,50%)
* 反省 [#nb620c7f]
** ロボットに関して [#sb7e48ca]
結果としては製作する方針とあったロボットが出来たと認識し...
** プログラムに関して [#i61485d5]
共通部分のmoveという関数は、『北村』という斜めの字の角度...
それとSetPowerを多用していますが、最大が7であることに気づ...
ロボットを回転できるようにすればプログラムがもっとシンプ...
** 全体として [#g8c024ec]
出来るだけ効率よくロボットの製作、プログラムの作成を行っ...
今回の課題は二人で共同のロボットを作るということで、なか...
次の課題はもっと余裕を持って行いたいです。
ページ名: