2016a/Member/Tom/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*課題 [#ba46394b]
**ルール [#vd6a8cfb]
ルールはC地点、D地点にある紙コップを交互に積み上げ、その...
ロボットはA地点B地点からスタートし、一体型の場合はどちら...
2機が通信して協力し合い、課題をいかに早くクリアするかを...
**方針 [#xe848675]
今回の課題はルール上、NXT一機につきモーターが3つという制...
一体を移動とセンサ系、もう一体をカップの積み上げという作...
流れとしてはスタート地点から近い方のカップに向かう。その...
最後にゴールにカップを置いて終了とする。
ざっくりとだが以上である。
*ハードウェアについて [#j89df8c3]
ハードは上記の方針より、以下の4つの能力が必要となる。
・カップを掴む
・カップを積み上げる
・積み上げられたカップを保持すること
・積み上げられたカップを崩すことなく下すこと
これらを満たすハードウェアとして複数の関節を持ったアーム...
それぞれの機構については以下の様になった。
**アーム部分 [#p341d057]
アーム部分はカップを持ち上げる動作、積み上げる動作を担う...
#ref(s_DSC_1508.JPG)
下はカップを掴んでいる写真
順に説明する。
***手に当たる先端部分について。 [#o80c7315]
これは下の画像のように隣接する歯車は逆に回転していること...
#ref(s_DSC_1516.JPG)
プログラムは下記の通りである。モーターの回転角度が小さく...
RotateMotor(OUT_B,50,-88); //手閉じる
RotateMotor(OUT_B,50,88); //手開く
また、先端にてモーターが腕の部分と垂直になっているのはバ...
***肘に当たる中間部分について [#v3d9a2eb]
肘の部分は普通に考えればモーターの回転する部分に長い棒を...
しかしこの機器の場合、手の重さとモーターの力不足によりそ...
よってこの機体では下の画像のようにギア比の差を利用した出...
#ref(s_DSC_1514.JPG)
下はプログラムの一例である。
出力はギア比の工夫により下げることが出来た。よって動きが...
角度はプラスで腕を上げマイナスで下がり、記載角度のおよそ1...
RotateMotor(OUT_C,50,500);
***肩に当たる根元部分について [#ubdfd921]
肩の部分は下画像の様になっている。
#ref(s_DSC_1515.JPG)
ここでもギア比による出力不足の解消を使った。
また、アームの大型化による重量の増加でバランスが保てなか...
#ref(s_DSC_1500.JPG)
本体と肩の画像。更なる安定化を図り、本体の高さも出来る限...
プログラムは以下の通り。回転角度を調節する機会が多かった...
#define kata_hanten 860
RotateMotor(OUT_A,75,kata_hanten/2); //肩90度回転(正...
**カップの保持について [#r904cc1d]
上記のアームは手の形から「積み上げられた」カップを持ち上...
#ref(s_DSC_1498.JPG)
本体よりやや離れた位置に取り付けられているのはアームが機...
#ref(s_DSC_1499.JPG)
画像は丁度カップを積み上げるところのもの。
またこの保持腕の存在により、C地点とD地点の往復回数を減ら...
**センサー系について [#z3c69419]
センサーは超音波センサと光センサを使う。ただし今回は時間...
***超音波センサ [#f97d26f1]
超音波センサはカップとの距離を測るために使用した。
#ref(s_DSC_1506.JPG)
画像の様にY字のパーツと併用してアームが確実にカップを取れ...
***光センサ [#naae3c4c]
光センサは予定では車体下部に2個取り付け、ライントレースの...
**走行について [#j3859f4f]
車輪とモーたーは機体の重心の都合により本体の下には設置出...
#ref(s_DSC_1500.JPG)
プログラムは以下のような回転角度指定の命令を主に使用した。
RotateMotorEx(OUT_AC,75,-600,0,true,true); //左右同期...
*ソフトウェアについて [#t4529da6]
方針より、マスターをメインとした流れとなるように組んだ。
**マスター側 [#ub7621fe]
基本的な流れは方針の通りである。
スタート(A)地点→D地点
カップを2個持ちC地点へ
カップを積み上げ残りの1個を持ちD地点へ
カップを積み上げゴール地点で保持腕を開く。
しかし今回は時間の都合上、C地点で積み上げた後ゴール地点へ...
ただし機体が大型化しているためC地点の手前で旋回するだけで...
#define CONN 1 // スレーブの接続番号
#define tyouonpa 7.75
task main()
{
SetSensorLowspeed(S1);
RotateMotorEx(OUT_AC,75,-600,0,true,true); //AからD...
Wait(2000);
until (BluetoothStatus(CONN) == NO_ERR); //接続できる...
OnRevSync(OUT_AC,50,0);
until (SensorUS(S1) <= tyouonpa); //8cmまで近づく
Off(OUT_AC);
RemoteStartProgram(CONN,"cup_hold_first.rxe"); //コ...
Wait(10000);
RotateMotor(OUT_B,30,-20);
Wait(15000);
RotateMotor(OUT_B,50,-28);
OnRevSync(OUT_AC,50,0);
until (SensorUS(S1) <= tyouonpa); //8cmまで近づく
Off(OUT_AC);
RemoteStartProgram(CONN,"cup_hold.rxe"); //コップを...
Wait(10000);
RotateMotorEx(OUT_AC,75,500,100,true,false); //方向...
RotateMotorEx(OUT_AC,75,-1500,0,false,false); //Cに...
OnRevSync(OUT_AC,75,0);
until (SensorUS(S1) <= tyouonpa); //7cmまで近づく
Off(OUT_AC);
RemoteStartProgram(CONN,"cup_yoko_oki.rxe");
Wait(15000);
RemoteStartProgram(CONN,"cup_hold_next.rxe"); //コッ...
Wait(20000);
RemoteStartProgram(CONN,"cup_yoko_toru.rxe");
Wait(20000);
OnRevSync(OUT_AC,75,0);
until (SensorUS(S1) <= tyouonpa); //7cmまで近づく
Off(OUT_AC);
RemoteStartProgram(CONN,"cup_hold_next.rxe"); //コッ...
Wait(20000);
RotateMotor(OUT_A,75,180); //方向転換
RotateMotor(OUT_B,30,50); //アームを開く
}
**スレーブ側 [#raaffcdd]
【】はファイル名となっている。
【cup_hold】
#define hold_up RotateMotor(OUT_C,50,500); Wait(1000); R...
#define hold_down RotateMotor(OUT_C,50,500); Wait(1000);...
task main()
{
ResetTachoCount(OUT_ABC);
hold_up; //手(先端)がモータB 肘...
Off(OUT_B);
}
前方のカップを持ち上げるプログラム。
【cup_hold_first】
#define hold_up RotateMotor(OUT_C,50,500); Wait(1000); R...
#define hold_down RotateMotor(OUT_C,50,500); Wait(1000);...
#define kata_hanten 860
task main()
{
ResetTachoCount(OUT_ABC); //手(先端)がモータB...
hold_up;
RotateMotor(OUT_C,90,-100);
Off(OUT_B);
Wait(2000);
RotateMotor(OUT_A,75,kata_hanten); //肩180度回転(...
Wait(1500);
RotateMotor(OUT_C,75,100);
hold_down;
RotateMotor(OUT_A,75,-kata_hanten); //マイナスで手を...
ResetTachoCount(OUT_ABC);
}
一番最初のカップを持ち上げ、保持腕に卸すプログラム。保持...
【cup_hold_next】
#define hold_up RotateMotor(OUT_C,50,540); Wait(1500); R...
#define hold_down RotateMotor(OUT_C,50,450); Wait(1500);...
#define kata_hanten 860
task main()
{
ResetTachoCount(OUT_ABC); //手(先端)がモータB 肘(中...
hold_up;
RotateMotor(OUT_C,90,-100);
RotateMotor(OUT_B,80,-3);
Off(OUT_B);
Wait(2000);
RotateMotor(OUT_A,75,kata_hanten); //肩180度回転(...
RotateMotor(OUT_C,50,50);
Wait(2000);
hold_down;
RotateMotor(OUT_C,50,50);
RotateMotor(OUT_B,80,3);
RotateMotor(OUT_A,75,-kata_hanten); //マイナスで手を...
ResetTachoCount(OUT_ABC);
}
保持腕にカップがあるときに前方のカップを持ち上げ、保持腕...
【cup_yoko_oki】
#define hold_up RotateMotor(OUT_C,50,540); Wait(1000); R...
#define hold_down RotateMotor(OUT_C,50,500); Wait(1000);...
#define kata_hanten 860
task main()
{
ResetTachoCount(OUT_ABC); //手(先端)がモータB 肘(...
RotateMotor(OUT_A,75,kata_hanten/2); //肩90度回転...
Wait(1500);
hold_down;
RotateMotor(OUT_A,75,-kata_hanten/2); //マイナスで手...
ResetTachoCount(OUT_ABC);
}
C地点とD地点の往復を減らすため、最初の移動でアームにカッ...
【cup_yoko_toru】
#define hold_up RotateMotor(OUT_C,50,540); Wait(1000); R...
#define hold_down RotateMotor(OUT_C,50,500); Wait(1000);...
#define kata_hanten 860
task main()
{
ResetTachoCount(OUT_ABC); //手(先端)がモータB 肘(...
RotateMotor(OUT_A,75,kata_hanten/2); //肩90度回転...
Wait(1000);
hold_up;
RotateMotor(OUT_C,90,-100);
RotateMotor(OUT_B,80,-5);
Off(OUT_B);
Wait(2000);
RotateMotor(OUT_A,75,kata_hanten/2); //マイナスで手を...
RotateMotor(OUT_C,50,50);
Wait(1000);
hold_down;
RotateMotor(OUT_C,50,50);
RotateMotor(OUT_A,75,-kata_hanten);
ResetTachoCount(OUT_ABC);
}
上記のプログラムで横に置かれたカップを掴み、保持腕に積み...
*結果考察と感想 [#m7f01fc5]
結果は残念ながらカップを1個保持腕にもっていくことしか出来...
また、コードも含めた機体全体に負荷をかけ過ぎる設計になっ...
時間を取れなかったのは自分たちの責任にしても、もう少し余...
ただ、プログラミングの雰囲気や機械製品の不安定さを知るこ...
終了行:
*課題 [#ba46394b]
**ルール [#vd6a8cfb]
ルールはC地点、D地点にある紙コップを交互に積み上げ、その...
ロボットはA地点B地点からスタートし、一体型の場合はどちら...
2機が通信して協力し合い、課題をいかに早くクリアするかを...
**方針 [#xe848675]
今回の課題はルール上、NXT一機につきモーターが3つという制...
一体を移動とセンサ系、もう一体をカップの積み上げという作...
流れとしてはスタート地点から近い方のカップに向かう。その...
最後にゴールにカップを置いて終了とする。
ざっくりとだが以上である。
*ハードウェアについて [#j89df8c3]
ハードは上記の方針より、以下の4つの能力が必要となる。
・カップを掴む
・カップを積み上げる
・積み上げられたカップを保持すること
・積み上げられたカップを崩すことなく下すこと
これらを満たすハードウェアとして複数の関節を持ったアーム...
それぞれの機構については以下の様になった。
**アーム部分 [#p341d057]
アーム部分はカップを持ち上げる動作、積み上げる動作を担う...
#ref(s_DSC_1508.JPG)
下はカップを掴んでいる写真
順に説明する。
***手に当たる先端部分について。 [#o80c7315]
これは下の画像のように隣接する歯車は逆に回転していること...
#ref(s_DSC_1516.JPG)
プログラムは下記の通りである。モーターの回転角度が小さく...
RotateMotor(OUT_B,50,-88); //手閉じる
RotateMotor(OUT_B,50,88); //手開く
また、先端にてモーターが腕の部分と垂直になっているのはバ...
***肘に当たる中間部分について [#v3d9a2eb]
肘の部分は普通に考えればモーターの回転する部分に長い棒を...
しかしこの機器の場合、手の重さとモーターの力不足によりそ...
よってこの機体では下の画像のようにギア比の差を利用した出...
#ref(s_DSC_1514.JPG)
下はプログラムの一例である。
出力はギア比の工夫により下げることが出来た。よって動きが...
角度はプラスで腕を上げマイナスで下がり、記載角度のおよそ1...
RotateMotor(OUT_C,50,500);
***肩に当たる根元部分について [#ubdfd921]
肩の部分は下画像の様になっている。
#ref(s_DSC_1515.JPG)
ここでもギア比による出力不足の解消を使った。
また、アームの大型化による重量の増加でバランスが保てなか...
#ref(s_DSC_1500.JPG)
本体と肩の画像。更なる安定化を図り、本体の高さも出来る限...
プログラムは以下の通り。回転角度を調節する機会が多かった...
#define kata_hanten 860
RotateMotor(OUT_A,75,kata_hanten/2); //肩90度回転(正...
**カップの保持について [#r904cc1d]
上記のアームは手の形から「積み上げられた」カップを持ち上...
#ref(s_DSC_1498.JPG)
本体よりやや離れた位置に取り付けられているのはアームが機...
#ref(s_DSC_1499.JPG)
画像は丁度カップを積み上げるところのもの。
またこの保持腕の存在により、C地点とD地点の往復回数を減ら...
**センサー系について [#z3c69419]
センサーは超音波センサと光センサを使う。ただし今回は時間...
***超音波センサ [#f97d26f1]
超音波センサはカップとの距離を測るために使用した。
#ref(s_DSC_1506.JPG)
画像の様にY字のパーツと併用してアームが確実にカップを取れ...
***光センサ [#naae3c4c]
光センサは予定では車体下部に2個取り付け、ライントレースの...
**走行について [#j3859f4f]
車輪とモーたーは機体の重心の都合により本体の下には設置出...
#ref(s_DSC_1500.JPG)
プログラムは以下のような回転角度指定の命令を主に使用した。
RotateMotorEx(OUT_AC,75,-600,0,true,true); //左右同期...
*ソフトウェアについて [#t4529da6]
方針より、マスターをメインとした流れとなるように組んだ。
**マスター側 [#ub7621fe]
基本的な流れは方針の通りである。
スタート(A)地点→D地点
カップを2個持ちC地点へ
カップを積み上げ残りの1個を持ちD地点へ
カップを積み上げゴール地点で保持腕を開く。
しかし今回は時間の都合上、C地点で積み上げた後ゴール地点へ...
ただし機体が大型化しているためC地点の手前で旋回するだけで...
#define CONN 1 // スレーブの接続番号
#define tyouonpa 7.75
task main()
{
SetSensorLowspeed(S1);
RotateMotorEx(OUT_AC,75,-600,0,true,true); //AからD...
Wait(2000);
until (BluetoothStatus(CONN) == NO_ERR); //接続できる...
OnRevSync(OUT_AC,50,0);
until (SensorUS(S1) <= tyouonpa); //8cmまで近づく
Off(OUT_AC);
RemoteStartProgram(CONN,"cup_hold_first.rxe"); //コ...
Wait(10000);
RotateMotor(OUT_B,30,-20);
Wait(15000);
RotateMotor(OUT_B,50,-28);
OnRevSync(OUT_AC,50,0);
until (SensorUS(S1) <= tyouonpa); //8cmまで近づく
Off(OUT_AC);
RemoteStartProgram(CONN,"cup_hold.rxe"); //コップを...
Wait(10000);
RotateMotorEx(OUT_AC,75,500,100,true,false); //方向...
RotateMotorEx(OUT_AC,75,-1500,0,false,false); //Cに...
OnRevSync(OUT_AC,75,0);
until (SensorUS(S1) <= tyouonpa); //7cmまで近づく
Off(OUT_AC);
RemoteStartProgram(CONN,"cup_yoko_oki.rxe");
Wait(15000);
RemoteStartProgram(CONN,"cup_hold_next.rxe"); //コッ...
Wait(20000);
RemoteStartProgram(CONN,"cup_yoko_toru.rxe");
Wait(20000);
OnRevSync(OUT_AC,75,0);
until (SensorUS(S1) <= tyouonpa); //7cmまで近づく
Off(OUT_AC);
RemoteStartProgram(CONN,"cup_hold_next.rxe"); //コッ...
Wait(20000);
RotateMotor(OUT_A,75,180); //方向転換
RotateMotor(OUT_B,30,50); //アームを開く
}
**スレーブ側 [#raaffcdd]
【】はファイル名となっている。
【cup_hold】
#define hold_up RotateMotor(OUT_C,50,500); Wait(1000); R...
#define hold_down RotateMotor(OUT_C,50,500); Wait(1000);...
task main()
{
ResetTachoCount(OUT_ABC);
hold_up; //手(先端)がモータB 肘...
Off(OUT_B);
}
前方のカップを持ち上げるプログラム。
【cup_hold_first】
#define hold_up RotateMotor(OUT_C,50,500); Wait(1000); R...
#define hold_down RotateMotor(OUT_C,50,500); Wait(1000);...
#define kata_hanten 860
task main()
{
ResetTachoCount(OUT_ABC); //手(先端)がモータB...
hold_up;
RotateMotor(OUT_C,90,-100);
Off(OUT_B);
Wait(2000);
RotateMotor(OUT_A,75,kata_hanten); //肩180度回転(...
Wait(1500);
RotateMotor(OUT_C,75,100);
hold_down;
RotateMotor(OUT_A,75,-kata_hanten); //マイナスで手を...
ResetTachoCount(OUT_ABC);
}
一番最初のカップを持ち上げ、保持腕に卸すプログラム。保持...
【cup_hold_next】
#define hold_up RotateMotor(OUT_C,50,540); Wait(1500); R...
#define hold_down RotateMotor(OUT_C,50,450); Wait(1500);...
#define kata_hanten 860
task main()
{
ResetTachoCount(OUT_ABC); //手(先端)がモータB 肘(中...
hold_up;
RotateMotor(OUT_C,90,-100);
RotateMotor(OUT_B,80,-3);
Off(OUT_B);
Wait(2000);
RotateMotor(OUT_A,75,kata_hanten); //肩180度回転(...
RotateMotor(OUT_C,50,50);
Wait(2000);
hold_down;
RotateMotor(OUT_C,50,50);
RotateMotor(OUT_B,80,3);
RotateMotor(OUT_A,75,-kata_hanten); //マイナスで手を...
ResetTachoCount(OUT_ABC);
}
保持腕にカップがあるときに前方のカップを持ち上げ、保持腕...
【cup_yoko_oki】
#define hold_up RotateMotor(OUT_C,50,540); Wait(1000); R...
#define hold_down RotateMotor(OUT_C,50,500); Wait(1000);...
#define kata_hanten 860
task main()
{
ResetTachoCount(OUT_ABC); //手(先端)がモータB 肘(...
RotateMotor(OUT_A,75,kata_hanten/2); //肩90度回転...
Wait(1500);
hold_down;
RotateMotor(OUT_A,75,-kata_hanten/2); //マイナスで手...
ResetTachoCount(OUT_ABC);
}
C地点とD地点の往復を減らすため、最初の移動でアームにカッ...
【cup_yoko_toru】
#define hold_up RotateMotor(OUT_C,50,540); Wait(1000); R...
#define hold_down RotateMotor(OUT_C,50,500); Wait(1000);...
#define kata_hanten 860
task main()
{
ResetTachoCount(OUT_ABC); //手(先端)がモータB 肘(...
RotateMotor(OUT_A,75,kata_hanten/2); //肩90度回転...
Wait(1000);
hold_up;
RotateMotor(OUT_C,90,-100);
RotateMotor(OUT_B,80,-5);
Off(OUT_B);
Wait(2000);
RotateMotor(OUT_A,75,kata_hanten/2); //マイナスで手を...
RotateMotor(OUT_C,50,50);
Wait(1000);
hold_down;
RotateMotor(OUT_C,50,50);
RotateMotor(OUT_A,75,-kata_hanten);
ResetTachoCount(OUT_ABC);
}
上記のプログラムで横に置かれたカップを掴み、保持腕に積み...
*結果考察と感想 [#m7f01fc5]
結果は残念ながらカップを1個保持腕にもっていくことしか出来...
また、コードも含めた機体全体に負荷をかけ過ぎる設計になっ...
時間を取れなかったのは自分たちの責任にしても、もう少し余...
ただ、プログラミングの雰囲気や機械製品の不安定さを知るこ...
ページ名: