亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? basicworldmodel.cpp

?? 機器人足球AI設計比賽
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
	{		Time timeDelta = ( getTimeLastSeen() - iter->getTime() ) * 0.01;		if ( timeDelta > 0 )		{			//LOG( 21,"num: %i",num);			//-* update vision			iter->updateLastSeen( _timeLastSeen, getVisionSense( VisionObject(num) ) );			//LOG( 21, "vision: %f,%f,%f",iter->getVisionSeen().distance,iter->getVisionSeen().theta,iter->getVisionSeen().phi);			//-* cal global pos			Vector3f globalPos = posMe + iter->getPosRelativeSeen(); 			globalPos[2] = iter->getRadius();			//LOG( 21, "globalPos: %f,%f,%f",globalPos[0],globalPos[1],globalPos[2]);			//-* cal vel			Vector3f globalVelocity = ( globalPos - iter->getGlobalPos() )/timeDelta;					//-* update			iter->updateDynamic( getTimeLastSeen(),									globalPos, posMe, globalVelocity, Vector3f(0,0,0) );			}	}}void BasicWorldModel::setupFixedObjects(){	//-* complete test	//-- the flag global position is not we see in the monitor	//-- they are just on the ground ( z = 0 )	const float flagHight = 0;	//-* side: left or right?	int side = 1;	if( getTeamIndex() == TI_RIGHT )		side = -1;	_flag_1_l.setGlobalPos( Vector3f( -_fieldLength/2*side, -_fieldWidth/2*side, flagHight ) );	_flag_1_r.setGlobalPos( Vector3f(  _fieldLength/2*side, -_fieldWidth/2*side, flagHight ) );	_flag_2_l.setGlobalPos( Vector3f( -_fieldLength/2*side,  _fieldWidth/2*side, flagHight ) );	_flag_2_r.setGlobalPos( Vector3f(  _fieldLength/2*side,  _fieldWidth/2*side, flagHight ) );	_goal_1_l.setGlobalPos( Vector3f( -_fieldLength/2*side, -_goalWidth/2, 0 ) );	_goal_1_r.setGlobalPos( Vector3f(  _fieldLength/2*side, -_goalWidth/2, 0 ) );	_goal_2_l.setGlobalPos( Vector3f( -_fieldLength/2*side,  _goalWidth/2, 0 ) );	_goal_2_r.setGlobalPos( Vector3f(  _fieldLength/2*side,  _goalWidth/2, 0 ) );}//////////////////// localization ////////////////////////void BasicWorldModel::localization(){	//-* if needed localization?	if ( !getRealTime() > _myself.getTime())		return;		//-* constants	const float max_speed = real_agent_max_speed*2;		Vector3f weightedPos;	VisionSense flagSense;	// for kalman	float k = 0.0;	Vector3f var = Vector3f(0,0,0);	Vector3f totalVar = Vector3f(0,0,0);	Vector3f newPos;	// iterate through all flags, localize the Player and	// finally create a weighted average of all these positions	for( int flag = VO_FLAG1L; flag <= VO_GOAL2R; ++flag)	{		newPos = localizeWithOneFlag( VisionObject(flag) );		const FixedObject *flagPtr = getFlagPtr( VisionObject(flag) );		var = flagPtr->getVisionError();				// first flag, so intialize pos		if( flag == VO_FLAG1L )		{			totalVar  = var;            			weightedPos = newPos;		}		else		{			//-* otherwise use new position based on weighted variance kalman filtering technique			for (int i=0; i<3; i++)			{				k = totalVar[i] / ( var[i] + totalVar[i] );				weightedPos[i] += k*( newPos[i] - weightedPos[i] );				totalVar[i] -= k*totalVar[i];			}		}	}		Vector3f posGlobal = _myself.getGlobalPos();	Vector3f velGlobal = _myself.getGlobalVelocity();	unsigned int deltaSteps = static_cast<unsigned int>(getRealTime()-_myself.getTime());	Time deltaTime = deltaSteps/100.0f;	_myself.updateKalman( deltaTime);	LOG( 24,"deltaTime: %f",deltaTime);	LOG( 24,"vision pos: %f,%f,%f",weightedPos[0],weightedPos[1],weightedPos[2]);	if ( (weightedPos-posGlobal).Length() > max_speed*deltaTime )//-* be moved?	{		_myself.updateDynamic( getRealTime(), weightedPos, weightedPos, Vector3f(0,0,0), Vector3f(0,0,0) );	}	else	{		Vector3f weightedVel;		Vector3f oldPos = posGlobal;		predictPlayerStateAfterNrSteps( posGlobal, velGlobal, deltaSteps);		LOG( 24,"drive pos: %f,%f,%f",posGlobal[0],posGlobal[1],posGlobal[2]);				Vector3f kalmanP22 = _myself.getKalmanP22();		for ( int i =0; i<3; i++ )		{			var[i] = kalmanP22[i];			k = totalVar[i] / ( var[i] + totalVar[i] );			weightedPos[i] += k*( posGlobal[i] - weightedPos[i] );			//kalmanP22[i] -= k*kalmanP22[i];			kalmanP22[i] = totalVar[i]*(1-k);						k = totalVar[i] / ( (_myself.getKalmanP12())[i]+ totalVar[i] );			weightedVel[i] = ( weightedPos[i] - oldPos[i])/deltaTime;			weightedVel[i] += k*( velGlobal[i] - weightedVel[i] );		}		_myself.setKalmanP22( kalmanP22);		LOG( 24,"total vision var: %f,%f,%f",totalVar[0],totalVar[1],totalVar[2]);		LOG( 24,"drive var: %f,%f,%f",var[0],var[1],var[2]);		weightedVel[2] = 0.0;		LOG( 24,"Global pos: %f,%f,%f",weightedPos[0],weightedPos[1],weightedPos[2]);		if ( weightedVel.Length() >real_agent_max_speed)//-* error?		{			weightedVel.Normalize();			weightedVel = weightedVel*real_agent_max_speed;		}		_myself.updateDynamic( getRealTime(), weightedPos, weightedPos, weightedVel, Vector3f(0,0,0) );	}}//-* this localization use all 8 flags in the field//-- beacuse of symmetry//-- myPos = SIGMA(flagPos)/(-8)Vector3f BasicWorldModel::localizationWithAllFixedObjects() const{	Vector3f posAgent =   _flag_1_l.getPosRelativeLastSeen()						+ _flag_1_r.getPosRelativeLastSeen()						+ _flag_2_l.getPosRelativeLastSeen()						+ _flag_2_r.getPosRelativeLastSeen()						+ _goal_1_l.getPosRelativeLastSeen()						+ _goal_1_r.getPosRelativeLastSeen()						+ _goal_2_l.getPosRelativeLastSeen()						+ _goal_2_r.getPosRelativeLastSeen();	posAgent[0] /= -8;	posAgent[1] /= -8;	posAgent[2] = _myself.getRadius();	return posAgent;}Vector3f BasicWorldModel::localizeWithOneFlag( VisionObject flag ) const{	const FixedObject *flagPtr = getFlagPtr( flag );	Vector3f flagPos = getFlagGlobalPos(flag);	Vector3f pos2Flag  = flagPtr->getRelativePosSeen();		// appropriate coord. quadrant	// BUG?	/*if( getTeamIndex() == TI_RIGHT )	{		pos2Flag[0] = -pos2Flag[0];		pos2Flag[1] = -pos2Flag[1];	}*/	return flagPos - pos2Flag;}//-* get Vector3f in a vector< PlayerObject > Vector3f BasicWorldModel::getVector3fInVector( Vector3fType vt, vector< PlayerObject > team, unsigned int num ) const{	vector< PlayerObject >::iterator iter = team.begin()+num-1;		//-* if wrong num, return illegal value	if ( iter >= team.begin() && iter < team.end() )	{		Vector3f res = vector3f_illegal;		switch ( vt )		{			case VT_GLOBAL_POS :				res = iter->getGlobalPos();			break;						case VT_GLOBAL_VEL :				res = iter->getGlobalVelocity();			break;						case VT_GLOBAL_ACC :				res = iter->getGlobalAcceletation();			break;						case VT_RELATIVE_POS :				res = iter->getRelativePos();			break;						case VT_RELATIVE_POS_SEEN :				res = iter->getRelativePosSeen();			break;						default:				break;		}		return res;	}	else		return vector3f_illegal;}Vector3f BasicWorldModel::getPlayerGlobalPosInTeam( vector<PlayerObject> team, unsigned int num ) const{	return getVector3fInVector( VT_GLOBAL_POS, team, num );}Vector3f BasicWorldModel::getPlayerGlobalVelInTeam( vector<PlayerObject> team, unsigned int num ) const{	return getVector3fInVector( VT_GLOBAL_VEL, team, num );}Vector3f BasicWorldModel::getPlayerGlobalPos( bool isTeammate, unsigned int num ) const{	return  isTeammate?			getTeammateGlobalPos( num ):			getOpponentGlobalPos( num );		}Vector3f BasicWorldModel::getPlayerGlobalVel( bool isTeammate, unsigned int num ) const{	return  isTeammate?			getTeammateGlobalVel( num ):			getOpponentGlobalVel( num );		}/*!	get player's position relative to me	\param team, indicate which team is the player in	\param num, indicate the player's num	\return relative position*/Vector3f BasicWorldModel::getPlayerRelativePosInTeam( vector<PlayerObject> team, Num num ) const{	return getVector3fInVector( VT_RELATIVE_POS, team, num );}/*!	get player's position relative to me	\param isTeammate, indicate which team is the player in	\param num, indicate the player's num	\return relative position*/Vector3f BasicWorldModel::getPlayerRelativePos( bool isTeammate, unsigned int num ) const{	return  isTeammate?			getTeammateRelativePos( num ):			getOpponentRelativePos( num );}/*!	get player's position in sense to relative me	\param team, indicate which team is the player in	\param num, indicate the player's num	\return relative position*/Vector3f BasicWorldModel::getPlayerRelativePosSeenInTeam( vector<PlayerObject> team, Num num ) const{	return getVector3fInVector( VT_RELATIVE_POS_SEEN, team, num );}/*!	get player's position  in sense relative to me	\param isTeammate, indicate which team is the player in	\param num, indicate the player's num	\return relative position*/Vector3f BasicWorldModel::getPlayerRelativePosSeen( bool isTeammate, Num num ) const{	return  isTeammate?			getTeammateRelativePos( num ):			getOpponentRelativePos( num );}const FixedObject * BasicWorldModel::getFlagPtr( VisionObject flag ) const{	const FixedObject *flagPtr;	switch ( flag )	{		case VO_FLAG1L :			flagPtr = &_flag_1_l;			break;		case VO_FLAG1R :			flagPtr = &_flag_1_r;			break;		case VO_FLAG2L :			flagPtr = &_flag_2_l;			break;		case VO_FLAG2R :			flagPtr = &_flag_2_r;			break;		case VO_GOAL1L :			flagPtr = &_goal_1_l;			break;		case VO_GOAL1R :			flagPtr = &_goal_1_r;			break;		case VO_GOAL2L :			flagPtr = &_goal_2_l;			break;		case VO_GOAL2R :			flagPtr = &_goal_2_r;			break;		default:			return NULL;	}	return flagPtr;}bool BasicWorldModel::isThinkTime( const Time& time) const{	return ( find( _thinkTimeSet.begin(), _thinkTimeSet.end(), time) 				!= _thinkTimeSet.end() );}/** calculate offside line \param isOur is Our or Opp?\return the offside line*/float BasicWorldModel::calculateOffsideLine( bool isOur ){		/** find the second nearst to the base line in the field */	int sideF = 1;	if ( !isOur ) sideF = -1;	float lastX = 0;	float last2X = 0; // the offside line minimum is 0	float tmp;	float baseLine = getOppBaseLine();	for ( Num i=1; i<=players_num; i++)	{		tmp = sideF*getPlayerGlobalPos(!isOur,i).x();		if ( tmp < baseLine && tmp > 0 )		{			if ( tmp > last2X )			{				swap( tmp, last2X );			}			if ( last2X > lastX )			{				swap( lastX, last2X );			}		}	}	// behind ball is not offside	float ballX = sideF*getBallGlobalPos().x();	if ( ballX > last2X )		last2X = ballX;		return last2X*sideF;}/** update the two offside lines*/void BasicWorldModel::updateOffSideLine(){	_ourOffSideLine = calculateOffsideLine(true);	_oppOffSideLine = calculateOffsideLine(false);}bool BasicWorldModel::updateObjectVisionPosition( const std::string& obj, const Polar& pol){	//-* try to lookup the VisionObject	TVisionObjectMap::iterator iterVisionObject = _visionObjectMap.find(obj);	if (iterVisionObject == _visionObjectMap.end())	{		LOGERR("unknown object: %s",obj.c_str());		return false;	}	VisionObject vo = iterVisionObject->second;	//-* update the vision map	_visionMap[vo] = pol;	LOG( 2,"success in update obj %s, pol ( %f, %f, %f)",obj.c_str(),pol.distance,pol.theta,pol.phi);	return true;}bool BasicWorldModel::setPlayMode( const string& playMode ){	//-* try to lookup the play mode	TPlayModeMap::iterator iter = _playModeMap.find(playMode);	if ( iter != _playModeMap.end() )	{		_playMode = (TPlayMode)(*iter).second;		return true;	}	else	{		LOGERR(	"[Error](BasicWorldModel) could not parse playmode: "+					playMode+"\n" );		return false;	}}void BasicWorldModel::setTeamIndex( const string& team ){	//-* look up for team index	if (team == "left")        _teamIndex = TI_LEFT;    else if (team == "right")        _teamIndex = TI_RIGHT;    else	{		_teamIndex = TI_NONE;		LOGERR("(BasicWorldModel) received TeamIndex TI_NONE\n");	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色av综合在线| 欧美日韩中文精品| 肉肉av福利一精品导航| 日韩欧美亚洲另类制服综合在线| 国产精品一区一区| 人禽交欧美网站| 91精品一区二区三区久久久久久 | 午夜私人影院久久久久| 久久99深爱久久99精品| 激情六月婷婷综合| 国产精品亚洲午夜一区二区三区| 884aa四虎影成人精品一区| 欧美变态凌虐bdsm| 欧美成人精品福利| 亚洲特级片在线| 三级在线观看一区二区| 欧美三日本三级三级在线播放| 成人aa视频在线观看| 亚洲国产综合在线| 蜜桃传媒麻豆第一区在线观看| 高清在线不卡av| 91在线视频免费91| 亚洲va天堂va国产va久| 日韩久久一区二区| 欧美日韩一区二区在线观看 | 成人精品在线视频观看| 欧美午夜电影网| 国产成人精品网址| 91精品综合久久久久久| 日韩精品一二三| 日韩高清在线不卡| 国产日本欧洲亚洲| 国产一区二区三区综合| 久久99久久精品| 国产成人午夜精品影院观看视频 | 在线观看91av| 5858s免费视频成人| 精品久久人人做人人爱| 国产精品久久午夜夜伦鲁鲁| 亚洲成人777| 国产一区啦啦啦在线观看| 色天天综合久久久久综合片| 欧美一区二区成人6969| 国产精品美日韩| 欧美日韩亚洲综合在线| 国产精品久线在线观看| 亚洲国产精品人人做人人爽| 久久激情综合网| www.日韩精品| 欧美mv日韩mv国产网站app| 亚洲欧美另类图片小说| 琪琪久久久久日韩精品| 成人激情电影免费在线观看| 欧美日韩在线免费视频| 中文字幕不卡一区| 国内精品伊人久久久久av影院| 91久久精品一区二区三区| 精品国产乱码久久久久久蜜臀| 亚洲欧美一区二区三区久本道91 | 日产欧产美韩系列久久99| 成人高清视频免费观看| 欧美主播一区二区三区美女| 蜜芽一区二区三区| 91视频www| 欧美激情中文字幕一区二区| 青青草国产精品亚洲专区无| 91小视频在线| 国产欧美一区二区精品久导航| 欧美高清dvd| 亚洲成人综合在线| 91麻豆视频网站| 亚洲素人一区二区| 91亚洲精品乱码久久久久久蜜桃| 国产欧美日韩中文久久| 精品一区二区三区免费视频| 日韩一区二区三区免费看 | 亚洲国产另类av| 一本到不卡精品视频在线观看| 亚洲国产精品t66y| 日本不卡123| 91精品国产一区二区三区蜜臀| 亚洲综合小说图片| 欧美亚洲国产怡红院影院| 亚洲欧洲日韩在线| 色偷偷久久人人79超碰人人澡| 亚洲三级电影全部在线观看高清| 91年精品国产| 亚洲午夜激情av| 91精品国产综合久久精品| 免费久久99精品国产| 日韩亚洲欧美一区二区三区| 日本vs亚洲vs韩国一区三区| 日韩午夜精品电影| 国产成人精品www牛牛影视| 国产精品网曝门| 欧美精品一区二区三区四区 | 日韩女优av电影在线观看| 石原莉奈在线亚洲三区| 日韩av一二三| 久久久久久**毛片大全| 成人网在线播放| 亚洲免费av高清| 欧美中文字幕一二三区视频| 日日夜夜免费精品视频| 2020国产精品自拍| 91在线精品一区二区三区| 亚洲综合色区另类av| 91精品国产综合久久久久| 国内成人免费视频| 中文字幕亚洲欧美在线不卡| 精品视频在线免费看| 日日摸夜夜添夜夜添国产精品 | 日本一区二区综合亚洲| 色视频一区二区| 日本视频一区二区三区| 国产女人18毛片水真多成人如厕| 夫妻av一区二区| 日韩电影网1区2区| 亚洲人成网站在线| 欧美电影免费观看完整版 | 中文字幕一区二区三中文字幕| 欧美激情在线观看视频免费| 欧美三级在线播放| 国产精品18久久久久久久网站| 一区二区久久久| 国产亚洲女人久久久久毛片| 欧美日韩国产三级| 粉嫩av一区二区三区在线播放| 亚洲国产精品人人做人人爽| 久久精品这里都是精品| 一本久久a久久精品亚洲| 免费在线欧美视频| 一区二区三区自拍| 国产精品成人一区二区三区夜夜夜| 欧美久久一二区| 91久久国产综合久久| 国产精品99精品久久免费| 石原莉奈在线亚洲二区| 亚洲免费观看高清| 亚洲欧美在线观看| 国产视频亚洲色图| 久久色视频免费观看| 日韩欧美卡一卡二| 欧美日韩中字一区| 国产超碰在线一区| 国产一区二区三区高清播放| 久久草av在线| 亚洲成年人影院| 亚洲影视资源网| 亚洲最快最全在线视频| 洋洋成人永久网站入口| 国产亚洲成年网址在线观看| 日韩欧美一级二级三级| 欧美老女人在线| 欧美日本免费一区二区三区| 欧美日韩一区二区三区四区| 成人精品在线视频观看| 成人精品鲁一区一区二区| 成人中文字幕在线| av在线播放一区二区三区| 高清shemale亚洲人妖| 国产成人一区在线| 喷水一区二区三区| 久久精品免费观看| 狠狠色丁香九九婷婷综合五月| 国产精品视频免费| 国产精品美女久久久久久久网站| 国产欧美精品一区二区三区四区 | 日韩激情av在线| 老司机精品视频一区二区三区| 蜜桃视频一区二区三区| 美女诱惑一区二区| 国产成人a级片| www.久久久久久久久| 欧美伊人久久大香线蕉综合69 | 日本一区二区高清| 亚洲精品视频在线看| 天使萌一区二区三区免费观看| 蜜臀久久99精品久久久久宅男| 激情综合网天天干| 色综合天天综合色综合av| 欧美日韩二区三区| 中文字幕一区二区三区四区| 亚洲国产精品二十页| 亚洲一二三级电影| 国产老妇另类xxxxx| 91久久精品网| 久久综合九色综合97婷婷女人 | 国产麻豆精品在线| 97精品久久久午夜一区二区三区| 日韩一卡二卡三卡四卡| 精品欧美黑人一区二区三区| 国产精品拍天天在线| 亚洲国产美女搞黄色| 国产成人小视频| 日韩一区二区免费高清| 中文字幕一区二区三区四区不卡| 日韩av一二三| 91搞黄在线观看| 欧美激情在线免费观看|