2019b/Member/sumi/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
[[2019b/Member]]
*課題1 [#zee55005]
[[2019b/Mission1]]を参照
*ロボットの構造について [#z05652c8]
左右の前輪とペンの上げ下げをコントロールするためにそれぞ...
こちらは正面図である。
#ref(2019b/Member/sumi/Mission1/kouzou2.png,50%,ロボット前)
まず、このロボットが自走式であることを考慮し、その上で設...
た。
次にちょっとした製作者のこだわりポイントである。
#ref(2019b/Member/sumi/Mission1/kouzou.png,50%,ロボット後...
まずは、ロボットの搭乗者を余分であるのにあえてのせるこの...
*プログラミングについて [#u442d9bd]
**実際のプログラミングについて [#s2af699e]
***使ったサブルーチンと関数について [#v3eb92de]
float GetAngle(float h)
{
const float diameter = 5.45;//直径は5.45cm
const float pi=3.1415;//円周率を設定
float ang = 36/(diameter*pi)*h;動かす角度の式を設定
return ang;
}
この関数は、ロボットを指定の角度回転させるために使用しよ...
使用して”いない”。理由は以降で説明する。
float GetDegree(float d)
{
const float diameter = 5.45;//直径は5.45cm
const float pi=3.1415;円周率を設定
float deg = d/(diameter*pi)*360.0;動かす距離の式を設定
return deg;
}
この関数は、ロボットを指定の距離だけ移動させるために使用...
sub go(int l,int r,int t)
{
OnFwd(OUT_B,l);OnFwd(OUT_C,r);Wait(t);
}
このサブルーチンは、ロボットに顔の輪郭を描かせるために使...
sub vertical(int l,int r,int t)
{
OnFwd(OUT_B,l);OnFwd(OUT_C,r);Wait(t);
}
このプログラミングは上に説明したものと全く同じものである...
sub A_up()
{
RotateMotor(OUT_A,20,20);//ペン上げ
}
sub A_down()
{
RotateMotor(OUT_A,20,-20);//ペン下げ
}
このサブルーチンはペンの上げ下げに使用した。上があげるよ...
***プログラミングの全体像 [#p8d45533]
task main (){
Wait(2000);//少し待機
int a = GetDegree(5.0);
RotateMotor(OUT_BC,SPEED,a);//輪郭(顔のあごと頭をつなぐ...
Wait(2000);り
go(0,25,7000);//輪郭(頭)
int b = GetDegree(5.0);
RotateMotor(OUT_BC,SPEED,b);//輪郭(顔のあごと頭をつなぐ...
go(-1.5,25,4000);輪郭(あご)
Wait(2000);
int c = GetDegree(2.2);
RotateMotor(OUT_BC,SPEED,c)//;少し調整
A_up();//ぺん上げ
vertical(-20,20,1800);//方向の変更
A_down();//ペン下げ
int d = GetDegree(14.0);//髪の直線を描く
RotateMotor(OUT_BC,SPEED,d);
A_up();//ペン上げ
vertical(20,-20,1900);//方向調整
int e = GetDegree(2.5);
RotateMotor(OUT_BC,SPEED,e);//目の書き始めの位置に移動
Wait(2000);
vertical(20,-20,1900);//方向調整
int f = GetDegree(3.0);
RotateMotor(OUT_BC,SPEED,f);//位置の調整
A_down();//ペン下げ
int g = GetDegree(2.2);
RotateMotor(OUT_BC,SPEED,g);目一つ書く
A_up();//ペン上げ
int h = GetDegree(2.0);
RotateMotor(OUT_BC,SPEED,h);//位置の調整
A_down();//ペン下げ
int i = GetDegree(2.2);
RotateMotor(OUT_BC,SPEED,i);//残りの目を描く
A_up();ペン上げ
int j = GetDegree(3.2);
RotateMotor(OUT_BC,-SPEED,j);位置の調整
vertical(-20,20,1900);//方向調整
int k = GetDegree(2.0);
RotateMotor(OUT_BC,SPEED,k);//位置調整
A_down();//ペン下げ
int l = GetDegree(2.7);
RotateMotor(OUT_BC,SPEED,l);//鼻を描く
A_up();//ペン上げ
int m = GetDegree(3.0);
RotateMotor(OUT_BC,SPEED,m);//位置調整
vertical(20,-20,1900);//方向調整
int n = GetDegree(3.0);
RotateMotor(OUT_BC,-SPEED,n);//位置調整
A_down();//ペン下げ
int o = GetDegree(6.0);
RotateMotor(OUT_BC,SPEED,o);//口描く
A_up();//ペン上げて終わり
***工夫した点 [#b2275963]
1.大量のサブルーチンと関数を使用した
サブルーチンと関数のしようにより、プログラミングは基本的...
2.ペンの移動の速度を遅すぎず、早すぎないように設定した
上にのせているペンの上げ下げのサブルーチンは、実は遅すぎ...
20%となった。
*結果 [#paff911f]
完成したものがこれである
#ref(2019b/Member/sumi/Mission1/dekiagari.png,50%,ロボッ...
こだわったのは顔の輪郭で、発表前夜2時まで耐えて整えた。...
*道中いろいろ [#a018518e]
かなり長く説明したが、自分の当初の計画はこれとはだいぶ違...
**絵の完成形について [#o6b0e505]
正八角形の各辺の長さをいじると輪郭に近づくと考えたのでそ...
**本来のプログラミング [#s9b721a0]
先にのせたプログラミングの6倍の長さだが、ある一定の動作...
#define SPEED 15
float GetAngle(float h)//上記に同じ
{
const float diameter = 5.45;
const float pi=3.1415;
float ang = 36/(diameter*pi)*h;
return ang;
}
float GetDegree(float d)//上記のものと同型
{
const float diameter = 5.45;
const float pi=3.1415;
float deg = d/(diameter*pi)*360.0;
return deg;
}
task main (){
Wait(2000);
int a = GetDegree(5.3);//
RotateMotor(OUT_BC,SPEED,a);線を描く(輪郭を構成する直線...
Wait(2000);
int aa = GetAngle(20);
RotateMotor(OUT_A,20,aa);//ペン上げ
Wait(2000);
int aaa = GetDegree(1.55);
RotateMotor(OUT_BC,SPEED,aaa);//位置調整
Wait(2000);
int aaaa = GetAngle(42);
RotateMotorEx(OUT_BC,SPEED,aaaa,100,true,true);方向の調整
Wait(2000);
int aaaaa = GetAngle(20);
RotateMotor(OUT_A,-20,aaaaa);ペン下げ
***プログラミングの説明とそのこだわりポイント [#ibc5c57d]
GetAngleとGetDegreeについては先の説明と同様である。
****こだわりポイント其1 動作の合間にWait(2000)を組み込...
これをすることによって、どのプログラミングを修正すべきか...
****こだわりポイント其2 ずれの補正 [#z8389666]
先ほども説明しているが、RotateMotorExは自分のロボットでは...
どの部分化は説明すると int(aaa) = GetDegree(1.55) の部分...
**断念した理由 [#j031efea]
1.圧倒的な再現性の低さ
下の画像は全く同じプログラミングで描いた絵である。誓って...
#ref(2019b/Member/sumi/Mission1/magickamo.png,50%,はかな...
これはタイヤにかかる摩擦や、後輪の位置などは完全に同じに...
2.前夜の悲劇
夜の九時ごろまで発表前日も教室でプログラミングに精を出し...
#ref(2019b/Member/sumi/Mission1/owarinohajimari.png,50%,...
心が本当に折れました。もう、無理であるとここで諦めました。
*今回の反省点と次回以降に気を付けたいこと [#le495e25]
1.モーターのパワー差を考慮する。
今回ここまで苦労したのは、最初にモーターのパワー差を考慮...
2.もっと時間をとる
今回は予定の調整を行わなかったので1週間しかこの課題に対...
終了行:
目次
#contents
[[2019b/Member]]
*課題1 [#zee55005]
[[2019b/Mission1]]を参照
*ロボットの構造について [#z05652c8]
左右の前輪とペンの上げ下げをコントロールするためにそれぞ...
こちらは正面図である。
#ref(2019b/Member/sumi/Mission1/kouzou2.png,50%,ロボット前)
まず、このロボットが自走式であることを考慮し、その上で設...
た。
次にちょっとした製作者のこだわりポイントである。
#ref(2019b/Member/sumi/Mission1/kouzou.png,50%,ロボット後...
まずは、ロボットの搭乗者を余分であるのにあえてのせるこの...
*プログラミングについて [#u442d9bd]
**実際のプログラミングについて [#s2af699e]
***使ったサブルーチンと関数について [#v3eb92de]
float GetAngle(float h)
{
const float diameter = 5.45;//直径は5.45cm
const float pi=3.1415;//円周率を設定
float ang = 36/(diameter*pi)*h;動かす角度の式を設定
return ang;
}
この関数は、ロボットを指定の角度回転させるために使用しよ...
使用して”いない”。理由は以降で説明する。
float GetDegree(float d)
{
const float diameter = 5.45;//直径は5.45cm
const float pi=3.1415;円周率を設定
float deg = d/(diameter*pi)*360.0;動かす距離の式を設定
return deg;
}
この関数は、ロボットを指定の距離だけ移動させるために使用...
sub go(int l,int r,int t)
{
OnFwd(OUT_B,l);OnFwd(OUT_C,r);Wait(t);
}
このサブルーチンは、ロボットに顔の輪郭を描かせるために使...
sub vertical(int l,int r,int t)
{
OnFwd(OUT_B,l);OnFwd(OUT_C,r);Wait(t);
}
このプログラミングは上に説明したものと全く同じものである...
sub A_up()
{
RotateMotor(OUT_A,20,20);//ペン上げ
}
sub A_down()
{
RotateMotor(OUT_A,20,-20);//ペン下げ
}
このサブルーチンはペンの上げ下げに使用した。上があげるよ...
***プログラミングの全体像 [#p8d45533]
task main (){
Wait(2000);//少し待機
int a = GetDegree(5.0);
RotateMotor(OUT_BC,SPEED,a);//輪郭(顔のあごと頭をつなぐ...
Wait(2000);り
go(0,25,7000);//輪郭(頭)
int b = GetDegree(5.0);
RotateMotor(OUT_BC,SPEED,b);//輪郭(顔のあごと頭をつなぐ...
go(-1.5,25,4000);輪郭(あご)
Wait(2000);
int c = GetDegree(2.2);
RotateMotor(OUT_BC,SPEED,c)//;少し調整
A_up();//ぺん上げ
vertical(-20,20,1800);//方向の変更
A_down();//ペン下げ
int d = GetDegree(14.0);//髪の直線を描く
RotateMotor(OUT_BC,SPEED,d);
A_up();//ペン上げ
vertical(20,-20,1900);//方向調整
int e = GetDegree(2.5);
RotateMotor(OUT_BC,SPEED,e);//目の書き始めの位置に移動
Wait(2000);
vertical(20,-20,1900);//方向調整
int f = GetDegree(3.0);
RotateMotor(OUT_BC,SPEED,f);//位置の調整
A_down();//ペン下げ
int g = GetDegree(2.2);
RotateMotor(OUT_BC,SPEED,g);目一つ書く
A_up();//ペン上げ
int h = GetDegree(2.0);
RotateMotor(OUT_BC,SPEED,h);//位置の調整
A_down();//ペン下げ
int i = GetDegree(2.2);
RotateMotor(OUT_BC,SPEED,i);//残りの目を描く
A_up();ペン上げ
int j = GetDegree(3.2);
RotateMotor(OUT_BC,-SPEED,j);位置の調整
vertical(-20,20,1900);//方向調整
int k = GetDegree(2.0);
RotateMotor(OUT_BC,SPEED,k);//位置調整
A_down();//ペン下げ
int l = GetDegree(2.7);
RotateMotor(OUT_BC,SPEED,l);//鼻を描く
A_up();//ペン上げ
int m = GetDegree(3.0);
RotateMotor(OUT_BC,SPEED,m);//位置調整
vertical(20,-20,1900);//方向調整
int n = GetDegree(3.0);
RotateMotor(OUT_BC,-SPEED,n);//位置調整
A_down();//ペン下げ
int o = GetDegree(6.0);
RotateMotor(OUT_BC,SPEED,o);//口描く
A_up();//ペン上げて終わり
***工夫した点 [#b2275963]
1.大量のサブルーチンと関数を使用した
サブルーチンと関数のしようにより、プログラミングは基本的...
2.ペンの移動の速度を遅すぎず、早すぎないように設定した
上にのせているペンの上げ下げのサブルーチンは、実は遅すぎ...
20%となった。
*結果 [#paff911f]
完成したものがこれである
#ref(2019b/Member/sumi/Mission1/dekiagari.png,50%,ロボッ...
こだわったのは顔の輪郭で、発表前夜2時まで耐えて整えた。...
*道中いろいろ [#a018518e]
かなり長く説明したが、自分の当初の計画はこれとはだいぶ違...
**絵の完成形について [#o6b0e505]
正八角形の各辺の長さをいじると輪郭に近づくと考えたのでそ...
**本来のプログラミング [#s9b721a0]
先にのせたプログラミングの6倍の長さだが、ある一定の動作...
#define SPEED 15
float GetAngle(float h)//上記に同じ
{
const float diameter = 5.45;
const float pi=3.1415;
float ang = 36/(diameter*pi)*h;
return ang;
}
float GetDegree(float d)//上記のものと同型
{
const float diameter = 5.45;
const float pi=3.1415;
float deg = d/(diameter*pi)*360.0;
return deg;
}
task main (){
Wait(2000);
int a = GetDegree(5.3);//
RotateMotor(OUT_BC,SPEED,a);線を描く(輪郭を構成する直線...
Wait(2000);
int aa = GetAngle(20);
RotateMotor(OUT_A,20,aa);//ペン上げ
Wait(2000);
int aaa = GetDegree(1.55);
RotateMotor(OUT_BC,SPEED,aaa);//位置調整
Wait(2000);
int aaaa = GetAngle(42);
RotateMotorEx(OUT_BC,SPEED,aaaa,100,true,true);方向の調整
Wait(2000);
int aaaaa = GetAngle(20);
RotateMotor(OUT_A,-20,aaaaa);ペン下げ
***プログラミングの説明とそのこだわりポイント [#ibc5c57d]
GetAngleとGetDegreeについては先の説明と同様である。
****こだわりポイント其1 動作の合間にWait(2000)を組み込...
これをすることによって、どのプログラミングを修正すべきか...
****こだわりポイント其2 ずれの補正 [#z8389666]
先ほども説明しているが、RotateMotorExは自分のロボットでは...
どの部分化は説明すると int(aaa) = GetDegree(1.55) の部分...
**断念した理由 [#j031efea]
1.圧倒的な再現性の低さ
下の画像は全く同じプログラミングで描いた絵である。誓って...
#ref(2019b/Member/sumi/Mission1/magickamo.png,50%,はかな...
これはタイヤにかかる摩擦や、後輪の位置などは完全に同じに...
2.前夜の悲劇
夜の九時ごろまで発表前日も教室でプログラミングに精を出し...
#ref(2019b/Member/sumi/Mission1/owarinohajimari.png,50%,...
心が本当に折れました。もう、無理であるとここで諦めました。
*今回の反省点と次回以降に気を付けたいこと [#le495e25]
1.モーターのパワー差を考慮する。
今回ここまで苦労したのは、最初にモーターのパワー差を考慮...
2.もっと時間をとる
今回は予定の調整を行わなかったので1週間しかこの課題に対...
ページ名: