途中ですみませんすみません
control_idea1.cpp
- Committer:
- wasaco
- Date:
- 2015-06-19
- Revision:
- 0:fbc5f6dc768b
File content as of revision 0:fbc5f6dc768b:
#define target_lng 135 #define target_lat 35 float theta; float alpha = 30; //閾値 定数のほうがいいの? float targetX; float targetY; int step = 0; /*--- 制御部分 ---*/ while(1) { switch(step){ // 投下検出 case '0': if(/*投下検出*/){ /*滑空安定まで数秒待機*/ step = 1; break; } // 制御ルーチン case '1': /* いずれも地球を完全球体と仮定 */ /* 北から東回りで目標方向の角度を出力 */ targetY = cos( target_lat ) * sin( target_lng - gms.longitude ); targetX = cos( gms.latitude ) * sin( target_lat ) - sin( gms.latitude ) * cos( target_lat ) * cos( target_lng - gms.longitude ); theta = atan2f( targetY, targetX ); /* 南から東回りーπ〜+πのθを算出できるように基底変換 targetX = - ( target_lat - gms.latitude ) * DEG_TO_RAD; targetY = ( target_lng - gms.longitude ) * DEG_TO_RAD; theta = atan2f( targetY, targetX ) + 3.14159265 // 北から西回り0〜2πの角度を算出 */ if(yaw < theta - alpha) { //目標は左方向 /*左ひっぱる*/ } else if (yaw > theta - alpha) { //目標は右方向 /*右ひっぱる*/ } } }