2018b/Member/twinrabi/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*課題3 [#mf123387]
#ref(2018b-mission3.png,,課題コース);
上記のコース上の青のボールは青の缶に、赤のボールは赤の缶...
詳しくは[[こちら:http://yakushi.shinshu-u.ac.jp/robotics/...
*使用ルート [#p072aaff]
自分たちのグループは以下のようなルート・手順を考えた。
#ref(root.png,,青・赤矢印 移動ルート 薄青・薄赤 索敵範囲...
+Y内からスタートし、青のボールへ向かう(青矢印)
+青のボールを掴んだら少し前進した後、缶の索敵を行う(薄青)
+索敵後青のボールを青の領域の缶に乗せる
+青のボールを乗せたらEの交差点まで戻る(赤矢印)
+Eの交差点をFの方向へ曲がり進む(赤矢印)
+急カーブ上で赤のボールを掴む
+赤のボールを掴んだらその場で索敵を行う(薄赤)
+索敵後赤のボールを赤の領域の缶に乗せる
*作成ロボット [#i7f25481]
**ロボット全体像 [#r99d2dad]
#ref(robot.jpeg,,作成ロボット);
今回は2グループ合同でのロボット作成だったのでNXTが2台あり...
タイヤの操作、各センサの値の認識を行うNXTをマスター側、ア...
-工夫点&br;
今回課題を達成するために行う動作が多く、キットを2台分使用...
#ref(center-tire.jpeg,,工夫点);
#ref(back-tire.jpeg,,工夫点);
右のモーターからタイヤへのギアのつながりを模式的に表すと...
#ref(gear-tire.png,,A,B,C,Dはギアを示す);
上記の図においてモーターとギアA、ギアBとギアC、ギアDとタ...
**ボール保持部分 [#m1a1d80c]
以下ボールをつかむ部分をハンド、ボールを持ち上げる部分を...
***ハンド [#l25b1265]
ハンド部分は上のギアを回転させることで下のギアに動力が伝...
下の写真はハンドを閉じる場合の動作である。
#ref(hand.jpeg,,ハンドを閉じる場合 緑矢印 ギアの回転方向...
***アーム [#ma519cb5]
モーターAの回転を橙丸部分の計5つのギアによってハンド部分...
下の写真の緑矢印の方向はハンドを閉じる方向である。&br;
#ref(arm-hand.jpeg,,緑矢印 モーターAの回転方向-ギア回転の...
モーターB、Cを同時に同じ方向へ回転させることで、アームを...
#ref(up-down.jpg,,アームの上下);
図のように下の橙棒をモーターの回転によって傾きを変えるこ...
***ハンドとアームの接合部分 [#w36cfbf8]
モーターAからアームを伝わってきた縦方向の回転は、ハンドの...
#ref(gear.jpeg,,接合部分);
**各種センサ [#y2cdbf1e]
今回は超音波センサを2つ、光センサを1つ使用した。S1でライ...
#ref(sensor.jpeg,,ロボット前方 各種センサ);
**試行錯誤 [#zb435d06]
ロボット作成当初はアームが長く、前輪タイヤが車体の前方や...
#ref(bad-robot.jpeg,,没機体);
*動作説明 [#z7957c1b]
今回の課題は前回の課題と類似点が多く存在するため類似点は...
なお今回と前回の大きな相違点として引数があり、以下にそれ...
+int型 整数を変数とする値を定義する
+float型 浮動小数を変数とする値を定義する
+string型 文字列を変数とする値を定義する
+long型 時間関数を変数とする値を定義する
**NXT間の通信 [#g7520775]
今回は2つのNXTを使用しているので、片方をマスターとしもう...
**ライントレース [#g5284910]
今回も前回と同様に線の境目をトレースするプログラムである...
follow_line(int bw_time,long min_t,int blk_cnt,string in...
において5つの引数を組み込むことで、変数の値によって行われ...
++bw_timeの値で旋回を行い始めるまでの時間を操作。また旋回...
++min_tの値で交差点判断を無視する時間を操作、また-1を指定...
++blk_cntの値に1を指定すると交差点判断をした時停止しライ...
++invert_infoにoffを指定した場合は何も行わず左の境目をト...
++sensor_switchにonを指定すると、S3に接続された超音波セン...
線の境目のトレース方法は前回同様{線外ならば線上に向かう...
**缶の索敵 [#t95593f1]
缶の索敵に関しては相違点としてタイヤ間の距離と索敵範囲の...
タイヤ間の距離は単純にロボットが変わり、前回より大きくな...
索敵範囲は前回と違い360度一回転しなくてもよかったため、ラ...
search_throw(string side_select,float rotate_angle)
に引数を組み込み、旋回方向と旋回角度を操作できるようにし...
++side_selectにrightを指定すると右旋回、leftを指定すると...
++rotate_angleに指定した角度分だけ旋回を行う&br;
#ref(robot-over.jpeg,,青線 タイヤ間の距離 緑矢印 right時...
旋回角度を算出する式は前回同様 (タイヤ直径/前輪間の距離)*...
**動作時間の測定 [#k1f77543]
動作時間の想定に関しては[[前回(Mission2):http://yakushi.s...
*使用プログラム [#n73f2320]
**スレーブ側 [#r0af1958]
-アームを上げる(プログラム名[arm_up])
task main(){
RotateMotor(OUT_BC,-40,90); //ボールを持ち上げる
}
-アームを下げる(プログラム名[arm_down])
task main(){
RotateMotor(OUT_BC,10,90);
Wait(300);
Off(OUT_BC);
ResetTachoCount(OUT_BC);
}
-ハンドを閉じる(プログラム名[hand_close])
task main(){
RotateMotor(OUT_A,-30,320); //ボールを掴む
Wait(300);
RotateMotor(OUT_BC,-40,15);
Off(OUT_ABC);
}
ハンドを閉じる(ボールを掴む)となぜかアームが下がってし...
-ハンドを開く(プログラム名[hand_open])
task main(){
RotateMotor(OUT_A,30,320); //ボールを放す
}
スレーブ側には上記の単純な4つのプログラムが入っている。
**マスター側 [#j5e525b9]
-使用マクロ
#define fw Off(OUT_BC);OnFwd(OUT_BC,30); // 直進
#define lt Off(OUT_BC);OnFwd(OUT_B,35); // 左回
#define rt Off(OUT_BC);OnFwd(OUT_C,35); // 右回
#define rrt Off(OUT_BC);OnFwd(OUT_C,20);OnFwd(OUT_B,-...
#define llt Off(OUT_BC);OnFwd(OUT_B,20);OnFwd(OUT_C,-...
#define wait_sec Off(OUT_BC);Wait(1000); ...
#define mini_go Off(OUT_BC);OnFwd(OUT_BC,30);Wait(150...
#define def_arm_up until(BluetoothStatus(conn)==NO_ER...
RemoteStartProgram(conn,"arm_up.rx...
Wait(4000);
#define def_arm_down until(BluetoothStatus(conn)==NO_...
RemoteStartProgram(conn,"arm_dow...
Wait(4000);
#define def_hand_close until(BluetoothStatus(conn)==N...
RemoteStartProgram(conn,"hand_...
Wait(4000);
#define def_hand_open until(BluetoothStatus(conn)==NO...
RemoteStartProgram(conn,"hand_o...
Wait(4000);
-定義関数
const float tire_diameter = 5.75; //タイヤの直径
const float tire_axis = 17.7; //タイヤ間の距離
const int gear_ratio = 6; //ギア比
const float pi = 3.14159; //円周率
const int en = 360; //円 360度
***NXT間の通信 [#m05b21a9]
until(BluetoothStatus(CONN)==NO_ERR); //スレーブ側...
RemoteStartProgram(CONN,"arm_up.rxe");
Wait(4000);
until(BluetoothStatus(CONN)==NO_ERR); //スレーブ側...
RemoteStartProgram(CONN,"arm_down.rxe");
Wait(4000);
until(BluetoothStatus(CONN)==NO_ERR); //スレーブ側...
RemoteStartProgram(CONN,"hand_close.rxe");
Wait(4000);
until(BluetoothStatus(CONN)==NO_ERR); //スレーブ側...
RemoteStartProgram(CONN,"hand_open.rxe");
Wait(4000);
[until(BluetoothStatus(CONN)==NO_ERR);]はNXT同士が繋がっ...
***ライントレース [#k104eca1]
-交差点の通過
void blk_selection(int blk_select){
if(blk_select!=1){ //blk_selectが1なら
wait_sec; //停止する
}
if(blk_select!=0){ //blk_selectが0なら
mini_go; //通過する
}
}
void follow_line(int bw_time,long min_t,int blk_cnt,s...
SetSensorLight(S1); //光センサ定義
int right_var; //光センサ値用変数
SetSensorLowspeed(S3); //超音波センサ定義
long t0,t1,start_t; // t0,t1,start_t 時間変数の定義
t1=CurrentTick(); // 今その時の時刻
t0=CurrentTick(); // 直進終了・右左折開始時刻
start_t=CurrentTick(); // ライントレース開始時刻
while(t1-start_t<min_t || min_t<0){ //ライントレ...
if(sensor_switch=="on"){ //sensor_switchにo...
if(SensorUS(S3)<16){ //S3が16?以内に障...
break; //while文から抜け...
}
}
right_var = SENSOR_1; // 光センサ値代入
if(invert_info=="on"){ //invert_infoにoffを...
right_var = right_var*(-1)+91;} //onを指...
if (right_var>50){
if (t1-t0>bw_time){ // 右回で指定した時...
if (blk_cnt>=0 && blk_cnt<=2 && inv...
blk_selection(blk_cnt); //bl...
break; //ライントレースを終...
}else{
rrt;}
}else{ // 右回
rt;}
}else if (right_var>40){
fw;
t0=CurrentTick(); //直進終了・右左折開始...
}else{
if (t1-t0>bw_time){ // 左回で bw_time[...
if (blk_cnt>=0 && blk_cnt<=2 && inv...
blk_selection(blk_cnt);
break;
}else{
llt;}
}else{ // 左回
lt;}}
t1=CurrentTick(); //今その時の時刻
}Off(OUT_BC);
}
***缶の索敵 [#v85d66c0]
void search_throw(string side_select,float rotate_ang...
SetSensorLowspeed(S2); //超音波センサ定義
int d_min=1000,d_gosa=11,side_flag=0;
long ang_min=0,angle=0,d_angle=0;
if (side_select=="right"){ //rightを指定し...
side_flag=1;
}else if(side_select=="left"){ //leftを指定して...
side_flag=-1;
}
ResetTachoCount(OUT_BC);
OnFwdSync(OUT_BC,30,100*side_flag);
while(((tire_diameter/(tire_axis*gear_ratio))*Mot...
if(d_min>SensorUS(S2)){
d_min=SensorUS(S2); //距離の最小値更新
angle=MotorTachoCount(OUT_C);
}
}
ang_min=MotorTachoCount(OUT_C)-angle;
Off(OUT_BC);
Wait(1000);
ResetTachoCount(OUT_BC);
RotateMotorEx(OUT_BC, 40, ang_min, -100*side_flag...
Off(OUT_BC);
ResetTachoCount(OUT_BC);
if(7<SensorUS(S2)){ //缶までの距離が7?以下になら
OnFwd(OUT_BC,40); //物体の方に近づく
while(7<SensorUS(S2) || 40>(pi*tire_diameter*...
d_angle=MotorTachoCount(OUT_C); //物体...
}
Off(OUT_BC);
RotateMotor(OUT_BC,30,en*2*gear_ratio/(pi*tir...
}
def_arm_up; //アームを上げる
RotateMotor(OUT_BC,30,en*d_gosa*gear_ratio/(pi*ti...
Wait(700);
def_hand_open; //ボールを放す
RotateMotor(OUT_BC,-30,en*d_gosa*gear_ratio/(pi*t...
def_arm_down; //アームを下げる
ResetTachoCount(OUT_BC);
RotateMotorEx(OUT_BC, 40, angle, -100*side_flag, ...
Off(OUT_BC);
}
***プログラム全体 [#ua423fd3]
task main(){
string invert_str="off";
int b_tyokusin=10,r_back=22; //直進する距離と後...
follow_line(1200, -1,1,invert_str,"off"); //Yか...
follow_line(800, -1,0,invert_str,"off");
def_hand_close; //青ボールを掴む
ResetTachoCount(OUT_BC);
RotateMotor(OUT_BC,30,en*b_tyokusin*gear_ratio/(p...
Off(OUT_BC);
search_throw("right",55.0); //右旋回角度55度で索敵
Wait(2000);
RotateMotor(OUT_BC,-30,en*b_tyokusin*gear_ratio/(...
Off(OUT_BC);
def_arm_up; //アームを上げる
RotateMotor(OUT_BC,-30,en*r_back*gear_ratio/(pi*t...
follow_line(600,1200000,-1,invert_str,"on"); //E...
RotateMotor(OUT_BC,-30,en*3*gear_ratio/(pi*tire_d...
def_arm_down; //アームを下げる
def_hand_close; //赤ボールを掴む
search_throw("left",270); //左旋回270度で索敵
Wait(1000);Off(OUT_BC);
}
*結果 [#s03258b7]
#ref(result.jpg,,課題3結果);
自分たちのグループ(N1N2)は本番では缶の索敵がずれる、ハ...
*感想・反省 [#e7e9bf4c]
ロボット本体に関しては大きく、重くなってしまったが、それ...
ハンドの不具合は、おそらくハンドが閉じ切らなかったことで...
後期のロボティクス入門ゼミを通して、これまであまりやった...
終了行:
目次
#contents
*課題3 [#mf123387]
#ref(2018b-mission3.png,,課題コース);
上記のコース上の青のボールは青の缶に、赤のボールは赤の缶...
詳しくは[[こちら:http://yakushi.shinshu-u.ac.jp/robotics/...
*使用ルート [#p072aaff]
自分たちのグループは以下のようなルート・手順を考えた。
#ref(root.png,,青・赤矢印 移動ルート 薄青・薄赤 索敵範囲...
+Y内からスタートし、青のボールへ向かう(青矢印)
+青のボールを掴んだら少し前進した後、缶の索敵を行う(薄青)
+索敵後青のボールを青の領域の缶に乗せる
+青のボールを乗せたらEの交差点まで戻る(赤矢印)
+Eの交差点をFの方向へ曲がり進む(赤矢印)
+急カーブ上で赤のボールを掴む
+赤のボールを掴んだらその場で索敵を行う(薄赤)
+索敵後赤のボールを赤の領域の缶に乗せる
*作成ロボット [#i7f25481]
**ロボット全体像 [#r99d2dad]
#ref(robot.jpeg,,作成ロボット);
今回は2グループ合同でのロボット作成だったのでNXTが2台あり...
タイヤの操作、各センサの値の認識を行うNXTをマスター側、ア...
-工夫点&br;
今回課題を達成するために行う動作が多く、キットを2台分使用...
#ref(center-tire.jpeg,,工夫点);
#ref(back-tire.jpeg,,工夫点);
右のモーターからタイヤへのギアのつながりを模式的に表すと...
#ref(gear-tire.png,,A,B,C,Dはギアを示す);
上記の図においてモーターとギアA、ギアBとギアC、ギアDとタ...
**ボール保持部分 [#m1a1d80c]
以下ボールをつかむ部分をハンド、ボールを持ち上げる部分を...
***ハンド [#l25b1265]
ハンド部分は上のギアを回転させることで下のギアに動力が伝...
下の写真はハンドを閉じる場合の動作である。
#ref(hand.jpeg,,ハンドを閉じる場合 緑矢印 ギアの回転方向...
***アーム [#ma519cb5]
モーターAの回転を橙丸部分の計5つのギアによってハンド部分...
下の写真の緑矢印の方向はハンドを閉じる方向である。&br;
#ref(arm-hand.jpeg,,緑矢印 モーターAの回転方向-ギア回転の...
モーターB、Cを同時に同じ方向へ回転させることで、アームを...
#ref(up-down.jpg,,アームの上下);
図のように下の橙棒をモーターの回転によって傾きを変えるこ...
***ハンドとアームの接合部分 [#w36cfbf8]
モーターAからアームを伝わってきた縦方向の回転は、ハンドの...
#ref(gear.jpeg,,接合部分);
**各種センサ [#y2cdbf1e]
今回は超音波センサを2つ、光センサを1つ使用した。S1でライ...
#ref(sensor.jpeg,,ロボット前方 各種センサ);
**試行錯誤 [#zb435d06]
ロボット作成当初はアームが長く、前輪タイヤが車体の前方や...
#ref(bad-robot.jpeg,,没機体);
*動作説明 [#z7957c1b]
今回の課題は前回の課題と類似点が多く存在するため類似点は...
なお今回と前回の大きな相違点として引数があり、以下にそれ...
+int型 整数を変数とする値を定義する
+float型 浮動小数を変数とする値を定義する
+string型 文字列を変数とする値を定義する
+long型 時間関数を変数とする値を定義する
**NXT間の通信 [#g7520775]
今回は2つのNXTを使用しているので、片方をマスターとしもう...
**ライントレース [#g5284910]
今回も前回と同様に線の境目をトレースするプログラムである...
follow_line(int bw_time,long min_t,int blk_cnt,string in...
において5つの引数を組み込むことで、変数の値によって行われ...
++bw_timeの値で旋回を行い始めるまでの時間を操作。また旋回...
++min_tの値で交差点判断を無視する時間を操作、また-1を指定...
++blk_cntの値に1を指定すると交差点判断をした時停止しライ...
++invert_infoにoffを指定した場合は何も行わず左の境目をト...
++sensor_switchにonを指定すると、S3に接続された超音波セン...
線の境目のトレース方法は前回同様{線外ならば線上に向かう...
**缶の索敵 [#t95593f1]
缶の索敵に関しては相違点としてタイヤ間の距離と索敵範囲の...
タイヤ間の距離は単純にロボットが変わり、前回より大きくな...
索敵範囲は前回と違い360度一回転しなくてもよかったため、ラ...
search_throw(string side_select,float rotate_angle)
に引数を組み込み、旋回方向と旋回角度を操作できるようにし...
++side_selectにrightを指定すると右旋回、leftを指定すると...
++rotate_angleに指定した角度分だけ旋回を行う&br;
#ref(robot-over.jpeg,,青線 タイヤ間の距離 緑矢印 right時...
旋回角度を算出する式は前回同様 (タイヤ直径/前輪間の距離)*...
**動作時間の測定 [#k1f77543]
動作時間の想定に関しては[[前回(Mission2):http://yakushi.s...
*使用プログラム [#n73f2320]
**スレーブ側 [#r0af1958]
-アームを上げる(プログラム名[arm_up])
task main(){
RotateMotor(OUT_BC,-40,90); //ボールを持ち上げる
}
-アームを下げる(プログラム名[arm_down])
task main(){
RotateMotor(OUT_BC,10,90);
Wait(300);
Off(OUT_BC);
ResetTachoCount(OUT_BC);
}
-ハンドを閉じる(プログラム名[hand_close])
task main(){
RotateMotor(OUT_A,-30,320); //ボールを掴む
Wait(300);
RotateMotor(OUT_BC,-40,15);
Off(OUT_ABC);
}
ハンドを閉じる(ボールを掴む)となぜかアームが下がってし...
-ハンドを開く(プログラム名[hand_open])
task main(){
RotateMotor(OUT_A,30,320); //ボールを放す
}
スレーブ側には上記の単純な4つのプログラムが入っている。
**マスター側 [#j5e525b9]
-使用マクロ
#define fw Off(OUT_BC);OnFwd(OUT_BC,30); // 直進
#define lt Off(OUT_BC);OnFwd(OUT_B,35); // 左回
#define rt Off(OUT_BC);OnFwd(OUT_C,35); // 右回
#define rrt Off(OUT_BC);OnFwd(OUT_C,20);OnFwd(OUT_B,-...
#define llt Off(OUT_BC);OnFwd(OUT_B,20);OnFwd(OUT_C,-...
#define wait_sec Off(OUT_BC);Wait(1000); ...
#define mini_go Off(OUT_BC);OnFwd(OUT_BC,30);Wait(150...
#define def_arm_up until(BluetoothStatus(conn)==NO_ER...
RemoteStartProgram(conn,"arm_up.rx...
Wait(4000);
#define def_arm_down until(BluetoothStatus(conn)==NO_...
RemoteStartProgram(conn,"arm_dow...
Wait(4000);
#define def_hand_close until(BluetoothStatus(conn)==N...
RemoteStartProgram(conn,"hand_...
Wait(4000);
#define def_hand_open until(BluetoothStatus(conn)==NO...
RemoteStartProgram(conn,"hand_o...
Wait(4000);
-定義関数
const float tire_diameter = 5.75; //タイヤの直径
const float tire_axis = 17.7; //タイヤ間の距離
const int gear_ratio = 6; //ギア比
const float pi = 3.14159; //円周率
const int en = 360; //円 360度
***NXT間の通信 [#m05b21a9]
until(BluetoothStatus(CONN)==NO_ERR); //スレーブ側...
RemoteStartProgram(CONN,"arm_up.rxe");
Wait(4000);
until(BluetoothStatus(CONN)==NO_ERR); //スレーブ側...
RemoteStartProgram(CONN,"arm_down.rxe");
Wait(4000);
until(BluetoothStatus(CONN)==NO_ERR); //スレーブ側...
RemoteStartProgram(CONN,"hand_close.rxe");
Wait(4000);
until(BluetoothStatus(CONN)==NO_ERR); //スレーブ側...
RemoteStartProgram(CONN,"hand_open.rxe");
Wait(4000);
[until(BluetoothStatus(CONN)==NO_ERR);]はNXT同士が繋がっ...
***ライントレース [#k104eca1]
-交差点の通過
void blk_selection(int blk_select){
if(blk_select!=1){ //blk_selectが1なら
wait_sec; //停止する
}
if(blk_select!=0){ //blk_selectが0なら
mini_go; //通過する
}
}
void follow_line(int bw_time,long min_t,int blk_cnt,s...
SetSensorLight(S1); //光センサ定義
int right_var; //光センサ値用変数
SetSensorLowspeed(S3); //超音波センサ定義
long t0,t1,start_t; // t0,t1,start_t 時間変数の定義
t1=CurrentTick(); // 今その時の時刻
t0=CurrentTick(); // 直進終了・右左折開始時刻
start_t=CurrentTick(); // ライントレース開始時刻
while(t1-start_t<min_t || min_t<0){ //ライントレ...
if(sensor_switch=="on"){ //sensor_switchにo...
if(SensorUS(S3)<16){ //S3が16?以内に障...
break; //while文から抜け...
}
}
right_var = SENSOR_1; // 光センサ値代入
if(invert_info=="on"){ //invert_infoにoffを...
right_var = right_var*(-1)+91;} //onを指...
if (right_var>50){
if (t1-t0>bw_time){ // 右回で指定した時...
if (blk_cnt>=0 && blk_cnt<=2 && inv...
blk_selection(blk_cnt); //bl...
break; //ライントレースを終...
}else{
rrt;}
}else{ // 右回
rt;}
}else if (right_var>40){
fw;
t0=CurrentTick(); //直進終了・右左折開始...
}else{
if (t1-t0>bw_time){ // 左回で bw_time[...
if (blk_cnt>=0 && blk_cnt<=2 && inv...
blk_selection(blk_cnt);
break;
}else{
llt;}
}else{ // 左回
lt;}}
t1=CurrentTick(); //今その時の時刻
}Off(OUT_BC);
}
***缶の索敵 [#v85d66c0]
void search_throw(string side_select,float rotate_ang...
SetSensorLowspeed(S2); //超音波センサ定義
int d_min=1000,d_gosa=11,side_flag=0;
long ang_min=0,angle=0,d_angle=0;
if (side_select=="right"){ //rightを指定し...
side_flag=1;
}else if(side_select=="left"){ //leftを指定して...
side_flag=-1;
}
ResetTachoCount(OUT_BC);
OnFwdSync(OUT_BC,30,100*side_flag);
while(((tire_diameter/(tire_axis*gear_ratio))*Mot...
if(d_min>SensorUS(S2)){
d_min=SensorUS(S2); //距離の最小値更新
angle=MotorTachoCount(OUT_C);
}
}
ang_min=MotorTachoCount(OUT_C)-angle;
Off(OUT_BC);
Wait(1000);
ResetTachoCount(OUT_BC);
RotateMotorEx(OUT_BC, 40, ang_min, -100*side_flag...
Off(OUT_BC);
ResetTachoCount(OUT_BC);
if(7<SensorUS(S2)){ //缶までの距離が7?以下になら
OnFwd(OUT_BC,40); //物体の方に近づく
while(7<SensorUS(S2) || 40>(pi*tire_diameter*...
d_angle=MotorTachoCount(OUT_C); //物体...
}
Off(OUT_BC);
RotateMotor(OUT_BC,30,en*2*gear_ratio/(pi*tir...
}
def_arm_up; //アームを上げる
RotateMotor(OUT_BC,30,en*d_gosa*gear_ratio/(pi*ti...
Wait(700);
def_hand_open; //ボールを放す
RotateMotor(OUT_BC,-30,en*d_gosa*gear_ratio/(pi*t...
def_arm_down; //アームを下げる
ResetTachoCount(OUT_BC);
RotateMotorEx(OUT_BC, 40, angle, -100*side_flag, ...
Off(OUT_BC);
}
***プログラム全体 [#ua423fd3]
task main(){
string invert_str="off";
int b_tyokusin=10,r_back=22; //直進する距離と後...
follow_line(1200, -1,1,invert_str,"off"); //Yか...
follow_line(800, -1,0,invert_str,"off");
def_hand_close; //青ボールを掴む
ResetTachoCount(OUT_BC);
RotateMotor(OUT_BC,30,en*b_tyokusin*gear_ratio/(p...
Off(OUT_BC);
search_throw("right",55.0); //右旋回角度55度で索敵
Wait(2000);
RotateMotor(OUT_BC,-30,en*b_tyokusin*gear_ratio/(...
Off(OUT_BC);
def_arm_up; //アームを上げる
RotateMotor(OUT_BC,-30,en*r_back*gear_ratio/(pi*t...
follow_line(600,1200000,-1,invert_str,"on"); //E...
RotateMotor(OUT_BC,-30,en*3*gear_ratio/(pi*tire_d...
def_arm_down; //アームを下げる
def_hand_close; //赤ボールを掴む
search_throw("left",270); //左旋回270度で索敵
Wait(1000);Off(OUT_BC);
}
*結果 [#s03258b7]
#ref(result.jpg,,課題3結果);
自分たちのグループ(N1N2)は本番では缶の索敵がずれる、ハ...
*感想・反省 [#e7e9bf4c]
ロボット本体に関しては大きく、重くなってしまったが、それ...
ハンドの不具合は、おそらくハンドが閉じ切らなかったことで...
後期のロボティクス入門ゼミを通して、これまであまりやった...
ページ名: