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

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

?? map.h

?? 卡內(nèi)基梅隆大學(xué)(CMU)開發(fā)的移動機器人控制開發(fā)軟件包。可對多種機器人進行控制
?? H
字號:
// // This Program is provided by Duke University and the authors as a service to the// research community. It is provided without cost or restrictions, except for the// User's acknowledgement that the Program is provided on an "As Is" basis and User// understands that Duke University and the authors make no express or implied// warranty of any kind.  Duke University and the authors specifically disclaim any// implied warranty or merchantability or fitness for a particular purpose, and make// no representations or warranties that the Program will not infringe the// intellectual property rights of others. The User agrees to indemnify and hold// harmless Duke University and the authors from and against any and all liability// arising out of User's use of the Program.//// map.h//// Copyright 2005, Austin Eliazar, Ronald Parr, Duke University//// Important information on the maps, they way they are stored, and some information// about particle numbers and the information each one needs to maintain.//#include "laser.h"#define UNKNOWN -2// When using playback from a data log, you sometimes want to start mapping// several steps in from the beginning of the file#define START_ITERATION 0// LOW LEVEL DEFINITIONS// When using hierarchical slam, these are the values that are used by the low level// When not using hierarchical, these are the only values that matter.// See low.h for how to turn on and off hierarchical slam// We need to know, for various purposes, how big our map is allowed to be#define MAP_WIDTH  2500#define MAP_HEIGHT 2500// This is the number of particles that we are keeping at the low level#define PARTICLE_NUMBER 300// This is the number of samples that we will generate each iteration. Notice that we// generate more samples than we will keep as actual particles. This is because so many // are "bad" samples, and clearly won't be resampled, thus we don't need to allocate nearly// as much memory if we acknowledge that a certain amount will never be considered particles.// "Localize" function in low.c can help explain.#define SAMPLE_NUMBER (PARTICLE_NUMBER*10)// Number of unique particle ID numbers. Each particle (and ancestry particle) gets its own // ID.  We recycle IDs that are no longer in use, thus this number can be bounded.// ID_NUMBER is PARTICLE_NUMBER*2 since the ancestry is a tree; the additional .1 is for // breathing room#define ID_NUMBER (int) (PARTICLE_NUMBER*2.2)#define TOP_ID_NUMBER ID_NUMBER// A bounding box on the semicircle of possible observations.// This is useful for creating the observation cache (basically a set of local maps) which// allows us to run in linear time. This number will grow with increased laser ranges.#define AREA (int) (3.1415 * 75.0 *MAP_SCALE*MAP_SCALE)// Used for passing the corrected odometric path from the low level to high level for// further evaluation. Only used for hierarchical slam.struct TPath_struct {  // The incremental motion which this robot moved during a single time step.  // D is the major axis of lateral motion, which is along the average facing angle during this time step  // C is the minor axis, which is rotated +pi from D  // T is the angular change in facing angle.  float C, D, T;  float dist, turn;  struct TPath_struct *next;};typedef struct TPath_struct TPath;// Like TPath, this is also used to pass sets of observations from the low level to the// high level. Only used for hierarchical slam.struct TSenseLog_struct {  TSense sense;  struct TSenseLog_struct *next;};typedef struct TSenseLog_struct TSenseLog;// The maps are each made up of dynamic arrays of MapNodes. // Each entry maintains the total distance observed through this square (distance), and corresponding number// of scans which were observed to stop here (hits). We also keep track of the ancestor particle which made// the observation (ID), as well as the generation of the ancestor's observation this is a modification of, // if any (parentGen). We also keep an index into the array of modified grid squares maintained by the ancestor // particle which made the observation which corresponding to this update (source).struct MapNode_struct;struct MapNode_struct {  // An index into the array of observations kept by the associated ancestor node. This  // way, the array of updates for a node, and the observation itself can point to each other.  int source;  // The total distance that laser traces have been observed to pass through this grid square.  float distance;  // The number of times that a laser has been observed to stop in this grid square (implying a possible object)  // Density of the square is hits/distance  short int hits;  // The ID of the ancestor node which made this observation  short int ID;  // If this observation is an update of a previous observation in this grid square, this indicates the generation  // that the previous observation was made.  short int parentGen;};typedef struct MapNode_struct *PMapNode;typedef struct MapNode_struct TMapNode;struct MapNodeStarter_struct;struct MapNodeStarter_struct {  // Total is the number of entries in the array which are currently being used.  // Size is the total size of the array.  // Dead indicates how many of those slots currently in use are taken up by obsolete entries  short int total, size, dead;  // The dynamic array which holds all of the observations for this grid square  PMapNode array;};typedef struct MapNodeStarter_struct TMapStarter;typedef struct MapNodeStarter_struct *PMapStarter;// A dynamic array is stored by each ancestor particle of the map squares it has altered. We note which grid // square was altered (x, y) as well as an index into that square's array, corresponding to this alteration // (node).struct TEntryList_struct;struct TEntryList_struct {  short int node;  short int x, y;};typedef struct TEntryList_struct TEntryList;// Holds the information needed for the ancestry tree. // For purposes of indexing in to the map efficiently, we keep which generation (iteration // of the particle filter) this particle was created in. //// -Each ancestor node keeps a list of all of the observations made by this ancestor node (or inherited by it)// mapEntries is a dynamic array maintaining this list.// -size is the total available size of this dynamic array// -total indicates how many of those entries are currently being used.//// -ID is the unique ID given to this specific particle, so it can be referred to by a "name"// ID numbers will be reused if the particle is ever removed from the ancestry tree.// -Each iteration of the particle filter involves resampling from the previous generation of particles.// The new particle is the child, and old particle is the parent. // -numChildren keeps track of the number of particles in the tree that claim this particle as their parent// (we don't need to know explicitly who they are). // -parent points to the particle in the tree that is supposedly the parent of this particle. // However, due to the collapsing of non-branching paths in the tree (see UpdateAncestry in low.c),// the actual particle pointed to is the most recent ancestor of this particle that is shared by at least// one other surviving particle.struct TAncestor_struct;struct TAncestor_struct {  struct TAncestor_struct *parent;  TEntryList *mapEntries;  int size, total;  short int generation, ID, numChildren;  TPath *path;  // An addition for hierarchical- maintains the partial robot path represented by this particle  char seen;  // Used by various functions for speedy traversal of the tree. };typedef struct TAncestor_struct TAncestor;typedef struct TAncestor_struct *PAncestor;// Each particle stores certain information, such as its hypothesized postion (x, y, theta) in the global// sense. Also, the motion taken to get to that point from the last iteration (C, D, T) and the current// evaluated probability of this particle. For purposes of sorting the correct map for this particle,// we also keep a pointer tothe particle's immediate parent (from which it was resampled).struct TParticle_struct {  float x, y, theta; // The current position of the particle, in terms of grid squares and radians  float C, D, T;  // Minor and major axis of motion, and change of facing, respectively  float dist, turn;  double probability; // The proability of the particle  // Which ancestor node this particle corresponds to.   TAncestor_struct *ancestryNode; };typedef struct TParticle_struct TParticle;// These are structures used to speed up the code, and allow for an efficient use of the observation cache.// flagMap tells us, for a given position in the map, where we should look in the observation cache to find// the "expanded" set of information for that grid square (where map accesses are constant time into an array).// obsX/obsY do the opposite, and tell, for each entry of the observation cache, where in the map they // correspond to. This is most useful for cleaning up the observation cache and flagMap after each iteration.extern int flagMap[MAP_WIDTH][MAP_HEIGHT];extern short int obsX[AREA], obsY[AREA];// This is where the actual observation cache is stored. For a given position in the global map, (x,y), // consult i=flagMap[x][y] to get the proper index into the observationArray. Now, observationArray[i][j] // will be the entry for the particle whose ID is j at map position (x,y). Rather than copying over all of the // info from the global map, this just gives a reference index into the appropriate grid square, so if // k=observationArray[i][j], then the actual information for particle j at (x,y) is map[x][y]->array[k], // which then contains fields such as hits, distance, etc.extern short int observationArray[AREA][TOP_ID_NUMBER];// The number of entries of observationArray currently being used.extern int observationID;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清不卡一区二区| 亚洲免费观看高清在线观看| 日本人妖一区二区| 日韩欧美一二区| 美腿丝袜亚洲三区| 精品国产百合女同互慰| 国产一区二区三区高清播放| 亚洲国产精品高清| 一道本成人在线| 石原莉奈在线亚洲三区| 精品国产99国产精品| 粉嫩在线一区二区三区视频| 亚洲人成亚洲人成在线观看图片 | 一本色道久久综合亚洲aⅴ蜜桃 | 国产一区不卡精品| 国产精品久久二区二区| 在线看国产日韩| 麻豆国产精品视频| 亚洲成人一区二区| 91精品国产一区二区三区香蕉| 麻豆久久一区二区| 国产精品久久久久久亚洲毛片 | eeuss鲁一区二区三区| 亚洲免费av高清| 欧美成人aa大片| 色乱码一区二区三区88| 日韩电影在线一区| 国产精品久久久久精k8| 欧美性xxxxx极品少妇| 韩国在线一区二区| 亚洲综合一区二区精品导航| 精品va天堂亚洲国产| 在线亚洲免费视频| 国产精品一区在线| 亚洲二区在线观看| 国产精品麻豆久久久| 91精品国产综合久久香蕉的特点| 国产成人8x视频一区二区| 亚洲国产精品一区二区www| 国产亚洲综合av| 7799精品视频| 色综合咪咪久久| 国产成人综合在线播放| 午夜精品久久久久久久99樱桃| 中文天堂在线一区| 欧美变态口味重另类| 欧美中文字幕不卡| 成人国产精品免费网站| 美日韩一区二区| 亚洲午夜电影在线| 中文字幕在线观看一区二区| xfplay精品久久| 91精品久久久久久久久99蜜臂| 日本精品视频一区二区三区| 成人自拍视频在线| 精品在线你懂的| 日韩avvvv在线播放| 亚洲第一在线综合网站| 亚洲精品国产a久久久久久| 中文字幕乱码日本亚洲一区二区 | 国产精品美女久久久久久| 欧美电影免费观看高清完整版在线| 91福利在线播放| av影院午夜一区| 国产成人精品aa毛片| 狠狠色丁香久久婷婷综合_中| 日韩精品成人一区二区在线| 亚洲第一主播视频| 亚洲成人资源在线| 偷拍与自拍一区| 日韩高清一级片| 天天影视涩香欲综合网| 午夜av区久久| 日本亚洲视频在线| 免费成人在线视频观看| 久久精品国产久精国产| 日韩电影一区二区三区| 美女尤物国产一区| 美日韩黄色大片| 国产一区二区三区日韩| 国产乱码精品1区2区3区| 国产久卡久卡久卡久卡视频精品| 久久丁香综合五月国产三级网站| 久久爱www久久做| 国模大尺度一区二区三区| 激情五月婷婷综合| 成人永久看片免费视频天堂| 国产成人av一区二区三区在线观看| 国产福利精品一区| av在线免费不卡| 欧美日韩亚洲综合| 欧美一区三区二区| 久久精品欧美日韩精品| 亚洲欧洲在线观看av| 有坂深雪av一区二区精品| 亚洲国产aⅴ天堂久久| 免费的国产精品| 国产成人夜色高潮福利影视| 处破女av一区二区| 欧美综合一区二区三区| 91精品国产色综合久久| 久久欧美中文字幕| 亚洲欧洲国产专区| 午夜精品久久久久影视| 国产精品一区二区久激情瑜伽| 成人精品免费看| 在线播放日韩导航| 日本一区二区免费在线观看视频| 最新日韩在线视频| 日本系列欧美系列| 成人夜色视频网站在线观看| 色天使色偷偷av一区二区| 日韩免费成人网| 亚洲欧美日韩精品久久久久| 视频一区二区三区中文字幕| 国产suv精品一区二区6| 欧美三级午夜理伦三级中视频| 日韩欧美色综合网站| 亚洲视频在线观看一区| 日韩成人免费电影| 97精品久久久午夜一区二区三区| 欧美男女性生活在线直播观看| 久久久亚洲精华液精华液精华液| 亚洲综合一区在线| 国产99精品视频| 91精品国产综合久久福利软件 | 精品视频1区2区| 国产日韩欧美a| 日本系列欧美系列| 99re热这里只有精品视频| 日韩一区二区免费视频| 亚洲人成小说网站色在线| 国内精品视频一区二区三区八戒 | 欧美精品日韩精品| 中文字幕一区二区在线播放 | 国产在线看一区| 欧美私模裸体表演在线观看| 国产精品无人区| 激情久久五月天| 亚洲国产精品尤物yw在线观看| 国产一区二区网址| 91黄色小视频| 国产精品女同互慰在线看| 久久国产精品免费| 欧美日韩一二三| 一区二区不卡在线播放 | 麻豆极品一区二区三区| 日本高清无吗v一区| 国产精品三级视频| 国产精品一区二区在线观看网站 | 国产麻豆视频精品| 91精品国产91久久久久久最新毛片 | 中文字幕在线播放不卡一区| 国产一区在线精品| 欧美刺激脚交jootjob| 日韩电影在线观看电影| 欧美日韩一本到| 亚洲一区二区视频在线观看| 99久久婷婷国产| 国产精品成人免费| 成人一区在线看| 欧美国产精品久久| 成人国产在线观看| 国产精品天干天干在观线| 国产成人在线视频免费播放| 久久久精品免费观看| 国产麻豆成人精品| 国产日本亚洲高清| 国产成人综合网| 国产精品久久久久久亚洲伦| 99久久婷婷国产综合精品电影| 国产精品久久午夜夜伦鲁鲁| 成人av中文字幕| 亚洲日本电影在线| 在线观看日产精品| 亚洲成人av福利| 欧美一级专区免费大片| 久久精品久久久精品美女| 久久综合久久综合亚洲| 国产99一区视频免费| 国产精品你懂的在线| 色一情一伦一子一伦一区| 亚洲综合色区另类av| 欧美一区二区视频在线观看 | 亚洲欧美一区二区在线观看| 91丨九色丨国产丨porny| 亚洲国产一区二区视频| 欧美一二三在线| 丰满亚洲少妇av| 樱花草国产18久久久久| 制服丝袜亚洲精品中文字幕| 狠狠色丁香久久婷婷综| 成人欧美一区二区三区黑人麻豆| 日本丰满少妇一区二区三区| 亚洲超丰满肉感bbw| 欧美成人三级电影在线| 成人精品国产福利| 午夜久久久影院| 亚洲国产精华液网站w| 欧美伊人精品成人久久综合97|