[{"data":1,"prerenderedAt":1187},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1400-map-server":3,"wiki-doc-items-2026-09-20-dao-hang":954,"wiki:author-members":1175},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":171,"chapterOrder":941,"date":942,"description":35,"docKey":943,"docRoot":944,"docTitle":945,"extension":946,"isWikiDoc":947,"isWikiIndex":948,"meta":949,"navigation":947,"path":950,"seo":951,"stem":952,"wikiDepth":171,"__hash__":953},"wiki\u002Fwiki\u002F2026-09-20-导航\u002F0500-1400-map_server.md","map_server（已有二维地图加载与发布）",[7],"董佳辉",{"type":9,"value":10,"toc":935},"minimark",[11,15,20,28,39,52,141,154,157,160,220,225,229,293,296,301,308,316,328,331,403,409,417,421,424,430,469,472,475,567,573,577,661,669,679,682,689,697,700,704,707,816,824,828,831,834,842,892,900,903,931],[12,13,5],"h2",{"id":14},"map_server已有二维地图加载与发布",[16,17,19],"h3",{"id":18},"实车先看空路径由谁填写读的是哪一张地图","实车先看：空路径由谁填写，读的是哪一张地图",[21,22,23,27],"p",{},[24,25,26],"strong",{},"map_server读取已有二维地图的YAML及配套图片，发布OccupancyGrid给静态代价层；当前工程通过launch的map参数填写yaml_filename。"," 因此这里的空字符串是启动时重写的占位值，不能单看这行就判断没有地图。",[29,30,36],"pre",{"className":31,"code":33,"language":34,"meta":35},[32],"language-text","实物／仿真入口：map启动参数\n    → bringup_launch → localization_launch\n    → 重写map_server.ros__parameters.yaml_filename\n    → map_server：读取地图YAML → 找到配套PGM／PNG → 转为二维占用网格\n    → 配置、激活生命周期节点 → 发布namespace\u002Fmap\n    → local_costmap、global_costmap中的static_layer\n\nprior_pcd_file → small_gicp：用实时三维点云匹配先验PCD，提供定位TF\n","text","",[37,38,33],"code",{"__ignoreMap":35},[21,40,41,42,47,48],{},"二维图加载与三维PCD定位是不同的输入链。map_server不读取PCD，不把当前雷达点云拿去匹配二维图片，也不自行产生map→odom定位变换。两种地图仍须采用一致的尺度、方向和坐标约定。",[43,44,46],"a",{"href":45},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0900-slam-toolbox","二维图与PCD的分工","、",[43,49,51],{"href":50},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0700-small-gicp-relocalization","先验点云定位",[53,54,55,71],"table",{},[56,57,58],"thead",{},[59,60,61,65,68],"tr",{},[62,63,64],"th",{},"实车上看到的现象",[62,66,67],{},"先核对什么",[62,69,70],{},"当前配置怎样理解",[72,73,74,86,97,108,119,130],"tbody",{},[59,75,76,80,83],{},[77,78,79],"td",{},"YAML路径为空，却能够加载地图",[77,81,82],{},"launch传入的map及有效yaml_filename",[77,84,85],{},"当前重写流程会替换已有空值；实际路径来自启动参数",[59,87,88,91,94],{},[77,89,90],{},"修改nav2_params.yaml中的路径，启动后仍用旧图",[77,92,93],{},"上层map启动参数",[77,95,96],{},"当前launch总会用map值重写该键；单改参数文件中的字符串可能被覆盖",[59,98,99,102,105],{},[77,100,101],{},"实物入口默认启动失败，提示找不到地图",[77,103,104],{},"实物默认地图文件是否存在",[77,106,107],{},"当前默认map\u002Freality\u002Frmul_2024.yaml在源码和安装目录均不存在，需提供自己的有效二维图",[59,109,110,113,116],{},[77,111,112],{},"节点启动了，\u002Fmap却没有地图消息",[77,114,115],{},"最终路径、文件读取及生命周期状态",[77,117,118],{},"有节点／发布器不等于已经加载并激活地图；空路径可以配置，但不会自动产生地图",[59,120,121,124,127],{},[77,122,123],{},"建图时没看到map_server",[77,125,126],{},"slam启动分支",[77,128,129],{},"slam=True使用slam_toolbox发布\u002Fmap；此节点在slam=False的定位分支启动",[59,131,132,135,138],{},[77,133,134],{},"图片看起来灰色，加载后却成了空闲",[77,136,137],{},"地图文件的mode、free_thresh与像素灰度",[77,139,140],{},"保存和读取的门槛不是同一计算；本版本三态灰205与0.25的组合有已验证的未知状态丢失问题",[21,142,143,144,147,148],{},"本次安装的nav2_map_server为",[24,145,146],{},"1.1.20","，安装的map_server／map_io头文件与该版本一致。以下按此版本及当前工程启动文件说明。",[43,149,153],{"href":150,"rel":151},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_server\u002Fmap_server.cpp",[152],"nofollow","MapServer实现",[16,155,156],{"id":156},"参数",[21,158,159],{},"保留发送的参数与上方原注释。注释中的tb3_simulation_launch.py是通用示例名称；当前工程实际使用rm_navigation_reality_launch.py、rm_navigation_simulation_launch.py、bringup_launch.py和localization_launch.py。",[29,161,165],{"className":162,"code":163,"language":164,"meta":35,"style":35},"language-yaml shiki shiki-themes github-light github-dark","# The yaml_filename does not need to be specified since it going to be set by defaults in launch.\n# If you'd rather set it in the yaml, remove the default \"map\" value in the tb3_simulation_launch.py\n# file & provide full path to map below. If CLI map configuration or launch default is provided, that will be used.\nmap_server:\n  ros__parameters:\n    yaml_filename: \"\"\n","yaml",[37,166,167,176,182,188,199,207],{"__ignoreMap":35},[168,169,172],"span",{"class":170,"line":171},"line",1,[168,173,175],{"class":174},"sJ8bj","# The yaml_filename does not need to be specified since it going to be set by defaults in launch.\n",[168,177,179],{"class":170,"line":178},2,[168,180,181],{"class":174},"# If you'd rather set it in the yaml, remove the default \"map\" value in the tb3_simulation_launch.py\n",[168,183,185],{"class":170,"line":184},3,[168,186,187],{"class":174},"# file & provide full path to map below. If CLI map configuration or launch default is provided, that will be used.\n",[168,189,191,195],{"class":170,"line":190},4,[168,192,194],{"class":193},"s9eBZ","map_server",[168,196,198],{"class":197},"sVt8B",":\n",[168,200,202,205],{"class":170,"line":201},5,[168,203,204],{"class":193},"  ros__parameters",[168,206,198],{"class":197},[168,208,210,213,216],{"class":170,"line":209},6,[168,211,212],{"class":193},"    yaml_filename",[168,214,215],{"class":197},": ",[168,217,219],{"class":218},"sZZnC","\"\"\n",[221,222,224],"h4",{"id":223},"ros__parameters地图文件入口","ros__parameters（地图文件入口）",[226,227,228],"h5",{"id":228},"参数表",[53,230,231,259],{},[56,232,233],{},[59,234,235,238,241,244,247,250,253,256],{},[62,236,237],{},"参数名",[62,239,240],{},"当前值",[62,242,243],{},"单位",[62,245,246],{},"实车处理建议",[62,248,249],{},"作用",[62,251,252],{},"调大效果",[62,254,255],{},"调小效果",[62,257,258],{},"生效条件／备注",[72,260,261],{},[59,262,263,268,274,277,282,285,288,290],{},[77,264,265],{},[37,266,267],{},"yaml_filename",[77,269,270,273],{},[37,271,272],{},"\"\"","；整套启动时由map参数重写",[77,275,276],{},"不适用，地图YAML文件路径字符串",[77,278,279],{},[24,280,281],{},"上实物前必须核对并正确配置",[77,283,284],{},"指定初始加载的二维地图元数据文件",[77,286,287],{},"不适用",[77,289,287],{},[77,291,292],{},"当前可保留空值占位，通过map:=实际绝对路径配置；文件与图片均需存在；直接启动并留空则不加载初始地图",[226,294,295],{"id":295},"参数详解",[297,298,300],"h6",{"id":299},"yaml_filename节点参数文件与地图文件是两种yaml","yaml_filename（节点参数文件与地图文件是两种YAML）",[21,302,303,304,307],{},"nav2_params.yaml是ROS节点参数文件，里面有map_server、map_saver、costmap等参数分组。yaml_filename指向的是",[24,305,306],{},"一张二维地图的元数据YAML","，其中写image、resolution、origin等；不能把它设成nav2_params.yaml本身，也不能直接指向PGM、PNG或PCD。",[21,309,310,311],{},"1.1.20在configure阶段读取yaml_filename。非空时读取地图YAML和图片，失败会使配置过程失败；空字符串则跳过初始加载，建立话题与服务，允许之后通过load_map服务装入地图。空字符串不表示自动建图、不表示读取当前目录的某张图，也不表示使用PCD替代二维图。",[43,312,315],{"href":313,"rel":314},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_server\u002Fmap_server.cpp#L81",[152],"初始加载与空路径分支",[21,317,318,319,322,323],{},"当前安装的RewrittenYaml只替换已有叶子键，bare key形式的yaml_filename重写不会自动补入缺失键。",[24,320,321],{},"保留yaml_filename这一行，空值可交给launch填写；不能按注释把整个键删掉。"," MapServer源码声明的是字符串类型而不是一个自动场地路径默认值，路径默认来自工程launch。",[43,324,327],{"href":325,"rel":326},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_common\u002Fnav2_common\u002Flaunch\u002Frewritten_yaml.py#L108",[152],"1.1.20参数重写",[297,329,330],{"id":330},"当前launch怎样决定最终地图",[53,332,333,346],{},[56,334,335],{},[59,336,337,340,343],{},[62,338,339],{},"启动位置",[62,341,342],{},"map参数来源",[62,344,345],{},"对yaml_filename的作用",[72,347,348,359,370,381,392],{},[59,349,350,353,356],{},[77,351,352],{},"rm_navigation_reality_launch.py",[77,354,355],{},"用户map:=路径；未指定时按world生成share\u002Fmap\u002Freality\u002F场地名.yaml",[77,357,358],{},"传给bringup；当前world缺省rmul_2024",[59,360,361,364,367],{},[77,362,363],{},"rm_navigation_simulation_launch.py",[77,365,366],{},"用户map:=路径；未指定时按world生成share\u002Fmap\u002Fsimulation\u002F场地名.yaml",[77,368,369],{},"传给bringup；当前world缺省rmuc_2025",[59,371,372,375,378],{},[77,373,374],{},"bringup_launch.py",[77,376,377],{},"接收上层map",[77,379,380],{},"用RewrittenYaml重写已有yaml_filename，再传给定位分支",[59,382,383,386,389],{},[77,384,385],{},"localization_launch.py",[77,387,388],{},"接收map，单独启动时此参数无默认值",[77,390,391],{},"再用map重写yaml_filename，独立进程与组件两种分支均加载结果",[59,393,394,397,400],{},[77,395,396],{},"直接启动map_server并提供节点参数",[77,398,399],{},"用户传入yaml_filename",[77,401,402],{},"未经过上述重写时，直接使用节点得到的值；生命周期另需配置和激活",[21,404,405,408],{},[24,406,407],{},"当前整套启动以map启动参数为准。"," 想改用自己的地图，优先明确传map:=地图YAML的绝对路径；修改nav2_params.yaml中的值并不能阻止两处重写。若要改成完全由节点参数文件决定，必须调整当前bringup与localization的重写逻辑，并核对上层必需参数；不是只去修改注释提到的TB3文件。本文只记录接线，没有修改启动文件。",[21,410,411,412,47,414,416],{},"实际重写位置见",[37,413,374],{},[37,415,385],{},"。",[297,418,420],{"id":419},"本次默认文件检查实物默认图尚未提供","本次默认文件检查（实物默认图尚未提供）",[21,422,423],{},"当前安装包share目录为：",[29,425,428],{"className":426,"code":427,"language":34,"meta":35},[32],"\u002Fhome\u002Ftungchiahui\u002FUserFolder\u002FMySource\u002Fysu2026_rm_sentry\u002Fysu2026_rm_sentry_nav\u002Finstall\u002Fpb2025_nav_bringup\u002Fshare\u002Fpb2025_nav_bringup\n",[37,429,427],{"__ignoreMap":35},[53,431,432,445],{},[56,433,434],{},[59,435,436,439,442],{},[62,437,438],{},"默认入口",[62,440,441],{},"默认相对share目录的路径",[62,443,444],{},"本次静态检查",[72,446,447,458],{},[59,448,449,452,455],{},[77,450,451],{},"实物，world=rmul_2024",[77,453,454],{},"map\u002Freality\u002Frmul_2024.yaml",[77,456,457],{},"源码和安装副本均没有该文件；当前源码map\u002Freality仅有reserve占位文件",[59,459,460,463,466],{},[77,461,462],{},"仿真，world=rmuc_2025",[77,464,465],{},"map\u002Fsimulation\u002Frmuc_2025.yaml",[77,467,468],{},"源码和安装副本均存在，配套rmuc_2025.pgm也存在",[21,470,471],{},"这是对当前这份工作空间和默认入口的文件检查，不表示其他工作空间没有实物图，也不表示用户曾经指定的map路径失败。使用自己建的二维图时，还要给prior_pcd_file选择与之坐标一致的PCD，不能只让两份文件名看起来相同。",[21,473,474],{},"当前仿真默认地图元数据为：",[29,476,478],{"className":162,"code":477,"language":164,"meta":35,"style":35},"image: rmuc_2025.pgm\nmode: trinary\nresolution: 0.05\norigin: [-3.58, -9.44, 0]\nnegate: 0\noccupied_thresh: 0.65\nfree_thresh: 0.25\n",[37,479,480,490,500,511,536,546,556],{"__ignoreMap":35},[168,481,482,485,487],{"class":170,"line":171},[168,483,484],{"class":193},"image",[168,486,215],{"class":197},[168,488,489],{"class":218},"rmuc_2025.pgm\n",[168,491,492,495,497],{"class":170,"line":178},[168,493,494],{"class":193},"mode",[168,496,215],{"class":197},[168,498,499],{"class":218},"trinary\n",[168,501,502,505,507],{"class":170,"line":184},[168,503,504],{"class":193},"resolution",[168,506,215],{"class":197},[168,508,510],{"class":509},"sj4cs","0.05\n",[168,512,513,516,519,522,525,528,530,533],{"class":170,"line":190},[168,514,515],{"class":193},"origin",[168,517,518],{"class":197},": [",[168,520,521],{"class":509},"-3.58",[168,523,524],{"class":197},", ",[168,526,527],{"class":509},"-9.44",[168,529,524],{"class":197},[168,531,532],{"class":509},"0",[168,534,535],{"class":197},"]\n",[168,537,538,541,543],{"class":170,"line":201},[168,539,540],{"class":193},"negate",[168,542,215],{"class":197},[168,544,545],{"class":509},"0\n",[168,547,548,551,553],{"class":170,"line":209},[168,549,550],{"class":193},"occupied_thresh",[168,552,215],{"class":197},[168,554,555],{"class":509},"0.65\n",[168,557,559,562,564],{"class":170,"line":558},7,[168,560,561],{"class":193},"free_thresh",[168,563,215],{"class":197},[168,565,566],{"class":509},"0.25\n",[21,568,569,570,416],{},"这里只引用已有地图文件说明格式，不是map_server的额外ROS参数。原文件见",[37,571,572],{},"rmuc_2025.yaml",[297,574,576],{"id":575},"地图元数据图片如何变成真实坐标和占用值","地图元数据（图片如何变成真实坐标和占用值）",[53,578,579,592],{},[56,580,581],{},[59,582,583,586,589],{},[62,584,585],{},"地图文件字段",[62,587,588],{},"单位／含义",[62,590,591],{},"当前应怎样核对",[72,593,594,604,614,630,640,650],{},[59,595,596,598,601],{},[77,597,484],{},[77,599,600],{},"配套图片路径",[77,602,603],{},"相对路径按地图YAML所在目录解析；搬移时需同时保留图片，不能只复制YAML",[59,605,606,608,611],{},[77,607,504],{},[77,609,610],{},"m／图片像素",[77,612,613],{},"决定真实平面格距；此例5 cm，不是定位精度；修改它会改变整图物理尺度",[59,615,616,618,623],{},[77,617,515],{},[77,619,620],{},[168,621,622],{},"x米、y米、yaw弧度",[77,624,625,626,629],{},"第三个数是绕z的偏航角，",[24,627,628],{},"不是z高度","；载入的二维原点z设为0",[59,631,632,634,637],{},[77,633,540],{},[77,635,636],{},"0／1，像素明暗是否反转",[77,638,639],{},"此例0：深色表示较高占用；不是把地图坐标轴反转",[59,641,642,644,647],{},[77,643,494],{},[77,645,646],{},"trinary／scale／raw",[77,648,649],{},"trinary按阈值输出0、100、-1；scale还表达中间值；raw按像素数直接解释，不能随意换模式后继续按普通黑白图理解",[59,651,652,655,658],{},[77,653,654],{},"free_thresh、occupied_thresh",[77,656,657],{},"无量纲，像素换算后的占用门槛",[77,659,660],{},"加载时读的是本地图文件的值，不读取map_saver节点的default门槛",[21,662,663,664],{},"普通无透明通道灰度图、negate=0、trinary时，令灰度g为0～255，则占用比例为1−g\u002F255；严格大于occupied_thresh设100，严格小于free_thresh设0，其余设-1。保存时对输入0～100占用值采用另一套包含边界的比较，不能把两种门槛比较混写。",[43,665,668],{"href":666,"rel":667},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_io.cpp#L146",[152],"元数据解析与像素加载",[21,670,671,674,675,416],{},[24,672,673],{},"本版本默认三态保存的未知灰205重新读取时，1−205\u002F255≈0.19608，小于0.25，会变成空闲0。"," 本次已直接用安装的libmap_io在临时文件中验证：输入未知-1，用trinary、0.25／0.65保存再读取得到0；free改0.196后该未知格仍为-1。这个问题只针对满足上述读写条件的图片，不能据此断言所有来源的地图都丢未知。完整阈值条件、验证数据和处理建议见",[43,676,678],{"href":677},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1500-map-saver","map_saver",[297,680,681],{"id":681},"与global_costmap和三维定位的几何关系",[21,683,684,685],{},"前面global_costmap默认不滚动，StaticLayer会按\u002Fmap元数据调整主图尺寸、格距和平面原点；这里加载哪张图，直接决定它的有效网格，而不是由costmap中的初始0.05独立决定。",[43,686,688],{"href":687},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1300-global-costmap","全局图的尺寸接管",[21,690,691,692],{},"MapServer把origin第三个数写入地图四元数，但当前Nav2 1.1.20的StaticLayer平面网格主要使用origin.position.x／y与格距，非滚动合成按同格索引，不按任意origin yaw重新旋转网格。当前示例yaw=0；若将地图YAML改为非零yaw，应单独核对消费者，不能认为所有节点都会自动正确旋转。",[43,693,696],{"href":694,"rel":695},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_costmap_2d\u002Fplugins\u002Fstatic_layer.cpp#L179",[152],"静态层网格建立",[21,698,699],{},"frame_id只是消息坐标系名称。给图片改原点、旋转、裁剪或重采样后，需同时考虑PCD定位和map↔odom；仅把frame_id写成map不证明实际对齐。",[221,701,703],{"id":702},"相关源码默认项原yaml未显式配置","相关源码默认项（原YAML未显式配置）",[226,705,228],{"id":706},"参数表-1",[53,708,709,729],{},[56,710,711],{},[59,712,713,715,717,719,721,723,725,727],{},[62,714,237],{},[62,716,240],{},[62,718,243],{},[62,720,246],{},[62,722,249],{},[62,724,252],{},[62,726,255],{},[62,728,258],{},[72,730,731,761,789],{},[59,732,733,738,744,747,751,754,756,758],{},[77,734,735],{},[37,736,737],{},"topic_name",[77,739,740,743],{},[37,741,742],{},"map","，MapServer默认",[77,745,746],{},"不适用，话题名称",[77,748,749],{},[24,750,281],{},[77,752,753],{},"选择完整OccupancyGrid发布话题",[77,755,287],{},[77,757,287],{},[77,759,760],{},"相对名称按节点namespace解析；例如\u002Fred_standard_robot1\u002Fmap；需与两张costmap的static_layer输入一致",[59,762,763,768,772,775,779,782,784,786],{},[77,764,765],{},[37,766,767],{},"frame_id",[77,769,770,743],{},[37,771,742],{},[77,773,774],{},"不适用，坐标系名称",[77,776,777],{},[24,778,281],{},[77,780,781],{},"设置地图消息header.frame_id",[77,783,287],{},[77,785,287],{},[77,787,788],{},"不创建TF、不变换图片或原点；当前应与全局网格、PCD定位约定一致",[59,790,791,796,799,802,806,809,811,813],{},[77,792,793],{},[37,794,795],{},"use_sim_time",[77,797,798],{},"原分组未写；标准ROS默认False",[77,800,801],{},"不适用，布尔",[77,803,804],{},[24,805,281],{},[77,807,808],{},"决定MapServer填写加载时间和消息时间戳时使用的时钟",[77,810,287],{},[77,812,287],{},[77,814,815],{},"当前bare-key重写只改已有键，没有给本分组补入此键；仿真不能只凭入口True推断本节点也True，外部覆盖需另查",[21,817,818,819],{},"两份节点参数文件的map_server段完全一致，均只有yaml_filename空字符串。当前默认接线未在此分组补入use_sim_time；在没有其他覆盖时标准默认为False，仿真入口传True不会经该重写自动补到这里。此结论来自参数及启动源码，未对运行节点取快照；需要统一时间域时应显式配置，再检查有效参数。",[43,820,823],{"href":821,"rel":822},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_server\u002Fmap_server.cpp#L245",[152],"加载后的时间戳",[221,825,827],{"id":826},"生命周期换图与验证范围","生命周期、换图与验证范围",[226,829,830],{"id":830},"发布与服务",[21,832,833],{},"MapServer是生命周期节点。configure时加载初始图并建立服务／发布器；activate时发布已加载完整图。当前localization_launch的lifecycle_manager_localization管理map_server，autostart=True时自动配置、激活；单独运行可执行程序不能只停在“进程已创建”。",[21,835,836,837],{},"完整地图使用Transient Local、Reliable、KeepLast(1)，保留最近一张图供兼容的晚加入订阅者读取。它不是周期性重读磁盘或定时发布新地图；原文件改了不会自动热更新。",[43,838,841],{"href":839,"rel":840},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_server\u002Fmap_server.cpp#L119",[152],"地图发布与激活",[53,843,844,857],{},[56,845,846],{},[59,847,848,851,854],{},[62,849,850],{},"接口",[62,852,853],{},"默认名称，带机器人namespace时示例",[62,855,856],{},"行为",[72,858,859,870,881],{},[59,860,861,864,867],{},[77,862,863],{},"完整地图话题",[77,865,866],{},"\u002Fred_standard_robot1\u002Fmap",[77,868,869],{},"初始激活有图时发布；成功load_map后发布新图；保留最近完整图",[59,871,872,875,878],{},[77,873,874],{},"GetMap服务",[77,876,877],{},"\u002Fred_standard_robot1\u002Fmap_server\u002Fmap",[77,879,880],{},"返回当前内存OccupancyGrid；Active状态才处理；Active但尚未加载图时不能当作已有有效地图",[59,882,883,886,889],{},[77,884,885],{},"LoadMap服务",[77,887,888],{},"\u002Fred_standard_robot1\u002Fmap_server\u002Fload_map",[77,890,891],{},"请求map_url加载地图YAML；Active状态才处理，成功后更新内存并发布新图",[21,893,894,895],{},"当前MapServer没有为yaml_filename、topic_name、frame_id建立运行中重读／重建的参数回调。参数设置成功不代表换图成功；换图应走LoadMap服务或重新配置／重启。服务加载成功也不自动更换small_gicp的目标PCD，切换场地时还要同步定位目标与坐标约定。",[43,896,899],{"href":897,"rel":898},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_server\u002Fmap_server.cpp#L207",[152],"服务加载",[226,901,902],{"id":902},"本次核对与后续实物检查",[904,905,906,913,919,925],"ul",{},[907,908,909,912],"li",{},[24,910,911],{},"本次已核对："," nav2_map_server 1.1.20及安装头文件；两套节点参数与安装副本一致；五份相关launch与安装副本一致；实际map重写接线；实物默认地图缺失、仿真默认YAML／图片存在。",[907,914,915,918],{},[24,916,917],{},"本次离线验证："," 在临时目录直接调用已安装地图IO库完成小地图保存／读取，确认trinary灰205、free=0.25会丢未知身份，0.196的对应例子保留；未启动ROS地图节点、话题或服务，未写入工程地图目录。",[907,920,921,924],{},[24,922,923],{},"源码能确认："," 空路径分支、configure／activate行为、完整图QoS、Active服务条件、相对图片路径解析、地图元数据含义，以及参数重写与运行中换图的边界。",[907,926,927,930],{},[24,928,929],{},"实物待核实："," 启动时实际map与有效yaml_filename、二维图／PCD对齐、图中未知区域保存和重新加载、时间域、生命周期状态及静态层的有效地图元数据；本次未运行整套导航或进行实车验证。",[932,933,934],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":35,"searchDepth":178,"depth":178,"links":936},[937],{"id":14,"depth":178,"text":5,"children":938},[939,940],{"id":18,"depth":184,"text":19},{"id":156,"depth":184,"text":156},"0500-1400","2026-09-20","2026-09-20-dao-hang","\u002Fwiki\u002F2026-09-20-dao-hang","导航","md",true,false,{},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1400-map-server",{"title":5,"description":35},"wiki\u002F2026-09-20-导航\u002F0500-1400-map_server","SX5ljqj17eg9UqMnkVm_QDWNYF8t-T92s3vZUREtYpk",[955,962,968,974,980,986,992,998,1004,1010,1016,1022,1028,1034,1040,1046,1052,1058,1064,1070,1075,1081,1086,1092,1098,1104,1109,1111,1116,1122,1128,1134,1140,1146,1152,1158,1164,1170],{"path":956,"stem":957,"title":958,"authors":959,"date":942,"chapterOrder":960,"chapterDepth":961,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0100-jian-jie","wiki\u002F2026-09-20-导航\u002F0100-简介","简介",[7],"0100",0,{"path":963,"stem":964,"title":965,"authors":966,"date":942,"chapterOrder":967,"chapterDepth":961,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0200-huan-jing-pei-zhi-yu-yun-xing","wiki\u002F2026-09-20-导航\u002F0200-环境配置与运行","环境配置与运行",[7],"0200",{"path":969,"stem":970,"title":971,"authors":972,"date":942,"chapterOrder":973,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-0100-robot-description","wiki\u002F2026-09-20-导航\u002F0300-0100-robot_description","robot_description（机器人模型与关节定义）",[7],"0300-0100",{"path":975,"stem":976,"title":977,"authors":978,"date":942,"chapterOrder":979,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-0200-mid360-an-zhuang-wei-zhi","wiki\u002F2026-09-20-导航\u002F0300-0200-MID360安装位置","MID360安装位置",[7],"0300-0200",{"path":981,"stem":982,"title":983,"authors":984,"date":942,"chapterOrder":985,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-0300-launch-yu-bao-yi-lai-pei-zhi","wiki\u002F2026-09-20-导航\u002F0300-0300-Launch与包依赖配置","Launch与包依赖配置",[7],"0300-0300",{"path":987,"stem":988,"title":989,"authors":990,"date":942,"chapterOrder":991,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-0400-fang-zhen-shi-jue-you-hua","wiki\u002F2026-09-20-导航\u002F0300-0400-仿真视觉优化","仿真视觉优化（可选）",[7],"0300-0400",{"path":993,"stem":994,"title":995,"authors":996,"date":942,"chapterOrder":997,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-0500-tian-jia-di-tu","wiki\u002F2026-09-20-导航\u002F0300-0500-添加地图","添加地图",[7],"0300-0500",{"path":999,"stem":1000,"title":1001,"authors":1002,"date":942,"chapterOrder":1003,"chapterDepth":961,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-ji-qi-ren-mo-xing-yu-fang-zhen","wiki\u002F2026-09-20-导航\u002F0300-机器人模型与仿真","机器人模型与仿真",[7],"0300",{"path":1005,"stem":1006,"title":1007,"authors":1008,"date":942,"chapterOrder":1009,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0400-0100-linux-yu-mcu-shu-ju-dui-jie","wiki\u002F2026-09-20-导航\u002F0400-0100-Linux与MCU数据对接","Linux与MCU数据对接",[7],"0400-0100",{"path":1011,"stem":1012,"title":1013,"authors":1014,"date":942,"chapterOrder":1015,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0400-0200-chuan-kou-tong-xin","wiki\u002F2026-09-20-导航\u002F0400-0200-串口通信","Serial_Comm（串口通信）",[7],"0400-0200",{"path":1017,"stem":1018,"title":1019,"authors":1020,"date":942,"chapterOrder":1021,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0400-0300-shou-bing-kong-zhi","wiki\u002F2026-09-20-导航\u002F0400-0300-手柄控制","Joy（手柄控制）",[7],"0400-0300",{"path":1023,"stem":1024,"title":1025,"authors":1026,"date":942,"chapterOrder":1027,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0400-0400-mid360-yu-tf-lian-tiao","wiki\u002F2026-09-20-导航\u002F0400-0400-MID360与TF联调","MID360与TF联调",[7],"0400-0400",{"path":1029,"stem":1030,"title":1031,"authors":1032,"date":942,"chapterOrder":1033,"chapterDepth":961,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0400-ying-jian-dui-jie-yu-kong-zhi","wiki\u002F2026-09-20-导航\u002F0400-硬件对接与控制","硬件对接与控制",[7],"0400",{"path":1035,"stem":1036,"title":1037,"authors":1038,"date":942,"chapterOrder":1039,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0100-point-lio","wiki\u002F2026-09-20-导航\u002F0500-0100-Point_LIO","Point_LIO（激光与IMU融合里程计，建图与定位算法）",[7],"0500-0100",{"path":1041,"stem":1042,"title":1043,"authors":1044,"date":942,"chapterOrder":1045,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0200-loam-interface","wiki\u002F2026-09-20-导航\u002F0500-0200-loam_interface","loam_interface（Point-LIO输出的坐标与话题适配）",[7],"0500-0200",{"path":1047,"stem":1048,"title":1049,"authors":1050,"date":942,"chapterOrder":1051,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0300-sensor-scan-generation","wiki\u002F2026-09-20-导航\u002F0500-0300-sensor_scan_generation","sensor_scan_generation（雷达点云换系与底盘、云台位姿转换）",[7],"0500-0300",{"path":1053,"stem":1054,"title":1055,"authors":1056,"date":942,"chapterOrder":1057,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0400-terrain-analysis","wiki\u002F2026-09-20-导航\u002F0500-0400-terrain_analysis","terrain_analysis（近场地面与障碍高差分析）",[7],"0500-0400",{"path":1059,"stem":1060,"title":1061,"authors":1062,"date":942,"chapterOrder":1063,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0500-terrain-analysis-ext","wiki\u002F2026-09-20-导航\u002F0500-0500-terrain_analysis_ext","terrain_analysis_ext（扩展远场地形与近远场结果合并）",[7],"0500-0500",{"path":1065,"stem":1066,"title":1067,"authors":1068,"date":942,"chapterOrder":1069,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0600-fake-vel-transform","wiki\u002F2026-09-20-导航\u002F0500-0600-fake_vel_transform","fake_vel_transform（云台系速度转换与底盘自旋）",[7],"0500-0600",{"path":50,"stem":1071,"title":1072,"authors":1073,"date":942,"chapterOrder":1074,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"wiki\u002F2026-09-20-导航\u002F0500-0700-small_gicp_relocalization","small_gicp_relocalization（先验点云地图重定位）",[7],"0500-0700",{"path":1076,"stem":1077,"title":1078,"authors":1079,"date":942,"chapterOrder":1080,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0800-pointcloud-to-laserscan","wiki\u002F2026-09-20-导航\u002F0500-0800-pointcloud_to_laserscan","pointcloud_to_laserscan（三维地形点云转二维扫描）",[7],"0500-0800",{"path":45,"stem":1082,"title":1083,"authors":1084,"date":942,"chapterOrder":1085,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"wiki\u002F2026-09-20-导航\u002F0500-0900-slam_toolbox","slam_toolbox（二维地图生成与轨迹优化）",[7],"0500-0900",{"path":1087,"stem":1088,"title":1089,"authors":1090,"date":942,"chapterOrder":1091,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1000-bt-navigator","wiki\u002F2026-09-20-导航\u002F0500-1000-bt_navigator","bt_navigator（行为树导航任务调度）",[7],"0500-1000",{"path":1093,"stem":1094,"title":1095,"authors":1096,"date":942,"chapterOrder":1097,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1100-controller-server","wiki\u002F2026-09-20-导航\u002F0500-1100-controller_server","controller_server（路径跟踪、进度检查与到达判定）",[7],"0500-1100",{"path":1099,"stem":1100,"title":1101,"authors":1102,"date":942,"chapterOrder":1103,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1200-local-costmap","wiki\u002F2026-09-20-导航\u002F0500-1200-local_costmap","local_costmap（局部障碍代价地图）",[7],"0500-1200",{"path":687,"stem":1105,"title":1106,"authors":1107,"date":942,"chapterOrder":1108,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"wiki\u002F2026-09-20-导航\u002F0500-1300-global_costmap","global_costmap（全局规划代价地图）",[7],"0500-1300",{"path":950,"stem":952,"title":5,"authors":1110,"date":942,"chapterOrder":941,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},[7],{"path":677,"stem":1112,"title":1113,"authors":1114,"date":942,"chapterOrder":1115,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"wiki\u002F2026-09-20-导航\u002F0500-1500-map_saver","map_saver（二维栅格地图保存）",[7],"0500-1500",{"path":1117,"stem":1118,"title":1119,"authors":1120,"date":942,"chapterOrder":1121,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1600-planner-server","wiki\u002F2026-09-20-导航\u002F0500-1600-planner_server","planner_server（Theta*全局路径规划）",[7],"0500-1600",{"path":1123,"stem":1124,"title":1125,"authors":1126,"date":942,"chapterOrder":1127,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1700-smoother-server","wiki\u002F2026-09-20-导航\u002F0500-1700-smoother_server","smoother_server（全局路径平滑）",[7],"0500-1700",{"path":1129,"stem":1130,"title":1131,"authors":1132,"date":942,"chapterOrder":1133,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1800-behavior-server","wiki\u002F2026-09-20-导航\u002F0500-1800-behavior_server","behavior_server（恢复行为与空闲方向移动）",[7],"0500-1800",{"path":1135,"stem":1136,"title":1137,"authors":1138,"date":942,"chapterOrder":1139,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1900-waypoint-follower","wiki\u002F2026-09-20-导航\u002F0500-1900-waypoint_follower","waypoint_follower（逐点导航与到点等待）",[7],"0500-1900",{"path":1141,"stem":1142,"title":1143,"authors":1144,"date":942,"chapterOrder":1145,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-2000-velocity-smoother","wiki\u002F2026-09-20-导航\u002F0500-2000-velocity_smoother","velocity_smoother（速度限幅与加减速平滑）",[7],"0500-2000",{"path":1147,"stem":1148,"title":1149,"authors":1150,"date":942,"chapterOrder":1151,"chapterDepth":171,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-2100-pb-teleop-twist-joy-node","wiki\u002F2026-09-20-导航\u002F0500-2100-pb_teleop_twist_joy_node","pb_teleop_twist_joy_node（手柄输入与可替换控制入口）",[7],"0500-2100",{"path":1153,"stem":1154,"title":1155,"authors":1156,"date":942,"chapterOrder":1157,"chapterDepth":961,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-dao-hang-can-shu","wiki\u002F2026-09-20-导航\u002F0500-导航参数","导航参数",[7],"0500",{"path":1159,"stem":1160,"title":1161,"authors":1162,"date":942,"chapterOrder":1163,"chapterDepth":961,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0600-kai-fa-wen-ti-yu-pai-cha","wiki\u002F2026-09-20-导航\u002F0600-开发问题与排查","开发问题与排查",[7],"0600",{"path":1165,"stem":1166,"title":1167,"authors":1168,"date":942,"chapterOrder":1169,"chapterDepth":961,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":948},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0700-jue-ce","wiki\u002F2026-09-20-导航\u002F0700-决策","决策",[7],"0700",{"path":944,"stem":1171,"title":1172,"authors":1173,"date":942,"chapterOrder":1174,"chapterDepth":961,"docKey":943,"docRoot":944,"docTitle":945,"isWikiDoc":947,"isWikiIndex":947},"wiki\u002F2026-09-20-导航\u002Findex","北极熊导航复现日志",[7],null,[1176,1178,1181,1184],{"name":7,"image":1177},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":1179,"image":1180},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":1182,"image":1183},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":1185,"image":1186},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431906466]