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

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

?? robotskill.cpp

?? 一個簡單使用的控制器
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "RobotSkill.h"#include <math.h>#include "util/angles.h"#include "util/timeutil.h"#include "util/misc.h"#include "msg_types.h"#include "util/robotId.h"#include "com/ipc_com.h"#include "logger/src/logger.h"#include <stdlib.h>#define DEBUG_PATH 0#define DEBUG_VICTIM 0#define DEBUG_RANGES 0#define DEBUG_REACH_GOAL 0 #define DEBUG_REACH_GOAL_WITH_OBSTACLES 0#define DEBUG_FOLLOW_WALL 0#define DEBUG_FOLLOW_PATH 0#define DEBUG_FREE_FROM_STALL 0#define DEBUG_ACTIVE_PERCEPTION 0#define DEBUG_BEST_ANGLE_FREE_FROM_STALL 0#define DEBUG_STALL 0 #define CO2_SENSE_DELAY 10*1000.0 // in ms#define TURN_AROUND_DELAY 10*1000.0 // in ms#define RFID_TAG_DEPLOY_TIME 5*1000.0 // in ms#define MAX_WAIT_TIME_STOP_ROBOT 1*1000.0 // in ms/********************************************** * msgHandlerVictimRFID **********************************************/static void msgHandlerVictimRFID(MSG_INSTANCE msgRef, BYTE_ARRAY callData, void *clientData){   IPC_RETURN_TYPE err = IPC_OK;   FORMATTER_PTR formatter;   rescue_victim_rfid_message msg;   formatter = IPC_msgInstanceFormatter(msgRef);   err = IPC_unmarshallData(formatter, callData, &msg, sizeof(msg));   IPC_freeByteArray(callData);   if (DEBUG_VICTIM)      rlogDebug( "Received VICTIM_RFID from robot (%d)", msg.robot.id);   ((RobotSkill*)clientData)->updateVictimRFID(false);}/********************************************** * msgHandlerVictimAck **********************************************/static void msgHandlerVictimAck(MSG_INSTANCE msgRef, BYTE_ARRAY callData, void *clientData){   IPC_RETURN_TYPE err = IPC_OK;   FORMATTER_PTR formatter;   rescue_victim_ack msg;   formatter = IPC_msgInstanceFormatter(msgRef);   err = IPC_unmarshallData(formatter, callData, &msg,         sizeof(msg));   IPC_freeByteArray(callData);   if (DEBUG_VICTIM)      rlogDebug( "Received VICTIM_ACK from robot (%i)\n", msg.robot.id);   ((RobotSkill*)clientData)->updateVictimRFID(true);}/********************************************** * msgHandlerPathMessage **********************************************/   static void msgHandlerPath(MSG_INSTANCE msgRef, BYTE_ARRAY callData, void *clientData){  if (DEBUG_PATH)   rlogDebug("msgHandlerPath INVOKED\n");   IPC_RETURN_TYPE err = IPC_OK;   FORMATTER_PTR formatter;   rescue_path_message msg;   formatter = IPC_msgInstanceFormatter(msgRef);   err = IPC_unmarshallData(formatter, callData, &msg,         sizeof(msg));   IPC_freeByteArray(callData);   if (msg.robot.id != getRobotId()) {      if (DEBUG_PATH)         rlogDebug("Ignoring PATH_MESSAGE for other robot. own id: %d, msg id: %d\n", getRobotId(), msg.robot.id);      return;   }   if (DEBUG_PATH) {      rlogDebug( "Received PATH_MESSAGE:  ");      rlogDebug( "Num Nodes: (%d) ", msg.num);      rlogDebug( "\n");   }   ((RobotSkill*)clientData)->update(msg);}RobotSkill::RobotSkill(bool useKalmanPoses, bool simulationMode):   _lastActivePerception (-1), _angleBeforeTurn(0), _turnAroundSecondHalf(false),   _activePerceptionDone(true), _initActivePerception(false){   _simulationMode = simulationMode;   robot = new RobotAction(useKalmanPoses);   rfidA = new RFIDAction();   this->path_message.num = 0;   _tagDeployStartTime.tv_sec=0;   _tagDeployStartTime.tv_usec=0;   _victimAck = true;   _angleHyst=0;    gettimeofday(&_activePercetionTimeout, 0);   ComSubscribeToRobot(RESCUE_PATH_NAME, msgHandlerPath,this);   ComSubscribeToRobot(RESCUE_VICTIM_RFID_NAME, msgHandlerVictimRFID,this);   ComSubscribeToRobot(RESCUE_VICTIM_ACK_NAME, msgHandlerVictimAck,this);   REACHED_DIST=100;   _rotCmdSpeed=0.0;   _lastRotCmdSpeed=0.0;    _lastInu=0.0;   _countStall=0;   _countSmallStall=0;}void RobotSkill::update(rescue_path_message &msg) {   path_message = msg;   _path.clear();   Pos p;   memset(&p, 0, sizeof(p));   for (int i = 0; i < msg.num; i++) {      p.x = msg.x[i];      p.z = msg.y[i];      p.th = msg.th[i];      p.timeStamp = msg.robot.ts;      _path.push_back(p);   }}double RobotSkill::distanceRobotToPoint(double x, double z){   return hypot(x - robot->getPosX(), z - robot->getPosZ());}    double RobotSkill::angleRobotToPoint(double x, double z){   double th;   th = AnglesAtan2(x - robot->getPosX(), z - robot->getPosZ());   th = AnglesNormAngle(th);   //rlogDebug("Angle to Point: %f\n",th);   // rlogDebug("Robot Angle : %f\n",robot->getPosTh());   th = AnglesSubAngles(th, robot->getPosTh());   //rlogDebug("Angle to View: %f\n",th);   th += 180;   th = AnglesNormAngle(th);   return(th);}void RobotSkill::adjustPathToRobotPos(){    if (DEBUG_FOLLOW_PATH)      rlogDebug("APR: Path Length: %d \n", _path.size());   double minDist = HUGE_VAL;   double dist;   int index = -1;   if (_path.size() <= 1) {      return;   }   for (unsigned int i = 0; i < _path.size() - 1; i++) {      dist = hypot(robot->getPosX() - _path[i].x, robot->getPosZ() - _path[i].z);      if (dist <= minDist) {         minDist = dist;         index = i;      }   }   for (unsigned int i = index; i < _path.size() - 1; i++) {      dist = hypot(robot->getPosX() - _path[i].x, robot->getPosZ() - _path[i].z);      if (dist <= REACHED_DIST) {         index++;      }   }   if (DEBUG_FOLLOW_PATH)      rlogDebug("APR: Path index: %d \n", index);   if (index <= 0) {      return;   }   vector<Pos>::iterator iter;   iter = _path.begin();   for(int i = 0; i < index; i++) {      _path.erase(iter);      iter++;   }}bool RobotSkill::ActionStop() {   robot->setVelocity(0, 0);   _rotCmdSpeed=0;   return false;}bool RobotSkill::ActionFollowPath(bool init, VFHState* vfhState) {   (void) init;   if(_path.empty())      throw "nopath";   //Pfad an aktuelle Position anpassen   adjustPathToRobotPos();   if (DEBUG_FOLLOW_PATH)      rlogDebug("AFP: Path Length: %d \n", _path.size());   double go_x;   double go_y;   int index=0;   if (_path.size() > 0) {      go_x = _path[index].x;      go_y = _path[index].z;   } else {      go_x = robot->getPosX();      go_y = robot->getPosZ();   }   if (DEBUG_FOLLOW_PATH)      rlogDebug("AFP: Go (dx, dy): (%.2f, %.2f) \n", go_x, go_y);   Pos goal;   goal.x = go_x;   goal.z = go_y;   /*if(_path.size()==(unsigned int)(index+1)) //turn into direction at the end of the path   {      // rlogInfo("Setting ending angle %f\n",_path[index].th);	   goal.th = _path[index].th;	   ActionReachGoal(true, goal, vfhState,true);   }   else   {  	   goal.th=0;	   ActionReachGoal(true, goal, vfhState);   }*/    ActionReachGoal(true, goal, vfhState);   if (DEBUG_FOLLOW_PATH)	   rlogDebug("AFP: Goal (x, z): (%.2f, %.2f) Robot: (x,z): (%.2f, %.2f) \n", goal.x, goal.z, robot->getPosX(), robot->getPosZ());   return false;}bool RobotSkill::ActionFreeGradient(RobotSkill::Pos goal){	double tVel=0;	double rVel=0;	bool done = false; 	double d = distanceRobotToPoint(goal.x, goal.z);	double th= angleRobotToPoint(goal.x, goal.z);      // Deciding transvel and rotvel factor	double transVelFactor, rotVelFactor;	if (!_simulationMode) {		//transVelFactor = 700.0;		transVelFactor = 1000.0;		rotVelFactor = 500.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);	}        tVel = 0;	rVel=0;         	if (DEBUG_REACH_GOAL) 		rlogDebug("REACH_GOAL: Not Done.\n");        		// 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::ActionReachGoal(bool init, Pos goal, VFHState* vfhState, bool turnAngle){    (void) turnAngle;	(void) init;	(void)vfhState;	double tVel=0;	double rVel=0;	bool done = false; 	double d = distanceRobotToPoint(goal.x, goal.z);	double th= angleRobotToPoint(goal.x, goal.z);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线精品免费| 91丝袜国产在线播放| 成人app下载| 欧美一卡二卡三卡| 亚洲欧美激情在线| 韩国一区二区视频| 精品视频一区二区三区免费| 日本一区二区免费在线 | 国内精品国产三级国产a久久| bt欧美亚洲午夜电影天堂| 91精品国产综合久久久久| 欧美国产激情一区二区三区蜜月 | 欧美日韩一区二区三区四区五区| 国产视频一区在线播放| 奇米影视一区二区三区| va亚洲va日韩不卡在线观看| 久久久综合九色合综国产精品| 天堂久久久久va久久久久| 95精品视频在线| 久久久久久亚洲综合| 青青草97国产精品免费观看| 色综合天天综合狠狠| 国产亚洲一区二区三区在线观看| 性欧美疯狂xxxxbbbb| 欧美最猛性xxxxx直播| 成人免费在线播放视频| 成人免费高清在线| 国产精品视频一二三| 国产成人三级在线观看| 久久精品人人做人人综合| 国产乱淫av一区二区三区| 精品国产一区二区在线观看| 男女性色大片免费观看一区二区| 欧美日韩国产高清一区二区三区 | 精品综合免费视频观看| 日韩欧美123| 久久99国产精品麻豆| 日韩限制级电影在线观看| 婷婷一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 欧美一区二区免费观在线| 丝袜诱惑亚洲看片| 欧美一区二区三区成人| 韩日精品视频一区| 欧美激情在线看| 99re热这里只有精品免费视频| ●精品国产综合乱码久久久久| 一本色道亚洲精品aⅴ| 亚洲丰满少妇videoshd| 91精品国产一区二区三区 | 欧美色倩网站大全免费| 日韩黄色免费网站| 日韩一区二区在线观看视频 | 日韩三级伦理片妻子的秘密按摩| 男女激情视频一区| 久久久久国产精品人| 一本到三区不卡视频| 亚洲高清免费一级二级三级| 欧美大片在线观看一区二区| 国产一区福利在线| 中文字幕一区二区在线观看 | 亚洲成在线观看| 91精品免费观看| 免费看欧美女人艹b| 日本一区二区三区国色天香| 欧美性做爰猛烈叫床潮| 久久福利资源站| 国产欧美日韩综合| 欧美在线啊v一区| 国产乱国产乱300精品| 亚洲一二三四区| 欧美精品一区二区三区久久久| 9i在线看片成人免费| 男人的j进女人的j一区| 亚洲欧美日韩综合aⅴ视频| 日韩一区二区三区在线视频| 成人av网址在线| 免费人成网站在线观看欧美高清| 国产精品激情偷乱一区二区∴| 欧美精品乱人伦久久久久久| 成人性生交大片免费看视频在线| 天天综合天天综合色| 国产精品第一页第二页第三页| 欧美一级二级在线观看| 色激情天天射综合网| 成人一区二区三区视频在线观看| 无吗不卡中文字幕| 亚洲三级免费观看| 国产欧美一区二区精品性色 | 18成人在线观看| 精品处破学生在线二十三| 欧美日韩在线观看一区二区| 国产成人精品免费网站| 日本一不卡视频| 亚洲欧美激情插| 欧美高清一级片在线观看| 日韩欧美视频在线| 欧美蜜桃一区二区三区| av成人老司机| 国产精品77777竹菊影视小说| 日韩精品免费专区| 亚洲国产成人tv| 亚洲欧美日韩一区二区三区在线观看| 精品国产乱码久久久久久久久| 欧美丰满美乳xxx高潮www| 色拍拍在线精品视频8848| 99久久婷婷国产| 色综合天天综合色综合av| 99国产精品一区| 97久久超碰精品国产| 99久久精品久久久久久清纯| www.视频一区| 成人精品小蝌蚪| 成人av中文字幕| 99久久精品免费看| 色综合激情久久| 欧美性受xxxx黑人xyx性爽| 欧美性大战久久| 欧美裸体bbwbbwbbw| 欧美日韩视频不卡| 日韩午夜在线观看视频| 精品理论电影在线观看 | 亚洲欧洲精品一区二区三区不卡| 国产精品人人做人人爽人人添| 中文字幕中文字幕在线一区 | 91国产成人在线| 欧美三级乱人伦电影| 欧美日韩情趣电影| 91精品国产高清一区二区三区 | 久久九九全国免费| 久久精品视频在线免费观看| 国产精品久久久久天堂| 亚洲精品国产无天堂网2021| 亚洲电影一区二区三区| 日本在线不卡视频一二三区| 国产一区二区免费看| 成人激情小说乱人伦| av动漫一区二区| 在线观看av不卡| 日韩亚洲电影在线| 国产欧美综合在线观看第十页| 中文字幕在线播放不卡一区| 亚洲国产精品影院| 国模冰冰炮一区二区| 成人国产电影网| 91精彩视频在线| 精品久久久久久久久久久久久久久| 中文字幕欧美国产| 午夜亚洲福利老司机| 国产精品综合二区| 欧美日韩色综合| 久久亚洲精精品中文字幕早川悠里| 国产精品久久久久久久久搜平片 | 亚洲最新视频在线播放| 免费国产亚洲视频| 91色在线porny| 日韩一区二区视频| 亚洲六月丁香色婷婷综合久久| 日韩精品乱码av一区二区| 亚洲靠逼com| 欧美一区二区视频在线观看2020 | 亚洲精品在线网站| 国产一区二区网址| 久久久国际精品| 欧美电影免费提供在线观看| 亚洲欧美综合色| 日本欧美大码aⅴ在线播放| 成+人+亚洲+综合天堂| 日韩一区二区三区视频| 日韩理论片网站| 国产一区二区三区在线看麻豆 | 风间由美一区二区三区在线观看| 色综合久久综合网欧美综合网| 久久精品一级爱片| 久久精品国产精品亚洲红杏| 欧美日韩大陆一区二区| 亚洲女人小视频在线观看| 91精选在线观看| 一区二区三区日韩欧美精品| 国产成人免费av在线| 精品88久久久久88久久久| 日本美女一区二区三区| 欧美午夜精品一区二区蜜桃| 国产精品美女久久久久aⅴ | 色就色 综合激情| 国产精品进线69影院| 国产凹凸在线观看一区二区| 亚洲一区二区三区四区五区黄| 成人激情免费网站| 国产偷v国产偷v亚洲高清| 捆绑调教美女网站视频一区| 777亚洲妇女| 青草国产精品久久久久久| 欧洲一区在线电影| 一区二区三区在线视频免费 | 884aa四虎影成人精品一区| 亚洲电影一级黄| 欧美日韩国产三级| 五月天中文字幕一区二区| 欧美肥妇bbw|