2017a/Member/doita/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]
~目次
#contents
*課題について [#x94a4e3f]
詳しくは[[課題3>http://yakushi.shinshu-u.ac.jp/robotics/?...
*ロボット [#vb0ebc24]
まず、ロボット製作に当たって「缶を見つけて積み上げ、それ...
**全体概要 [#k5def071]
#ref(./ロボット.JPG,100%,ロボット概要)
写真のように、二台のNXTを連携させて一台のロボットを動かす...
#ref(./キャスター.JPG,100%,後輪)
**アーム全体 [#c83d88b3]
#ref(./アーム.JPG,100%,アーム概要)
写真の赤い線で囲まれている部分がアーム全体であり、その中...
#ref(./モーター.JPG,100%,アーム後部)
アームを上下させるための動力はアーム後部に取り付けられて...
#ref(./平行四辺形.JPG,50%,平行四辺形)
また、この写真に示されているように、缶をつかむ部分と平行...
**缶をつかむ機構 [#pb029094]
#ref(./IMG_2725.JPG,100%,缶をつかむ機構)
写真のように、モータと歯車を使って左右のパーツを連動させ...
**センサー [#sfaa39d5]
#ref(./センサー.jpg,100%,センサー)
センサーは、ライントレース用に光センサーを、缶の発見と距...
*作戦 [#eb698e36]
#ref(./作戦.jpg,100%,作戦)
上図の赤線のコースをライントレースで進み、その途中で緑の...
*プログラム [#ycf217d2]
マスター側には左右の車輪用のモータと二つのセンサーをつな...
**マスター側 [#jc39e3a4]
Bが右タイヤのモータ、Cが左タイヤのモータ
#define THRESHOLD 50 //しきい値
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED, SPEED); //前進
#define go_back OnRL(-SPEED,-SPEED); //後退
#define turn_left1 OnRL(SPEED, -SPEED); //左旋回
#define turn_left0 OnRL(SPEED, 0); //左折
#define turn_right0 OnRL(0, SPEED); //右折
#define turn_right1 OnRL(-SPEED, SPEED); //右旋回
#define SPEED 45
task main()
{
SetSensorLight(S3); //端子3に光センサー
SetSensorLowspeed(S1); //端子1に超音波センサー
until(BluetoothStatus(1)==NO_ERR); //スレーブ側と...
int nKan=0; //缶を認識した回数
while (nKan < 2) { //缶を2個回収する間の動作
while(SensorUS(S1)>15){ //缶との距離15センチ以...
if (SENSOR_3 < THRESHOLD-10) {
turn_left1;
}
else {
if (SENSOR_3 < THRESHOLD-5) {
turn_left0;
}
else if (SENSOR_3 < THRESHOLD+5) {
go_forward;
}
else if (SENSOR_3 < THRESHOLD+10) {
turn_right0;
}
else {
turn_right1;
}
}
Wait(1);
}
until(SensorUS(S1)<=12){ //センサーと缶との間の...
go_forward;
}
if (SensorUS(S1)<=12){ //センサーと缶との間の距...
Off(OUT_BC);
RemoteStartProgram(1,"sss1.rxe"); //スレーブ側...
Wait(2000); //アームを下ろしきるまでの時間稼ぎ
RotateMotorEx(OUT_BC,45,100,0,true,true); //缶...
Wait(6000); //スレーブ側のプログラムが終了する...
nKan++; //カウントを追加
}
}
while(nKan<3){ //缶を2個回収し終えた後の動作
RotateMotor(OUT_B,-SPEED,200); //ゴール方向に方...
go_forward; //ゴール手前まで前進
Wait(2500);
Off(OUT_BC);
RemoteStartProgram(1,"sss2.rxe"); //スレーブ側に...
Wait(5000); //スレーブ側のプログラムが終了するま...
go_back; //ゴールゾーンから離脱
Wait(3000);
Off(OUT_BC);
nKan++; //プログラムを終了させるためにカウント...
}
}
ライントレースは課題2で使ったものから交差点認識機能を取り...
**スレーブ側 [#s24e7ee6]
Bが缶をつかむ機構のモーター、Cがアームを上下させるモーター
***缶を回収、積み重ねるとき [#m7b7c22a]
ファイル名「sss1.nxc」
task main()
{
RotateMotor(OUT_C,-30,30); //積み上げる際の落差...
RotateMotor(OUT_B,30,30); //缶を掴む機構を開ける,...
RotateMotor(OUT_C,-30,150); //アームを下げきる
Wait(2000); //本体が位置調整をするための時間合わせ
OnFwd(OUT_B,-30); //缶を掴む
Wait(3000);
Off(OUT_B);
RotateMotor(OUT_C,50,180); //アームを上げる
}
***ゴールに缶を置くとき [#e7dd7073]
ファイル名「sss2.nxc」
task main()
{
RotateMotor(OUT_C,-30,180); //アームを下げる
RotateMotor(OUT_B,30,90); //缶を掴む機構を全開に...
}
*ロボコン結果 [#oa6541fd]
本来の作戦通りに缶を二つ積み、ゴールまで運ぶことができた...
*まとめ [#ea18bda0]
**今回の感想 [#ad2ee399]
期末テスト明けということもあり、作業時間が少なく大変だっ...
**全体の感想 [#yb823566]
生まれて初めてプログラミングに触れて、とても新鮮な体験だ...
終了行:
[[2017a/Member]]
~目次
#contents
*課題について [#x94a4e3f]
詳しくは[[課題3>http://yakushi.shinshu-u.ac.jp/robotics/?...
*ロボット [#vb0ebc24]
まず、ロボット製作に当たって「缶を見つけて積み上げ、それ...
**全体概要 [#k5def071]
#ref(./ロボット.JPG,100%,ロボット概要)
写真のように、二台のNXTを連携させて一台のロボットを動かす...
#ref(./キャスター.JPG,100%,後輪)
**アーム全体 [#c83d88b3]
#ref(./アーム.JPG,100%,アーム概要)
写真の赤い線で囲まれている部分がアーム全体であり、その中...
#ref(./モーター.JPG,100%,アーム後部)
アームを上下させるための動力はアーム後部に取り付けられて...
#ref(./平行四辺形.JPG,50%,平行四辺形)
また、この写真に示されているように、缶をつかむ部分と平行...
**缶をつかむ機構 [#pb029094]
#ref(./IMG_2725.JPG,100%,缶をつかむ機構)
写真のように、モータと歯車を使って左右のパーツを連動させ...
**センサー [#sfaa39d5]
#ref(./センサー.jpg,100%,センサー)
センサーは、ライントレース用に光センサーを、缶の発見と距...
*作戦 [#eb698e36]
#ref(./作戦.jpg,100%,作戦)
上図の赤線のコースをライントレースで進み、その途中で緑の...
*プログラム [#ycf217d2]
マスター側には左右の車輪用のモータと二つのセンサーをつな...
**マスター側 [#jc39e3a4]
Bが右タイヤのモータ、Cが左タイヤのモータ
#define THRESHOLD 50 //しきい値
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED, SPEED); //前進
#define go_back OnRL(-SPEED,-SPEED); //後退
#define turn_left1 OnRL(SPEED, -SPEED); //左旋回
#define turn_left0 OnRL(SPEED, 0); //左折
#define turn_right0 OnRL(0, SPEED); //右折
#define turn_right1 OnRL(-SPEED, SPEED); //右旋回
#define SPEED 45
task main()
{
SetSensorLight(S3); //端子3に光センサー
SetSensorLowspeed(S1); //端子1に超音波センサー
until(BluetoothStatus(1)==NO_ERR); //スレーブ側と...
int nKan=0; //缶を認識した回数
while (nKan < 2) { //缶を2個回収する間の動作
while(SensorUS(S1)>15){ //缶との距離15センチ以...
if (SENSOR_3 < THRESHOLD-10) {
turn_left1;
}
else {
if (SENSOR_3 < THRESHOLD-5) {
turn_left0;
}
else if (SENSOR_3 < THRESHOLD+5) {
go_forward;
}
else if (SENSOR_3 < THRESHOLD+10) {
turn_right0;
}
else {
turn_right1;
}
}
Wait(1);
}
until(SensorUS(S1)<=12){ //センサーと缶との間の...
go_forward;
}
if (SensorUS(S1)<=12){ //センサーと缶との間の距...
Off(OUT_BC);
RemoteStartProgram(1,"sss1.rxe"); //スレーブ側...
Wait(2000); //アームを下ろしきるまでの時間稼ぎ
RotateMotorEx(OUT_BC,45,100,0,true,true); //缶...
Wait(6000); //スレーブ側のプログラムが終了する...
nKan++; //カウントを追加
}
}
while(nKan<3){ //缶を2個回収し終えた後の動作
RotateMotor(OUT_B,-SPEED,200); //ゴール方向に方...
go_forward; //ゴール手前まで前進
Wait(2500);
Off(OUT_BC);
RemoteStartProgram(1,"sss2.rxe"); //スレーブ側に...
Wait(5000); //スレーブ側のプログラムが終了するま...
go_back; //ゴールゾーンから離脱
Wait(3000);
Off(OUT_BC);
nKan++; //プログラムを終了させるためにカウント...
}
}
ライントレースは課題2で使ったものから交差点認識機能を取り...
**スレーブ側 [#s24e7ee6]
Bが缶をつかむ機構のモーター、Cがアームを上下させるモーター
***缶を回収、積み重ねるとき [#m7b7c22a]
ファイル名「sss1.nxc」
task main()
{
RotateMotor(OUT_C,-30,30); //積み上げる際の落差...
RotateMotor(OUT_B,30,30); //缶を掴む機構を開ける,...
RotateMotor(OUT_C,-30,150); //アームを下げきる
Wait(2000); //本体が位置調整をするための時間合わせ
OnFwd(OUT_B,-30); //缶を掴む
Wait(3000);
Off(OUT_B);
RotateMotor(OUT_C,50,180); //アームを上げる
}
***ゴールに缶を置くとき [#e7dd7073]
ファイル名「sss2.nxc」
task main()
{
RotateMotor(OUT_C,-30,180); //アームを下げる
RotateMotor(OUT_B,30,90); //缶を掴む機構を全開に...
}
*ロボコン結果 [#oa6541fd]
本来の作戦通りに缶を二つ積み、ゴールまで運ぶことができた...
*まとめ [#ea18bda0]
**今回の感想 [#ad2ee399]
期末テスト明けということもあり、作業時間が少なく大変だっ...
**全体の感想 [#yb823566]
生まれて初めてプログラミングに触れて、とても新鮮な体験だ...
ページ名: