2017b/Member/smith/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*課題1「書道ロボットの作成」レポート [#o5bd7aa3]
#contents
**1 ロボット [#m49b12b9]
***本体の概要 [#p6fbb454]
#ref(2017b/Member/smith/Mission1/kadai1-1.JPG,50%,作成し...
・このロボットは、掲載ガイドにあるモータ2つで4輪のタイ...
***ペンの動作 [#jb4f7c84]
#ref(2017b/Member/smith/Mission1/kadai1-5.jpg,50%,ペンの...
・ペンは、図のように書くときにアームが下がり、書かないと...
***ペンの軌跡の補正 [#yd61123c]
&ref(2017b/Member/smith/Mission1/kadai1-6.jpg,50%,ロボッ...
&ref(2017b/Member/smith/Mission1/kadai1-7.jpg,50%,ロボッ...
&ref(2017b/Member/smith/Mission1/1-8.jpg,50%,ペンの軌跡);
&ref(2017b/Member/smith/Mission1/kadai1-9.jpg,50%,補正方...
・上図のロボットの軌跡を赤線、ペンの軌跡を青線とすると、...
***書く漢字の単純化 [#f0e7f061]
#ref(2017b/Member/smith/Mission1/kadai1-10.jpg,50%,単位);
・書く文字を単純化するために、上図のように長さの基準を作...
**2 プログラミング [#u9df1c12]
***基本動作 [#v2ecc7c8]
・まず、動作の基礎となる本体の前進、後退、右・左折、ペン...
#define F 80 //文字の交差でペンの描写が直角になるように...
#define B 90 //文字の交差でペンの描写が直角になるように...
#define W 95 //直角に曲がる時間
#define right OnFwd(OUT_AC);Wait(F);Off(OUT_AC);OnFwd(OU...
#define left OnFwd(OUT_AC);Wait(F);Off(OUT_AC);OnFwd(OUT...
#define straight(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC); /...
#define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC); //後...
#define up OnFwd(OUT_B); //ペンを上げるプログラム
#define down OnRev(OUT_B); //ペンを下げるプログラム
・1〜3行目の数値は上から、ペンの補正のために本体を余分に...
・4,5行目は、本体が右・左折するプログラムで、それぞれペン...
・6,7行目は、本体が前進・後退するプログラムでtには進むま...
・8,9行目は、ペンの上げ下げをするプログラムである。ペンを...
***サブルーチン「上」 [#z2154ed9]
・つぎに、実際に文字を書くプログラムを組んだ。2文字を1文...
sub kami()
{
down; //手順1はじめ
straight(30); //ペンを下げて0.3秒間前進、その後ペン...
up; //手順1おわり
left; //手順2はじめ
down; //左折してペン下げし、0.5秒待った後に0.3秒間直進
Wait(50);
straight(30); //手順2おわり
up; //手順3はじめ
back(30); //ペンを上げて0.3秒間後退した後右折
right; //手順3おわり
down; //手順4はじめ
Wait(50); //ペンを下げて0.5秒間待った後に0.3秒間前進
straight(30); //手順41おわり
up; //手順5はじめ
left; //ペンを上げ左折した後0.3秒間後退
back(30); //手順5おわり
down; //手順6はじめ
Wait(50); //ペンを下げて0.5秒間待った後に0.6秒間前進
straight(60); //手順6おわり
}
#ref(2017b/Member/smith/Mission1/kadai1-2.jpg,50%,「上」...
・「上」の書く順番は、
1、ペンを下げ、直進し、ペンを上げる。
2、左折し、ペンを下げて直進する。
3、ペンを上げ後退し、右折する。
4、ペンを下げて直進する。
5、ぺンを上げ左折し、後退する。
6、ペンを下げて直進する。
となるようにしている。(上の図を参考に)
***サブルーチン「町」 [#he1694f1]
・2文字目の「町」はこのように組んだ。
sub mati()
{
straight(15); //手順1 メインタスクによりペンが下が...
up; //手順2はじめ
left; //左折してペン下げした後に0.5秒間待って0.45秒...
down;
Wait(50);
straight(45); //手順2おわり
up; //手順3はじめ
left; //ペン上げして左折した後0.3秒間後退
back(30); //手順3おわり
down; //手順4はじめ
Wait(50); //ペン下げして0.5秒間待った後0.9秒間前進
straight(90); //手順4おわり
up; //手順5はじめ
back(15); //ペン上げして0.15秒間後退した後右折
right; //手順5おわり
back(15); //手順6 0.15秒間後退
down; //手順7はじめ
Wait(50); //ペン下げして0.5秒間待った後0.3秒間前進
straight(30); //手順7おわり
up; //手順8はじめ
left; //ペン上げして左折した後0.15秒間後退
back(15); //手順8おわり
down; //手順9はじめ
Wait(50); //ペン下げして0.5秒間待つ
repeat(4) { //0.3秒間前進してペン上げした後左折し、...
straight(30);
up;
left;
down;
Wait(50); //手順9おわり
}
}
#ref(2017b/Member/smith/Mission1/kadai1-3.jpg,50%,「町」...
・「町」の書く順番は
1、「上」を書いたあとにペンを上げ、延長上を前進したあと...
2、ペンを上げ左折し、ペンを下げて前進する。
3、ぺンを上げ左折し、そのまま後退する。
4、ぺンを下げ前進する。
5、ぺンを上げ後退し、右折する。
6、そのまま後退する。
7、ペンを下げ前進する。
8、ペンを上げ左折し、後退する。
9〜12、ペンを下げ前進し、ペンを上げ左折する行動を4回...
となるようにしている。(「上」と同様、上の図を参考)
***メインタスク [#ad17dc20]
・そして、2つのサブルーチンをメインで合体させる。
task main()
{
kami(); //「上」のサブルーチン
up; //ペンを上げて0.6秒間前進
straight(60);
down; //ペンを下げて0.5秒間待つ
Wait(50);
mati();//「町」のサブルーチン
Off(OUT_B); //本体の停止
}
これが今回作ったプログラムである。
**3、実行結果と課題 [#j13158fe]
・上記のように作ったロボットを実行した結果がこれである。
#ref(2017b/Member/smith/Mission1/kadai1-4.JPG,50%,実行結果)
・1で書いたように動かす度に補正値が変動してしまい、その...
終了行:
*課題1「書道ロボットの作成」レポート [#o5bd7aa3]
#contents
**1 ロボット [#m49b12b9]
***本体の概要 [#p6fbb454]
#ref(2017b/Member/smith/Mission1/kadai1-1.JPG,50%,作成し...
・このロボットは、掲載ガイドにあるモータ2つで4輪のタイ...
***ペンの動作 [#jb4f7c84]
#ref(2017b/Member/smith/Mission1/kadai1-5.jpg,50%,ペンの...
・ペンは、図のように書くときにアームが下がり、書かないと...
***ペンの軌跡の補正 [#yd61123c]
&ref(2017b/Member/smith/Mission1/kadai1-6.jpg,50%,ロボッ...
&ref(2017b/Member/smith/Mission1/kadai1-7.jpg,50%,ロボッ...
&ref(2017b/Member/smith/Mission1/1-8.jpg,50%,ペンの軌跡);
&ref(2017b/Member/smith/Mission1/kadai1-9.jpg,50%,補正方...
・上図のロボットの軌跡を赤線、ペンの軌跡を青線とすると、...
***書く漢字の単純化 [#f0e7f061]
#ref(2017b/Member/smith/Mission1/kadai1-10.jpg,50%,単位);
・書く文字を単純化するために、上図のように長さの基準を作...
**2 プログラミング [#u9df1c12]
***基本動作 [#v2ecc7c8]
・まず、動作の基礎となる本体の前進、後退、右・左折、ペン...
#define F 80 //文字の交差でペンの描写が直角になるように...
#define B 90 //文字の交差でペンの描写が直角になるように...
#define W 95 //直角に曲がる時間
#define right OnFwd(OUT_AC);Wait(F);Off(OUT_AC);OnFwd(OU...
#define left OnFwd(OUT_AC);Wait(F);Off(OUT_AC);OnFwd(OUT...
#define straight(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC); /...
#define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC); //後...
#define up OnFwd(OUT_B); //ペンを上げるプログラム
#define down OnRev(OUT_B); //ペンを下げるプログラム
・1〜3行目の数値は上から、ペンの補正のために本体を余分に...
・4,5行目は、本体が右・左折するプログラムで、それぞれペン...
・6,7行目は、本体が前進・後退するプログラムでtには進むま...
・8,9行目は、ペンの上げ下げをするプログラムである。ペンを...
***サブルーチン「上」 [#z2154ed9]
・つぎに、実際に文字を書くプログラムを組んだ。2文字を1文...
sub kami()
{
down; //手順1はじめ
straight(30); //ペンを下げて0.3秒間前進、その後ペン...
up; //手順1おわり
left; //手順2はじめ
down; //左折してペン下げし、0.5秒待った後に0.3秒間直進
Wait(50);
straight(30); //手順2おわり
up; //手順3はじめ
back(30); //ペンを上げて0.3秒間後退した後右折
right; //手順3おわり
down; //手順4はじめ
Wait(50); //ペンを下げて0.5秒間待った後に0.3秒間前進
straight(30); //手順41おわり
up; //手順5はじめ
left; //ペンを上げ左折した後0.3秒間後退
back(30); //手順5おわり
down; //手順6はじめ
Wait(50); //ペンを下げて0.5秒間待った後に0.6秒間前進
straight(60); //手順6おわり
}
#ref(2017b/Member/smith/Mission1/kadai1-2.jpg,50%,「上」...
・「上」の書く順番は、
1、ペンを下げ、直進し、ペンを上げる。
2、左折し、ペンを下げて直進する。
3、ペンを上げ後退し、右折する。
4、ペンを下げて直進する。
5、ぺンを上げ左折し、後退する。
6、ペンを下げて直進する。
となるようにしている。(上の図を参考に)
***サブルーチン「町」 [#he1694f1]
・2文字目の「町」はこのように組んだ。
sub mati()
{
straight(15); //手順1 メインタスクによりペンが下が...
up; //手順2はじめ
left; //左折してペン下げした後に0.5秒間待って0.45秒...
down;
Wait(50);
straight(45); //手順2おわり
up; //手順3はじめ
left; //ペン上げして左折した後0.3秒間後退
back(30); //手順3おわり
down; //手順4はじめ
Wait(50); //ペン下げして0.5秒間待った後0.9秒間前進
straight(90); //手順4おわり
up; //手順5はじめ
back(15); //ペン上げして0.15秒間後退した後右折
right; //手順5おわり
back(15); //手順6 0.15秒間後退
down; //手順7はじめ
Wait(50); //ペン下げして0.5秒間待った後0.3秒間前進
straight(30); //手順7おわり
up; //手順8はじめ
left; //ペン上げして左折した後0.15秒間後退
back(15); //手順8おわり
down; //手順9はじめ
Wait(50); //ペン下げして0.5秒間待つ
repeat(4) { //0.3秒間前進してペン上げした後左折し、...
straight(30);
up;
left;
down;
Wait(50); //手順9おわり
}
}
#ref(2017b/Member/smith/Mission1/kadai1-3.jpg,50%,「町」...
・「町」の書く順番は
1、「上」を書いたあとにペンを上げ、延長上を前進したあと...
2、ペンを上げ左折し、ペンを下げて前進する。
3、ぺンを上げ左折し、そのまま後退する。
4、ぺンを下げ前進する。
5、ぺンを上げ後退し、右折する。
6、そのまま後退する。
7、ペンを下げ前進する。
8、ペンを上げ左折し、後退する。
9〜12、ペンを下げ前進し、ペンを上げ左折する行動を4回...
となるようにしている。(「上」と同様、上の図を参考)
***メインタスク [#ad17dc20]
・そして、2つのサブルーチンをメインで合体させる。
task main()
{
kami(); //「上」のサブルーチン
up; //ペンを上げて0.6秒間前進
straight(60);
down; //ペンを下げて0.5秒間待つ
Wait(50);
mati();//「町」のサブルーチン
Off(OUT_B); //本体の停止
}
これが今回作ったプログラムである。
**3、実行結果と課題 [#j13158fe]
・上記のように作ったロボットを実行した結果がこれである。
#ref(2017b/Member/smith/Mission1/kadai1-4.JPG,50%,実行結果)
・1で書いたように動かす度に補正値が変動してしまい、その...
ページ名: