2017a/Member/kiryu/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題について [#s0021a84]
課題3はコース上にあるカンをGOALの領域に積み上げるという...
#ref(./course.png,70%)
図のピンクの丸にカンが置かれており、それをGOALまで運んで...
&br;詳しくは[[課題3>http://yakushi.shinshu-u.ac.jp/roboti...
*方針 [#t398f1eb]
僕たちの班はカンを積む側とカンを集めてGOALまで運ぶ側の2...
**積む側 [#d5550744]
?-積む側は最初にロータリーからスタートして、T地点のカンを...
&br;?-bluetoothの信号が来たら、カンを積む。
&br;?-積まれたカンの一番下を掴んで持ち上げて待機
&br;以下?、?を繰り返し。
**集める側 [#f4bf7df8]
?-カンを集めてGOAL地点に届ける。
&br;?-積む側に信号を送る。
&br;以下?、?を繰り返し。
*機体について [#la04f93e]
**積む側 [#g1f48a96]
#ref(./stack_arm.jpg,left,around,20%)
カンを掴むアームは上図のようなものを制作した。
&br;モーターの回転で掴んで放す動作ができる。
&br;アームを上下させることでカンを積む動作が可能になる
#clear
&br;
#ref(./stack.jpg,left,around,25%)
上のアームを上下に動かせるようにした最終的な機体がこれ。
&br;四角形を変形させるようにしてアームを上下させている。
&br;カンを積ときにアームを水平ンに保つため、この機構を採...
&br;モータでアームを上下させるが、そのままでは回らなかっ...
&br;アームを下に下げ切ったときに前につんのめってしまった...
#clear
**集める側 [#sb42d88e]
#ref(./collect.jpg,left,around,25%)
サンプルの機体をベースにして制作した。
&br;ライントレースをながらカンをあつめるので機体前方に光...
&br;カンを保持しながら進むため、アームを取り付けた。また...
#clear
*プログラムについて [#a1a8321f]
僕は積む方のプログラムを担当した。
&br;集める方のプログラムは[[&size(18){mattu};>2017a/Membe...
&br;プログラム全文は[[&size(18){こちら};>./code]]を参照し...
**変数宣言[#w913c460]
//A・・・足回り B・・・アーム上下 C・・・アーム
#define CONN 0
#define INBOX MAILBOX3
#define ang_up 340 //持ち上げ用角度
#define ang_put 80 //カン置く角度
#define ANGLE 50 //掴む用角度
#define POWER 30 //正転
#define POWER_LEGS 40 //足回り用
#define POWER_RE -30 //逆転
一番上にどの動作にどのモータを割り当てるかを書いています。
&br;コメント文で説明できていると思うので説明は省略する。
**サブルーチンについて[#w913c460]
sub go_f(int l){ //指定距離前進
float Ang=l*2.0463; //回転角度計算
RotateMotor(OUT_A,POWER_LEGS,Ang); //前進
Off(OUT_A);
}
これについては[[&size(18){課題1};>2017a/Member/kiryu/Mis...
sub hold(){ //カンを掴む
go_f(100); //前進してカンの位置を合わせる
RotateMotor(OUT_C,POWER_RE,ANGLE); //カン掴む
}
sub stack(){ //カンを積む
go_f(170); //前進してカンの位置を合わせる
go_f(-10); //カンから離れて位置調整
RotateMotor(OUT_B,POWER_RE,ang_put); //カンを置く(積む)
}
これらはコメント文で説明できていると思うので省略
sub down_arm(){ //アームを下げる
OnFwd(OUT_B,POWER_RE);
Wait(1100);
Off(OUT_B);
}
アームを下げる関数。
&br;アームを下に1100ミリ秒下げる。ここは角度よりも時間で...
**メインタスク [#k6b91c8e]
task main(){
int msg=0;
until(BluetoothStatus(CONN)==NO_ERR); ...
go_f(-50); ...
down_arm(); //アームを下げてカンを掴む準備
while(1){
hold(); //カン掴む
OnFwd(OUT_C,POWER_RE); //保持し続ける
RotateMotor(OUT_B,50,ang_up); //持ち...
go_f(-150); //位置調整
ReceiveRemoteNumber(MAILBOX3,true,msg); //集める側か...
while(msg!=2){
ReceiveRemoteNumber(MAILBOX3,true,msg);
Wait(10);
}
stack(); //2の信号が来たら積む
Off(OUT_C); //カンを保持する力を抜く
RotateMotor(OUT_C,POWER,ANGLE); //カン離す
go_f(-100); //位置調整
down_arm(); //アームを下げて次の準備
}
}
*結果 [#d01e2c46]
実際の発表では集める側のプログラムが間に合わなかったため...
プログラムは課題?のプログラムをR地点で左折し、T地点までカ...
&br;&br;結果はカンを二つGOALまで運んだので、基本点を6点獲...
*反省・感想 [#d56d594c]
結果的には間に合わせることができなかったが、カンを積む機...
&br;時間が合わず、4人で集まって作業することができなかっ...
&br;最後で先生が言っていたように不備のないロボットを作る...
&br;今後はロボットを制作することはおそらくないだろうが、...
終了行:
#contents
*課題について [#s0021a84]
課題3はコース上にあるカンをGOALの領域に積み上げるという...
#ref(./course.png,70%)
図のピンクの丸にカンが置かれており、それをGOALまで運んで...
&br;詳しくは[[課題3>http://yakushi.shinshu-u.ac.jp/roboti...
*方針 [#t398f1eb]
僕たちの班はカンを積む側とカンを集めてGOALまで運ぶ側の2...
**積む側 [#d5550744]
?-積む側は最初にロータリーからスタートして、T地点のカンを...
&br;?-bluetoothの信号が来たら、カンを積む。
&br;?-積まれたカンの一番下を掴んで持ち上げて待機
&br;以下?、?を繰り返し。
**集める側 [#f4bf7df8]
?-カンを集めてGOAL地点に届ける。
&br;?-積む側に信号を送る。
&br;以下?、?を繰り返し。
*機体について [#la04f93e]
**積む側 [#g1f48a96]
#ref(./stack_arm.jpg,left,around,20%)
カンを掴むアームは上図のようなものを制作した。
&br;モーターの回転で掴んで放す動作ができる。
&br;アームを上下させることでカンを積む動作が可能になる
#clear
&br;
#ref(./stack.jpg,left,around,25%)
上のアームを上下に動かせるようにした最終的な機体がこれ。
&br;四角形を変形させるようにしてアームを上下させている。
&br;カンを積ときにアームを水平ンに保つため、この機構を採...
&br;モータでアームを上下させるが、そのままでは回らなかっ...
&br;アームを下に下げ切ったときに前につんのめってしまった...
#clear
**集める側 [#sb42d88e]
#ref(./collect.jpg,left,around,25%)
サンプルの機体をベースにして制作した。
&br;ライントレースをながらカンをあつめるので機体前方に光...
&br;カンを保持しながら進むため、アームを取り付けた。また...
#clear
*プログラムについて [#a1a8321f]
僕は積む方のプログラムを担当した。
&br;集める方のプログラムは[[&size(18){mattu};>2017a/Membe...
&br;プログラム全文は[[&size(18){こちら};>./code]]を参照し...
**変数宣言[#w913c460]
//A・・・足回り B・・・アーム上下 C・・・アーム
#define CONN 0
#define INBOX MAILBOX3
#define ang_up 340 //持ち上げ用角度
#define ang_put 80 //カン置く角度
#define ANGLE 50 //掴む用角度
#define POWER 30 //正転
#define POWER_LEGS 40 //足回り用
#define POWER_RE -30 //逆転
一番上にどの動作にどのモータを割り当てるかを書いています。
&br;コメント文で説明できていると思うので説明は省略する。
**サブルーチンについて[#w913c460]
sub go_f(int l){ //指定距離前進
float Ang=l*2.0463; //回転角度計算
RotateMotor(OUT_A,POWER_LEGS,Ang); //前進
Off(OUT_A);
}
これについては[[&size(18){課題1};>2017a/Member/kiryu/Mis...
sub hold(){ //カンを掴む
go_f(100); //前進してカンの位置を合わせる
RotateMotor(OUT_C,POWER_RE,ANGLE); //カン掴む
}
sub stack(){ //カンを積む
go_f(170); //前進してカンの位置を合わせる
go_f(-10); //カンから離れて位置調整
RotateMotor(OUT_B,POWER_RE,ang_put); //カンを置く(積む)
}
これらはコメント文で説明できていると思うので省略
sub down_arm(){ //アームを下げる
OnFwd(OUT_B,POWER_RE);
Wait(1100);
Off(OUT_B);
}
アームを下げる関数。
&br;アームを下に1100ミリ秒下げる。ここは角度よりも時間で...
**メインタスク [#k6b91c8e]
task main(){
int msg=0;
until(BluetoothStatus(CONN)==NO_ERR); ...
go_f(-50); ...
down_arm(); //アームを下げてカンを掴む準備
while(1){
hold(); //カン掴む
OnFwd(OUT_C,POWER_RE); //保持し続ける
RotateMotor(OUT_B,50,ang_up); //持ち...
go_f(-150); //位置調整
ReceiveRemoteNumber(MAILBOX3,true,msg); //集める側か...
while(msg!=2){
ReceiveRemoteNumber(MAILBOX3,true,msg);
Wait(10);
}
stack(); //2の信号が来たら積む
Off(OUT_C); //カンを保持する力を抜く
RotateMotor(OUT_C,POWER,ANGLE); //カン離す
go_f(-100); //位置調整
down_arm(); //アームを下げて次の準備
}
}
*結果 [#d01e2c46]
実際の発表では集める側のプログラムが間に合わなかったため...
プログラムは課題?のプログラムをR地点で左折し、T地点までカ...
&br;&br;結果はカンを二つGOALまで運んだので、基本点を6点獲...
*反省・感想 [#d56d594c]
結果的には間に合わせることができなかったが、カンを積む機...
&br;時間が合わず、4人で集まって作業することができなかっ...
&br;最後で先生が言っていたように不備のないロボットを作る...
&br;今後はロボットを制作することはおそらくないだろうが、...
ページ名: