2019b/Member/Nishi/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019b/Member]]
目次
#contents
*ロボット [#j6ac264d]
**ロボットの説明 [#sf1a50ae]
#ref(./IMG_3668a.jpg,10%);
モーターでタイヤを動かし、ペンを搭載したロボット全体を...
#ref(./IMG_3656a.jpg,6%);
ペンは2つのタイヤの間にあり、輪ゴムで固定されている。
**ロボットの特徴 [#pe246614]
***ペン先が2つのタイヤの中心にくるようにした [#sb609469]
最初、ペンの接地地点を前輪の前にくるようにした。しかし...
***重心をなるべく前輪の方に寄せた [#h4de07ff]
後輪は小さなタイヤ1つとなっているため、後輪の方に重心...
***前輪のタイヤ幅を調整した [#r818c26e]
タイヤの間にペンが入るくらいのスペースがあり、かつ片方...
*プログラム [#i8ba8e2e]
**プログラム全体 [#o9c982b0]
#define SPEED 30
float GetAngle(float d)
{
const float diameter = 5.45;
const float pi=3.1415;
const float distance=12.5;
float ang = (distance*d)/diameter;
return ang;
}
sub fwd(int t)
{
RotateMotorEx(OUT_BC,SPEED,t,0,false,true);
}
sub fwd_B(int b)
{
RotateMotor(OUT_B,SPEED,b);
}
sub fwd_C(int c)
{
RotateMotor(OUT_C,SPEED,c);
}
sub turn_right(int r)
{
int angle = GetAngle(r);
RotateMotorEx(OUT_BC,25,angle,100,true,true);
}
sub turn_left(int l)
{
int angle = GetAngle(l);
RotateMotorEx(OUT_BC,25,angle,-100,true,true);
}
sub up()
{
RotateMotor(OUT_A,15,30);
}
sub down()
{
RotateMotor(OUT_A,-10,30);
}
task main()
{
up();
down();
fwd(180);
fwd_B(810);
fwd(180);
fwd_B(427);
fwd(45);
fwd_B(427);
up();
turn_left(90.0);
fwd(30);
down();
fwd(270);
up();
turn_right(105.0);
fwd(15);
turn_right(110.0);
fwd(54);
down();
fwd(54);
up();
fwd(54);
down();
fwd(54);
up();
fwd(54);
turn_left(100.0);
fwd(220);
turn_left(90.0);
fwd(100);
down();
fwd(90);
fwd_B(60);
up();
turn_left(100.0);
fwd(100);
down();
fwd_C(427);
}
**プログラムの説明(定義、関数など) [#ebf904c5]
***角度の計算 [#td7b3367]
float GetAngle(float d)
{
const float diameter = 5.45;
const float pi=3.1415;
const float distance=12.5;
float ang = (distance*d)/diameter;
return ang;
}
括弧内に方向転換したい角度を入れ、タイヤの回転角度を計...
***直進 [#jd6cab58]
sub fwd(int t)
{
RotateMotorEx(OUT_BC,SPEED,t,0,false,true);
}
括弧内にタイヤの回転角度を入れ、その分直進する。
***左旋回 [#a9a8b694]
sub fwd_B(int b)
{
RotateMotor(OUT_B,SPEED,b);
}
括弧内にタイヤの回転角度を入れ、左に曲がる。
***右旋回 [#ubac5920]
sub fwd_C(int c)
{
RotateMotor(OUT_C,SPEED,c);
}
左旋回のプログラムと同様に、タイヤの回転角度を入力し、...
***右回転 [#s0f83052]
sub turn_right(int r)
{
int angle = GetAngle(r);
RotateMotorEx(OUT_BC,25,angle,100,true,true);
}
括弧内に方向転換した角度を入れ、右に回る。計算して出し...
***左回転 [#o8621ee8]
sub turn_left(int l)
{
int angle = GetAngle(l);
RotateMotorEx(OUT_BC,25,angle,-100,true,true);
}
右回転のプログラムと同様に、方向転換した角度を入力し、...
***ペンの上げ(up)下げ(down) [#j0521397]
sub up()
{
RotateMotor(OUT_A,15,30);
}
sub down()
{
RotateMotor(OUT_A,-10,30);
}
ペンを上げてペン先を紙面から浮かせるプログラムと、ペンを...
**プログラムの説明(task main) [#x6451f12]
***輪郭 [#e2281577]
up();
down();
fwd(180);
fwd_B(810);
fwd(180);
fwd_B(427);
fwd(45);
fwd_B(427);
up();
直進と左旋回で輪郭を描いた。顎よりも頭頂部の方を横に長...
***前髪 [#x6e0bd1e]
turn_left(90.0);
fwd(30);
down();
fwd(270);
up();
輪郭を描き終わったとき、ロボットは前髪を描くところの近...
***目 [#h758677f]
turn_right(105.0);
fwd(15);
turn_right(110.0);
fwd(54);
down();
fwd(54);
up();
fwd(54);
down();
fwd(54);
up();
目を描くために位置と向きを調整し、直進しながらペンを上...
***口 [#d1ba2874]
fwd(54);
turn_left(100.0);
fwd(220);
turn_left(90.0);
fwd(100);
down();
fwd(90);
fwd_B(60);
up();
位置と向きを調整し、口を描いた。口がただの棒にならない...
***鼻 [#d098b61c]
turn_left(100.0);
fwd(100);
down();
fwd_C(427);
鼻についても口と同様に、微々たるカーブをつけた。鼻は顔...
**プログラムの特徴 [#e6929075]
***サブルーチンを多用した [#hfb72c3a]
サブルーチンでいくつかの一連の命令をまとめ、task mainの...
***ロボットの移動のスピードは少し遅めにした [#r38a2602]
スピードが速いとロボットが重いせいで曲がるときにバラン...
***タイヤを回すためのプログラムでOnFwdではなくRotateMotor...
OnFwdだと電池残量に影響されたり、進む距離の調整に手間が...
*反省・改善点 [#o5e4b511]
- バランスのために重心を前輪の方に寄せたが、後ろのタイヤ...
- ロボットが重いせいか方向転換する際にタイヤが浮き、思っ...
- ロボットが縦に長く、かつ比較的重量のあるNXT本体が上の方...
- どこからどこまでが何のプログラムかが分かりにくくなって...
*感想 [#rcb67273]
#ref(./IMG_3673a.jpg,15%);
今回のお絵かきロボットの作成に想像以上の時間がかかり驚...
終了行:
[[2019b/Member]]
目次
#contents
*ロボット [#j6ac264d]
**ロボットの説明 [#sf1a50ae]
#ref(./IMG_3668a.jpg,10%);
モーターでタイヤを動かし、ペンを搭載したロボット全体を...
#ref(./IMG_3656a.jpg,6%);
ペンは2つのタイヤの間にあり、輪ゴムで固定されている。
**ロボットの特徴 [#pe246614]
***ペン先が2つのタイヤの中心にくるようにした [#sb609469]
最初、ペンの接地地点を前輪の前にくるようにした。しかし...
***重心をなるべく前輪の方に寄せた [#h4de07ff]
後輪は小さなタイヤ1つとなっているため、後輪の方に重心...
***前輪のタイヤ幅を調整した [#r818c26e]
タイヤの間にペンが入るくらいのスペースがあり、かつ片方...
*プログラム [#i8ba8e2e]
**プログラム全体 [#o9c982b0]
#define SPEED 30
float GetAngle(float d)
{
const float diameter = 5.45;
const float pi=3.1415;
const float distance=12.5;
float ang = (distance*d)/diameter;
return ang;
}
sub fwd(int t)
{
RotateMotorEx(OUT_BC,SPEED,t,0,false,true);
}
sub fwd_B(int b)
{
RotateMotor(OUT_B,SPEED,b);
}
sub fwd_C(int c)
{
RotateMotor(OUT_C,SPEED,c);
}
sub turn_right(int r)
{
int angle = GetAngle(r);
RotateMotorEx(OUT_BC,25,angle,100,true,true);
}
sub turn_left(int l)
{
int angle = GetAngle(l);
RotateMotorEx(OUT_BC,25,angle,-100,true,true);
}
sub up()
{
RotateMotor(OUT_A,15,30);
}
sub down()
{
RotateMotor(OUT_A,-10,30);
}
task main()
{
up();
down();
fwd(180);
fwd_B(810);
fwd(180);
fwd_B(427);
fwd(45);
fwd_B(427);
up();
turn_left(90.0);
fwd(30);
down();
fwd(270);
up();
turn_right(105.0);
fwd(15);
turn_right(110.0);
fwd(54);
down();
fwd(54);
up();
fwd(54);
down();
fwd(54);
up();
fwd(54);
turn_left(100.0);
fwd(220);
turn_left(90.0);
fwd(100);
down();
fwd(90);
fwd_B(60);
up();
turn_left(100.0);
fwd(100);
down();
fwd_C(427);
}
**プログラムの説明(定義、関数など) [#ebf904c5]
***角度の計算 [#td7b3367]
float GetAngle(float d)
{
const float diameter = 5.45;
const float pi=3.1415;
const float distance=12.5;
float ang = (distance*d)/diameter;
return ang;
}
括弧内に方向転換したい角度を入れ、タイヤの回転角度を計...
***直進 [#jd6cab58]
sub fwd(int t)
{
RotateMotorEx(OUT_BC,SPEED,t,0,false,true);
}
括弧内にタイヤの回転角度を入れ、その分直進する。
***左旋回 [#a9a8b694]
sub fwd_B(int b)
{
RotateMotor(OUT_B,SPEED,b);
}
括弧内にタイヤの回転角度を入れ、左に曲がる。
***右旋回 [#ubac5920]
sub fwd_C(int c)
{
RotateMotor(OUT_C,SPEED,c);
}
左旋回のプログラムと同様に、タイヤの回転角度を入力し、...
***右回転 [#s0f83052]
sub turn_right(int r)
{
int angle = GetAngle(r);
RotateMotorEx(OUT_BC,25,angle,100,true,true);
}
括弧内に方向転換した角度を入れ、右に回る。計算して出し...
***左回転 [#o8621ee8]
sub turn_left(int l)
{
int angle = GetAngle(l);
RotateMotorEx(OUT_BC,25,angle,-100,true,true);
}
右回転のプログラムと同様に、方向転換した角度を入力し、...
***ペンの上げ(up)下げ(down) [#j0521397]
sub up()
{
RotateMotor(OUT_A,15,30);
}
sub down()
{
RotateMotor(OUT_A,-10,30);
}
ペンを上げてペン先を紙面から浮かせるプログラムと、ペンを...
**プログラムの説明(task main) [#x6451f12]
***輪郭 [#e2281577]
up();
down();
fwd(180);
fwd_B(810);
fwd(180);
fwd_B(427);
fwd(45);
fwd_B(427);
up();
直進と左旋回で輪郭を描いた。顎よりも頭頂部の方を横に長...
***前髪 [#x6e0bd1e]
turn_left(90.0);
fwd(30);
down();
fwd(270);
up();
輪郭を描き終わったとき、ロボットは前髪を描くところの近...
***目 [#h758677f]
turn_right(105.0);
fwd(15);
turn_right(110.0);
fwd(54);
down();
fwd(54);
up();
fwd(54);
down();
fwd(54);
up();
目を描くために位置と向きを調整し、直進しながらペンを上...
***口 [#d1ba2874]
fwd(54);
turn_left(100.0);
fwd(220);
turn_left(90.0);
fwd(100);
down();
fwd(90);
fwd_B(60);
up();
位置と向きを調整し、口を描いた。口がただの棒にならない...
***鼻 [#d098b61c]
turn_left(100.0);
fwd(100);
down();
fwd_C(427);
鼻についても口と同様に、微々たるカーブをつけた。鼻は顔...
**プログラムの特徴 [#e6929075]
***サブルーチンを多用した [#hfb72c3a]
サブルーチンでいくつかの一連の命令をまとめ、task mainの...
***ロボットの移動のスピードは少し遅めにした [#r38a2602]
スピードが速いとロボットが重いせいで曲がるときにバラン...
***タイヤを回すためのプログラムでOnFwdではなくRotateMotor...
OnFwdだと電池残量に影響されたり、進む距離の調整に手間が...
*反省・改善点 [#o5e4b511]
- バランスのために重心を前輪の方に寄せたが、後ろのタイヤ...
- ロボットが重いせいか方向転換する際にタイヤが浮き、思っ...
- ロボットが縦に長く、かつ比較的重量のあるNXT本体が上の方...
- どこからどこまでが何のプログラムかが分かりにくくなって...
*感想 [#rcb67273]
#ref(./IMG_3673a.jpg,15%);
今回のお絵かきロボットの作成に想像以上の時間がかかり驚...
ページ名: