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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? localmap.h

?? InnovLabSimu在vc++下實現(xiàn)
?? H
字號:
#pragma once
/********************************************************************
	created:	2008/06/12
	created:	12:6:2008   9:44
	filename: 	c:\RoboCupSimu\RoboCupSimu2\RoboCupSimu\controllers\Robot2005_V2\LocalMap.h
	file path:	c:\RoboCupSimu\RoboCupSimu2\RoboCupSimu\controllers\Robot2005_V2
	file base:	LocalMap
	file ext:	h
	author:		GaoYang
	
	purpose:	局部路徑規(guī)劃中用到的局部地圖,以及地圖的寫入、查找內(nèi)容函數(shù)。
	            地圖支持包括原來的圖像處理格式和激光雷達(dá)掃描到的格式
*********************************************************************/
//#include "stdafx.h"
#include <vector>
//#include "stdlib.h"
#include "ObjectAngleCheck.h"
#include "ShareObject.h"
#include <math.h>

using namespace personal_ShareObject_pathPlanUsingSpace;
namespace PthPlSpa=personal_ShareObject_pathPlanUsingSpace;

class CLocalVisionMap:virtual public ObjectAngleCheck
{
public:
	CLocalVisionMap(void);
public:
	~CLocalVisionMap(void);
	
	/***********************圖像處理格式的地圖寫入*********************************/
	//注意m_nFreRoadMap[i]中的內(nèi)容為一些號,這些號代表了一個個物體,
	//其排序方式為一個接一個,并無空缺,比如1號物體被判無效了則m_nFreRoadMap[i]中的
	//1所代表的物體將不是1號物體可能是2或3物體但2并非代表2號物體,可能
	unsigned short m_nFreRoadMap[361];///<障礙物號及其分布[0,360]
	/**
	* @ brief  ExpandObstacleRegion函數(shù)用來膨脹擴(kuò)充障礙物區(qū)域使不用另考慮機(jī)器人大小。
	*
	* 首先將需要擴(kuò)充的障礙物信息另存一份到m_aObstacleStruct。然后再m_aObstacleStruct中擴(kuò)充,
	* 將障礙物距離減少,而左右邊界角增加。距離減少后竟然小于0,即由于某種誤差機(jī)器人已經(jīng)碰上了
	* 物體,則表示膨脹失敗,不膨脹
	* @ parm pObstacleList是需要擴(kuò)充的區(qū)域指針,
	* @ parm indexOfmaObstacleStruct是該指針應(yīng)存在m_aObstacleStruct中位置的下標(biāo).
	*/
	bool ExpandObstacleRegion(PthPlSpa::ObjectPolePos *pObstacleTobeExpand);
	double m_dExpandRadius;//膨脹時用到的機(jī)器人的半徑,即計算中的膨脹半徑,在構(gòu)造函數(shù)中賦值
	int m_iSizeOfObjectPolePos;///<PthPlSpa::ObjectPolePos的類型大小,在構(gòu)造函數(shù)中初始化=sizeof(m_iSizeOfObjectPolePos)
	::std::vector<int>i;
	::std::vector<PthPlSpa::ObjectPolePos> m_aObstacleStruct;///<將經(jīng)過確認(rèn)的障礙物數(shù)組,經(jīng)過膨脹處理后再將數(shù)據(jù)數(shù)據(jù)全存過來,每多一次存一個
	//unsigned short m_iObstacleNumAfterCheck;///<記錄經(jīng)過檢查后確認(rèn)的障礙物個數(shù)
	/**
	*判斷障礙物的有效性,不能過近過遠(yuǎn),以及角度的0~360度
	*/
	bool ConfirmObstacleList(PthPlSpa::ObjectPolePos* Obstacle,float TargetDis);
	/**
	* @ brief  SetRoadMap()函數(shù)用于將外部輸入的障礙物信息反映到成員數(shù)組m_nFreRoadMap中
	*
	* @ parm pObstacleList障礙物鏈表
	* @ parm nObstacleMaxNum 最大障礙物數(shù)
	* @ parm TargetDis 目標(biāo)的距離
	*/
	void SetRoadMap(PthPlSpa::ObjectPolePos *pObstacleList,int nObstacleMaxNum,float TargetDis);

	/**
	*@brief m_apObstaclePointerContainer中存放所有經(jīng)確認(rèn)有效的障礙物,按先后順序編號,1開始,本類中直接調(diào)用SetRoadMap
	*	函數(shù)獲得,并將其寫入地圖,后續(xù)動態(tài)物體考慮時有可能其中的部分標(biāo)號并未寫入地圖
	*
	*	m_apObstaclePointerContainer[15]中內(nèi)容與對應(yīng)m_nFreRoadMap中所用編號的說明:
	*	這個一維數(shù)組中存放著所有有效的障礙物的指針。
	*	按照輸入的鏈表的順序,有效的障礙物指針依次存入其中。
	*	m_apObstaclePointerContainer[0]中未存指針,其內(nèi)容始終為0。
	*	m_apObstaclePointerContainer[1]中存的障礙物的編號即為1號,
	*            m_nFreRoadMap中若有單元存了1則表示在該對應(yīng)角度方向上有1號障礙物。
	*            因此對應(yīng)i度方向的障礙物為:m_apObstaclePointerContainer[m_nFreRoadMap[i]]所指向的障礙物。
	*            障礙物編號從1開始,按障礙物鏈表順序,第一個經(jīng)確認(rèn)有效的障礙物為1號
	*	類似繼續(xù)....
	*/
	//PthPlSpa::ObjectPolePos * m_apObstaclePointerContainer[10];///<該數(shù)組中存放著所有障礙物的指針,最大存15個
	/**
	*@brief 對障礙物預(yù)處理,包括檢查有效性、膨脹、記錄膨脹后的指針等,若發(fā)現(xiàn)無效障礙物則返回false
	*
	*/
	bool PretreatObstacle(PthPlSpa::ObjectPolePos *pObstacleList,short int numOb,float TargetDis)
	{
        if (ExpandObstacleRegion(pObstacleList))
		{
			//std::vector<PthPlSpa::ObjectPolePos>::iterator itExpanded=m_aObstacleStruct.end()-1;
		//	m_apObstaclePointerContainer[numOb+1]=&(*itExpanded);//>將有效障礙物的指針保存,同時該障礙物在m_apObstaclePointerContainer中的編號即numOb+1
		}
		else
		{
			/*std::vector<PthPlSpa::ObjectPolePos>::iterator itExpanded=m_aObstacleStruct.end()-1;
			m_apObstaclePointerContainer[numOb+1]=&(*itExpanded);*/
		}
		return true;
	}
	/**
	*@brief 從ApfPathPlan類SetRoadMap函數(shù)中分離出來的部分功能:將指定障礙物及其編號寫入地圖,并記錄該障礙物指針
	*@parm pObstacleList 指定障礙物指針
	*@parm numOb 障礙物在m_nFreRoadMap中的編號-1
	*@parm TargetDis 目標(biāo)的距離
	*/
	bool AddObject2RoadMap(PthPlSpa::ObjectPolePos *pObstacleList,int numOb,float TargetDis);
	void WriteObject2Map(std::vector<PthPlSpa::ObjectPolePos>::iterator pObstacleAferExpand,unsigned IndexOfAngle,unsigned NumInstedObjInRoadMap)
	{
		if ((int)m_nFreRoadMap[IndexOfAngle]!=0)//已經(jīng)有過障礙物在該角度賦過值
		{
			if (pObstacleAferExpand->distance<m_aObstacleStruct[m_nFreRoadMap[IndexOfAngle]-1].distance)//新的障礙物更近,需要更新的話
			{
				m_nFreRoadMap[IndexOfAngle]=NumInstedObjInRoadMap;//0對應(yīng)m_nFreRoadMap[361]中的第0號數(shù)據(jù)(第1個),180度對應(yīng)第360號(第361個)
			}//新的更遠(yuǎn)的話則不更新m_nFreRoadMap
		}
		else//第一次賦
		{		
			m_nFreRoadMap[IndexOfAngle]=NumInstedObjInRoadMap;//該角度方向的障礙物為numOb+1號				
		}
	}
};
// ***************************************************************
// CLocalMapFromLaser   version:  1.0   ·  date: 06/13/2008
//  -------------------------------------------------------------
//  
//  -------------------------------------------------------------
//  Copyright (C) 2008 - All Rights Reserved
// ***************************************************************
// 激光雷達(dá)地圖類,包含了地圖以及寫入函數(shù)
// ***************************************************************
#define MAX_DETECT_RANGE 8000///<激光雷達(dá)最大探測距離,單位毫米
#define ONE_SCANNER_USED ///<使用了一個激光雷達(dá),因此僅用0~180度的角度,分辨率為0.5度,因此
#define ANGLE_RESOLVING 0.5///<激光雷達(dá)角度精度單位度
#define NumOfData 361///<數(shù)據(jù)的個數(shù)
class CLocalMapFromLaser
{
public:
	CLocalMapFromLaser(void);
public:
	~CLocalMapFromLaser(void);
public:
	/**
	*@brief 接口函數(shù),將外部掃描得到的數(shù)據(jù)經(jīng)檢驗、膨脹后寫入LocalLaserMap
	*若達(dá)到最大掃描距離的角度則認(rèn)為該角度物物體
	*/
	bool WriteLocalLaserMap(float* pLaserDataChunk,float TargetDis);
protected:
	/**
	* @ brief  ExpandObstacleCell函數(shù)用來膨脹擴(kuò)充障礙物區(qū)域使不用另考慮機(jī)器人大小并將結(jié)果寫入到LocalLaserMap。
	*
	* 將每一方向經(jīng)ConfirmLaserData驗證的掃描值輸入本函數(shù),函數(shù)內(nèi)依據(jù)它的距離擴(kuò)充,包括領(lǐng)域,若領(lǐng)域內(nèi)已有距離值且比自己小則
	*不填充進(jìn)去.
	* @ parm pLaserData是輸入的角度的物距值,
	* @ parm iIndexInLocalMapStruct是角度對應(yīng)在LocalLaserMap中的位置即下標(biāo)值.
	*/
	bool ExpandObstacleCell(float* pLaserData,unsigned IndexInLocalMapStruct);
	/**
	*@brief 在ExpandObstacleCell中調(diào)用的用來在該物體角度左右AngleRegion范圍內(nèi)擴(kuò)充,以實現(xiàn)擴(kuò)充障礙物
	*
	*@parm AngleRegion,該物體影響的角度范圍,
	*@parm Dis 該物體的距離
	*@parm IndexInLocalMapStruct 該物體在LocalLaserMap中的位置即下標(biāo)值
	*/
	void ExpandObstacleNeighborCell(float AngleRegion,float Dis,unsigned IndexInLocalMapStruct);
	/**
	*@brief 在ExpandObstacleNeighborCell中調(diào)用的用來在判斷制定角度是否可以擴(kuò)充,可以則擴(kuò)充寫入,否則返回false
	*
	*@parm Dis 物距
	*@parm CurrentIndex當(dāng)前需要判斷是否能擴(kuò)充的位置,或者叫LocalLaserMap中的位置即下標(biāo)值.
	*/
	bool CheckExpandAble(float Dis,unsigned CurrentIndex)
	{
		if (CurrentIndex<361&&CurrentIndex>0)//未超出雷達(dá)數(shù)據(jù)的界限
		{
			if (LocalLaserMap[CurrentIndex]<0.000001||
				LocalLaserMap[CurrentIndex]>Dis)//沒有障礙物或者障礙物更遠(yuǎn)
			{
				LocalLaserMap[CurrentIndex]=Dis;
				return true;
			}
			else
			{
				return false;
			}
		}
		else
		{
			return false;
		}
	}
	bool ConfirmLaserData(float* LaserData,float TargetDis)
	{
		if (*(LaserData)>TargetDis||*(LaserData)>=MAX_DETECT_RANGE)
		{
			return false;
		}
		return true;
	}

protected:
	double m_dExpandRadius;//膨脹時用到的機(jī)器人的半徑,即計算中的膨脹半徑,在構(gòu)造函數(shù)中賦值
	float LocalLaserMap[NumOfData];///<局部地圖,源自1臺激光掃描儀的數(shù)據(jù)為0~180度0~361個數(shù)分辨率為0.5度,其內(nèi)部存儲有每一角度上的距離值,沒有物體的角度則其值為0,為與視覺格式一致,可考慮擴(kuò)充0~359.5度,

private:
};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品少妇一区二区三区| 久久99在线观看| 99在线精品免费| 久久精品视频一区二区| 亚洲成人精品一区二区| 日本黄色一区二区| 综合亚洲深深色噜噜狠狠网站| 国产剧情av麻豆香蕉精品| 日韩精品一区二区在线| 老司机精品视频在线| 91精品国产aⅴ一区二区| 亚洲成av人片一区二区梦乃| 欧美性色欧美a在线播放| 一个色在线综合| 欧美亚洲动漫另类| 国产亚洲女人久久久久毛片| 国产一二三精品| 国产欧美1区2区3区| 国产精品 欧美精品| 中文字幕精品—区二区四季| 成人爽a毛片一区二区免费| 欧美成人vr18sexvr| 日本女优在线视频一区二区| 日韩一级免费观看| 国产在线一区二区综合免费视频| 精品国产成人在线影院| 国产乱国产乱300精品| 一区二区中文字幕在线| 91久久国产最好的精华液| 亚洲柠檬福利资源导航| 精品视频一区三区九区| 视频一区二区中文字幕| 欧美本精品男人aⅴ天堂| 国产成人免费视频网站| 中文字幕日韩欧美一区二区三区| 国产91在线|亚洲| 亚洲视频每日更新| 欧美精品v日韩精品v韩国精品v| 美女视频网站黄色亚洲| 中日韩av电影| 欧美高清dvd| 国产91综合一区在线观看| 久久久久亚洲蜜桃| 一本大道久久精品懂色aⅴ| 无码av中文一区二区三区桃花岛| 精品久久久久一区二区国产| 成人app网站| 日本aⅴ精品一区二区三区| 国产欧美日韩久久| 色综合久久中文综合久久97| 日韩中文欧美在线| 精品久久一区二区| 福利电影一区二区| 日本亚洲欧美天堂免费| 国产精品久久午夜夜伦鲁鲁| 777a∨成人精品桃花网| 国产成人精品亚洲777人妖| 亚洲3atv精品一区二区三区| 国产亚洲美州欧州综合国| 99久久综合狠狠综合久久| 奇米一区二区三区| 亚洲裸体xxx| 精品国产不卡一区二区三区| 91久久精品网| 成人国产精品免费网站| 日韩中文欧美在线| 亚洲免费看黄网站| 国产精品丝袜一区| 日韩一区二区高清| 成人av先锋影音| 久久成人免费日本黄色| 亚洲国产欧美日韩另类综合| 国产精品久久影院| www激情久久| 欧美一区二区三区在线视频| 白白色 亚洲乱淫| 视频一区欧美精品| 一区二区三区国产| 国产精品国产三级国产aⅴ中文| 日韩欧美一级二级| 欧美高清www午色夜在线视频| 91麻豆国产在线观看| 国产自产2019最新不卡| 免费欧美在线视频| 亚洲成人免费在线观看| 亚洲精品一二三区| 中文字幕第一区综合| 国产亚洲一本大道中文在线| 在线观看国产精品网站| 色播五月激情综合网| 99久久精品国产导航| 成人福利在线看| 国产精品一级二级三级| 六月婷婷色综合| 久久成人羞羞网站| 五月激情综合色| 日韩黄色免费电影| 麻豆精品视频在线| 老司机免费视频一区二区| 久久精品99国产精品日本| 麻豆久久久久久| 亚洲成人动漫av| 全国精品久久少妇| 久久99国产乱子伦精品免费| 精品在线观看视频| 国产精品一卡二卡在线观看| 国产丶欧美丶日本不卡视频| 国产在线不卡视频| 国产精品一二三在| 不卡一卡二卡三乱码免费网站| 成人午夜电影小说| 色综合天天综合色综合av| 在线日韩av片| 欧美一级专区免费大片| 精品精品欲导航| 欧美国产综合色视频| 国产精品视频你懂的| 一区二区三区在线免费观看| 五月天久久比比资源色| 一区二区日韩电影| 日韩一区精品视频| 国产麻豆成人精品| 91视频一区二区| 91美女蜜桃在线| 欧美人伦禁忌dvd放荡欲情| 久久网站热最新地址| 亚洲高清免费观看| a级精品国产片在线观看| 91精品国产福利| 亚洲另类中文字| 国产成a人亚洲精| 欧美精品123区| 一区二区三区中文在线| 国产精品一区二区你懂的| 91精品婷婷国产综合久久性色| 国产精品第四页| 国产老女人精品毛片久久| 欧美一区三区二区| 一区二区三区日本| 成人夜色视频网站在线观看| 日韩欧美成人激情| 首页亚洲欧美制服丝腿| 色94色欧美sute亚洲13| 国产精品免费人成网站| 国产在线一区观看| 日韩欧美中文字幕制服| 五月婷婷激情综合网| 色94色欧美sute亚洲线路一久| 欧美国产欧美综合| 国产一区二区三区在线观看免费 | 经典三级在线一区| 欧美日韩免费在线视频| 亚洲精品免费播放| 97精品久久久午夜一区二区三区| 久久综合成人精品亚洲另类欧美| 免费不卡在线观看| 欧美精品在线观看播放| 亚洲福利视频三区| 欧美午夜一区二区| 亚洲夂夂婷婷色拍ww47| 色天天综合久久久久综合片| 亚洲女同女同女同女同女同69| 91色porny蝌蚪| 亚洲日本va午夜在线电影| 91蝌蚪porny| 日韩理论片网站| 在线日韩av片| 天天色图综合网| 在线综合亚洲欧美在线视频| 青青草精品视频| 精品国产乱码久久久久久影片| 蓝色福利精品导航| 国产天堂亚洲国产碰碰| 国产98色在线|日韩| 中文字幕视频一区| 色94色欧美sute亚洲线路一ni | 中文字幕免费一区| 日韩高清国产一区在线| 91亚洲午夜精品久久久久久| 亚洲欧洲日产国产综合网| 日本丰满少妇一区二区三区| 亚洲黄色小说网站| 欧美日韩mp4| 久久91精品国产91久久小草| 久久久不卡网国产精品二区| 国产精一品亚洲二区在线视频| 国产欧美视频一区二区三区| av日韩在线网站| 亚洲国产精品久久人人爱蜜臀| 欧美日韩dvd在线观看| 精彩视频一区二区三区 | 亚洲三级理论片| 欧美亚洲动漫制服丝袜| 免费看欧美女人艹b| 久久九九久精品国产免费直播| 91网页版在线| 免费欧美在线视频| 国产精品传媒视频| 4438x成人网最大色成网站| 国产二区国产一区在线观看|