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

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

?? robotskill.cpp

?? 一個簡單使用的控制器
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//	if(d<= REACHED_DIST && turnAngle)//		th=goal.th;	// Deciding transvel and rotvel factor	double transVelFactor, rotVelFactor;	if (!_simulationMode) {		//transVelFactor = 700.0;		transVelFactor = 600.0;		rotVelFactor = 200.0;	}	else {		transVelFactor = 500.0;		rotVelFactor = 100.0;	}	if (DEBUG_REACH_GOAL) {		rlogDebug("REACH_GOAL: Robot x: %.2f z: %.2f th: %.2f \n", robot->getPosX(), robot->getPosZ(), robot->getPosTh());		rlogDebug("REACH_GOAL: Goal x: %.2f z: %.2f  \n", goal.x, goal.z);		rlogDebug("REACH_GOAL: Distance to goal: %.2f Angle to goal: %.2f\n", d, th);	}	done = (d <= REACHED_DIST);/*	if(turnAngle){		done =done &&  (fabs(AnglesNormAngle(robot->getPosTh()-goal.th)) <= 5.0);        }*/        tVel = 0;	rVel=0;	if(done)	{		if (DEBUG_REACH_GOAL) 			rlogDebug("REACH_GOAL: Done.\n");		robot->setVelocity(0,0);		_rotCmdSpeed=0.0;		return done;   	}	if (DEBUG_REACH_GOAL) 		rlogDebug("REACH_GOAL: Not Done.\n");        	       /* if(d <= REACHED_DIST && turnAngle){                 //transVel=0;                 th=AnglesNormAngle(goal.th-robot->getPosTh());        }*/	// Controlling rotVel	if (!_simulationMode) {		double w_rot = fabs(StraightUp(fabs(th), 0, 45.0));		double dir = 0;		if(th != 0)			dir = th / fabs(th);		rVel = dir * w_rot * rotVelFactor;		if (fabs(rVel) < 40 && fabs(rVel) >= 1)			rVel=dir*40;	}	else {		double w_rot = fabs(StraightUp(fabs(th), 0, 90.0));		double dir = 0;		if(th != 0)			dir = th / fabs(th);		rVel = dir * w_rot * rotVelFactor;		if (fabs(rVel) < 40 && fabs(rVel) >= 1)			rVel=dir*40;        }	// Controlling Tvel	double w_r = fabs(StraightDown(fabs(th), 0, 20.0));	double w_trans;	if (!_simulationMode) 		w_trans = StraightUp(fabs(d), 0.0, 1000.0);	else		w_trans = StraightUp(fabs(d), 0.0, 500.0);	tVel = w_trans * w_r * transVelFactor; // controlling	int transVel = (int)  tVel;        int rotVel = (int) rVel;	/*if(abs(transVel)<10 && rVel!=0 && fabs(rVel)<10)                rotVel=(int)(rVel/rVel)*10;        */        _rotCmdSpeed=rotVel;	if ( DEBUG_REACH_GOAL ) 		rlogDebug("REACH_GOAL: Setting TransVel:  %d, RotVel: %d\n", transVel, rotVel);	robot->setVelocity(transVel, rotVel);	return done;}bool RobotSkill::robotInStall(int bumps){ 	return false;  //FIXME           struct timeval now=getCurrentTime();	double timeDelta=TimevalDiffMS(&_lastInuTime,&now);	if(fabs(timeDelta)<1000.0)		return false;	double InuSpeed=800.0*((robot->getPosTh()-_lastInu)/timeDelta);	if(DEBUG_STALL){		rlogDebug("_lastRotcmd %f inuspeed %f timeDelta %f\n",_lastRotCmdSpeed,InuSpeed,timeDelta);		rlogDebug("_lastRotCmdSpeed -InuSpeed --> %f\n",fabs(_lastRotCmdSpeed -InuSpeed));	}	if(fabs(_lastRotCmdSpeed -InuSpeed)>= 80.0)		_countStall++;	else 		_countStall-=2;	if(fabs(_lastRotCmdSpeed -InuSpeed)>= 35.0)		_countSmallStall++;	else _countSmallStall-=30;#define MAX_STALL_COUNT 6 #define MAX_STALL_COUNT_SMALL 60 	if(_countStall < 0) _countStall=0;	if(_countSmallStall < 0) _countSmallStall=0;	if(_countStall>MAX_STALL_COUNT ) _countStall=MAX_STALL_COUNT;	if(_countSmallStall>MAX_STALL_COUNT_SMALL) _countSmallStall=MAX_STALL_COUNT_SMALL;	_lastInu=robot->getPosTh();	_lastInuTime=getCurrentTime();	_lastRotCmdSpeed=_rotCmdSpeed;	return _countStall+bumps*0.5+_countSmallStall*0.1>8;}int RobotSkill::getBestDir(Pos goal, VFHState* vfhState){ //Returns best direction based on VFH	//Choose angle based on VFH  	double th,k_targ= AnglesNormAngle(angleRobotToPoint(goal.x, goal.z));	rescue_angle_pref_message msg;	msg.target = (int)k_targ;	int sec_th;	int sectors=vfhState->getNumSectors();	const int s_max = (int)round(0.9*sectors); //FIXME	int* freeVal=vfhState->getFreeSpaceValues();	bool found=false;	float sectorSize=(360.0/(float)sectors);	if(k_targ<0)		k_targ+=360;	int   goalSector=(int)(k_targ/sectorSize);	int   bestDiff=sectors+1,bestSector=-1;	int   free_threshold=0;	int   valley_size=0,k_n=0,k_f=0;	bool isValley=false;	bool endValley=false;	if(DEBUG_REACH_GOAL)		rlogDebug("*******************VALLEYS START***********************\n");		for(int i= 0;i<sectors;i++){    			if(freeVal[i]<=free_threshold){			valley_size++;			if(!isValley){//Start Valley				isValley=true; 				k_n=i;				if(DEBUG_REACH_GOAL)					rlogDebug(" START: %d\n",k_n);			}			found=true;			endValley=false;		} 		else{			if(isValley){				endValley=true;				} else 	endValley=false;		}		if(endValley ||(isValley && i==sectors-1)){			// 		if(i==sectors-1)			// 			i=sectors;			isValley=false; 			endValley=false;			k_f=i-1;			if(DEBUG_REACH_GOAL)				rlogDebug(" END: %d: ",k_f);			if(k_f-k_n>=s_max){ //wide valley				sec_th=(2*k_n+s_max)/2;					if(DEBUG_REACH_GOAL) rlogDebug(" wide valley %d\n",k_f-k_n);			}			else {//Narrow valley				sec_th=(k_n+k_f)/2;				if(DEBUG_REACH_GOAL) rlogDebug("narrow valley %d\n",k_f-k_n);			}			if(goalSector>=k_n && goalSector<=k_f ){				if(DEBUG_REACH_GOAL){					rlogDebug("*****FOUND EXACT ANGLE!!!*********** %d < gs %d  < %d  \n",k_n,goalSector,k_f);					rlogDebug("*******************VALLEY END***********************\n");				}				msg.choice=(int)AnglesNormAngle(k_targ);				ComPublishToRobot(RESCUE_ANGLE_PREF_NAME, &msg);				return (int)AnglesNormAngle(k_targ);			}			if( bestDiff>abs(goalSector-sec_th)){				if(DEBUG_REACH_GOAL) rlogDebug("******NEW BEST SECTOR: %d -- goal sector %d -- new diff %d -- old diff %d -- old sec %d****************\n",sec_th,goalSector,abs(goalSector-sec_th), bestDiff, bestSector);				bestSector=sec_th;				bestDiff=abs(goalSector-sec_th);				found=true;			}			valley_size=0;		}	}	if(DEBUG_REACH_GOAL) rlogDebug("*******************VALLEY END***********************\n");	if (!found){		rlogError("ERROR: No free direction found: STUCK!!!\n");		throw "stuck";	}	else{		th=AnglesNormAngle(bestSector*sectorSize);		rlogInfo(" Free sector %d at angle %f for sectorsize %f\n",bestSector,th,sectorSize);		msg.choice=(int)th;		ComPublishToRobot(RESCUE_ANGLE_PREF_NAME, &msg);		return (int)th;	}}bool RobotSkill::ActionBestAngleFreeFromStall(bool init, VFHState* vfhState){	rlogNote("Meine Position ist: (%f,%f,%f)\n", 			robot->getPosX(),			robot->getPosZ(),			robot->getPosTh());	double distToReach = 150.0;	if (init) {		rlogDebug("ActionBestAngleFreeFromStall: Init\n");		_beginPos.x = robot->getPosX();		_beginPos.z = robot->getPosZ();		_beginPos.th = robot->getPosTh();	} 	double angle;	if (vfhState->getFrontClear()) {		robot->setVelocity(100, 0);		if (DEBUG_BEST_ANGLE_FREE_FROM_STALL)			rlogDebug("ActionBestAngleFreeFromStall: GOING FORWARD!\n");	} else if (vfhState->getRearClear()) {		robot->setVelocity(-100, 0);		if (DEBUG_BEST_ANGLE_FREE_FROM_STALL)			rlogDebug("ActionBestAngleFreeFromStall: GOING BACK!\n");	} else {		angle = (double) vfhState->getAnglePreference();		if (DEBUG_BEST_ANGLE_FREE_FROM_STALL)			rlogDebug("ActionBestAngleFreeFromStall: GOING ANGLE %lf\n", angle);		double fak = 0.1 + StraightUp(fabs(angle), 10,90);		double rVel = 200 * fak;		if(angle < 0)			rVel = -rVel;		robot->setVelocity(0, (int)rVel);		if (DEBUG_BEST_ANGLE_FREE_FROM_STALL)			rlogDebug("ActionBestAngleFreeFromStall: rVel: %lf\n", rVel);	}	double dist = hypot(robot->getPosX()-_beginPos.x, robot->getPosZ()-_beginPos.z);	if (DEBUG_BEST_ANGLE_FREE_FROM_STALL)		rlogDebug("ActionBestAngleFreeFromStall: Dist %lf, required dist %lf\n", dist, distToReach);	if(dist >= distToReach*0.9){		rlogDebug("ActionBestAngleFreeFromStall: Goal Reached\n");		return true;	}	return false;}#define FFS_DELAY_FOR_RANDOM 5.0#define FFS_RANDOM_PROB 0.5#define FFS_TIMEOUT 10bool RobotSkill::ActionRandomFreeFromStall(bool init, VFHState* vfhState) {	(void)vfhState;        (void)init;	/*static struct timeval lastFreeFromStall = { 0, 0 };	  bool choose_new_strategie = true;	  static int timeout = 0;*/	double tvel = 0.0, rvel = 0.0;	/*if(init)	  choose_new_strategie = true;	  if(choose_new_strategie)	  {	//timeval curr = getCurrentTime();	//if( TimevalDiff(&curr, &lastFreeFromStall) >	//    FFS_DELAY_FOR_RANDOM && drand48() > FFS_RANDOM_PROB) //FIXME	{	*/    tvel = (drand48() > 0.5)? 900.0 : -900.0;	rvel = (drand48() > 0.5)? 320.0 : -320.0;	/*}	  timeout = FFS_TIMEOUT;	  lastFreeFromStall =  getCurrentTime();	  choose_new_strategie = false;	  }	  */	if (DEBUG_FREE_FROM_STALL)		rlogDebug("FFS: FreeFromStall random action (tvel,rvel) = (%1.2f,%1.2f)\n",tvel,rvel);	robot->setVelocity((int)tvel, (int)rvel);	/*	   timeout--;	   if(timeout < 0)	   choose_new_strategie = true;	   */	return false;}void RobotSkill::updateVictimRFID(bool ackState){	_victimAck = ackState;}bool RobotSkill::VictimRFIDWaitRequired(){	return !_victimAck; }void RobotSkill::setVictimWait() {	_victimAck = false;}/********************************************************************* * (C) Copyright 2006 Albert Ludwigs University Freiburg *     Institute of Computer Science * * All rights reserved. Use of this software is permitted for * non-commercial research purposes, and it may be copied only * for that use. All copies must include this copyright message. * This software is made available AS IS, and neither the authors * nor the Albert Ludwigs University Freiburg make any warranty * about the software or its performance. *********************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日产欧产精品推荐色 | 精品一区二区综合| 国产一区在线精品| 精品视频全国免费看| 国产色91在线| 日本成人在线电影网| 色狠狠桃花综合| 国产欧美一区视频| 精品一区二区在线播放| 欧美丝袜自拍制服另类| 中文字幕在线观看一区二区| 精品一区二区在线观看| 在线综合+亚洲+欧美中文字幕| 中文字幕制服丝袜成人av| 另类小说综合欧美亚洲| 精品1区2区3区| 一区二区不卡在线视频 午夜欧美不卡在| 国产在线精品一区二区夜色| 欧美一级片在线看| 五月天一区二区| 欧美日韩一区三区四区| 亚洲精品视频在线| 欧洲中文字幕精品| 1024成人网色www| 成人av午夜电影| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 在线观看91av| 手机精品视频在线观看| 精品视频资源站| 性做久久久久久| 欧美日韩mp4| 日韩av电影免费观看高清完整版 | 三级精品在线观看| 欧美日本精品一区二区三区| 亚洲国产一区二区三区| 欧美日韩国产影片| 青青草原综合久久大伊人精品| 欧美日韩一区久久| 亚洲国产精品一区二区久久 | 亚洲r级在线视频| 欧美日本一道本| 另类调教123区| 久久精品人人做人人综合| 国产精品资源站在线| 中文字幕欧美区| 色婷婷激情久久| 日韩和的一区二区| 久久网站最新地址| 成人h动漫精品一区二| 日韩毛片一二三区| 欧美日韩精品免费观看视频| 日韩成人一级片| 久久麻豆一区二区| 色悠悠久久综合| 美女国产一区二区| 国产精品少妇自拍| 在线视频你懂得一区二区三区| 亚洲电影视频在线| 精品91自产拍在线观看一区| av激情成人网| 日韩电影一区二区三区四区| 久久久美女毛片| 91成人网在线| 国内外精品视频| 一区二区三区不卡视频在线观看| 欧美一区二区网站| 国产激情一区二区三区四区| 亚洲一区二区欧美| 久久久精品黄色| 欧美日韩一二三区| 国产成人啪午夜精品网站男同| 亚洲男人天堂一区| 久久久精品免费观看| 在线观看一区日韩| 国产91丝袜在线观看| 亚洲成人自拍网| 日本一区二区视频在线| 88在线观看91蜜桃国自产| 99久久婷婷国产综合精品| 日韩成人免费看| 亚洲人亚洲人成电影网站色| 欧美一级xxx| 一本大道av一区二区在线播放| 国产一区二区免费视频| 香蕉成人伊视频在线观看| 国产午夜精品福利| 日韩视频123| 欧美日韩免费高清一区色橹橹| 成人精品一区二区三区中文字幕| 日本麻豆一区二区三区视频| 亚洲精品国产精品乱码不99 | 精品乱人伦小说| 在线观看一区二区视频| www.亚洲色图.com| 国产精品91一区二区| 麻豆精品蜜桃视频网站| 午夜精品久久久久久久久| 亚洲精品免费电影| 国产精品久久久久影院老司 | 一区二区三区丝袜| 成人免费一区二区三区视频 | 免费成人在线观看| 天堂av在线一区| 香蕉av福利精品导航| 一级日本不卡的影视| 亚洲日本va午夜在线影院| 自拍偷拍国产精品| 成人欧美一区二区三区小说| 亚洲国产精品ⅴa在线观看| 国产婷婷色一区二区三区| 日韩欧美国产小视频| 日韩亚洲欧美在线| 精品国产一区二区国模嫣然| 欧美哺乳videos| 精品福利一二区| 2019国产精品| 国产日韩欧美综合在线| 中文字幕成人在线观看| 国产精品国产三级国产aⅴ中文| 国产蜜臀97一区二区三区 | 秋霞电影网一区二区| 午夜国产精品一区| 日本三级韩国三级欧美三级| 青青国产91久久久久久| 激情另类小说区图片区视频区| 激情国产一区二区| 国产河南妇女毛片精品久久久| 国产.精品.日韩.另类.中文.在线.播放| 韩国欧美国产1区| 国产老妇另类xxxxx| 国产成人av自拍| 91亚洲精品久久久蜜桃| 色综合 综合色| 91精品免费在线观看| 久久精品日产第一区二区三区高清版 | 成人免费视频一区| 色诱视频网站一区| 欧美电影一区二区| 久久精品亚洲乱码伦伦中文| 亚洲人成7777| 日韩av二区在线播放| 成人一道本在线| 欧美日韩精品电影| 欧美mv日韩mv国产网站| 国产精品理论片| 天天色综合成人网| 国产美女久久久久| 欧美三级电影在线看| 精品三级av在线| 亚洲欧美另类图片小说| 日韩电影在线观看网站| 成人av网在线| 日韩精品专区在线| 中文字幕中文乱码欧美一区二区| 丝袜脚交一区二区| www.久久久久久久久| 欧美猛男男办公室激情| 国产人伦精品一区二区| 亚洲不卡在线观看| 成人涩涩免费视频| 欧美日韩成人综合| 国产精品萝li| 男女激情视频一区| 久久美女高清视频| 国产精品天天摸av网| 五月婷婷综合在线| 91在线视频免费91| 欧美成人在线直播| 亚洲成av人片在线| av毛片久久久久**hd| xnxx国产精品| 奇米色777欧美一区二区| 99re亚洲国产精品| 国产三级精品在线| 极品美女销魂一区二区三区| 欧美日韩精品一区二区在线播放| 国产精品久久久久久久久动漫 | 99精品在线观看视频| 久久久三级国产网站| 麻豆成人久久精品二区三区红 | 在线日韩一区二区| 中文字幕第一区| 国产精品一二三区在线| 日韩欧美国产一区二区在线播放| 亚洲成人免费看| 一本久久精品一区二区| 1区2区3区国产精品| 成人av在线电影| 欧美国产精品劲爆| 国产精品一二二区| 久久精品亚洲麻豆av一区二区| 久久成人av少妇免费| 欧美一区二区三级| 天堂va蜜桃一区二区三区| 国产精品家庭影院| 成人av电影在线播放| 中文字幕亚洲区| av一区二区不卡| 中文字幕一区二区三中文字幕| 高清视频一区二区|