[{"data":1,"prerenderedAt":1372},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1500-map-saver":3,"wiki-doc-items-2026-09-20-dao-hang":1137,"wiki:author-members":1360},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":171,"chapterOrder":1124,"date":1125,"description":35,"docKey":1126,"docRoot":1127,"docTitle":1128,"extension":1129,"isWikiDoc":1130,"isWikiIndex":1131,"meta":1132,"navigation":1130,"path":1133,"seo":1134,"stem":1135,"wikiDepth":171,"__hash__":1136},"wiki\u002Fwiki\u002F2026-09-20-导航\u002F0500-1500-map_saver.md","map_saver（二维栅格地图保存）",[7],"董佳辉",{"type":9,"value":10,"toc":1118},"minimark",[11,15,20,28,39,58,147,154,157,160,245,250,254,443,446,451,459,462,465,469,472,480,483,487,490,493,554,557,569,577,581,588,594,597,640,657,660,671,674,678,681,763,771,774,782,786,789,797,804,921,924,928,932,1002,1010,1013,1075,1083,1086,1114],[12,13,5],"h2",{"id":14},"map_saver二维栅格地图保存",[16,17,19],"h3",{"id":18},"实车先看保存哪个话题文件有没有保留未知区域","实车先看：保存哪个话题，文件有没有保留未知区域",[21,22,23,27],"p",{},[24,25,26],"strong",{},"map_saver接收一份OccupancyGrid，写出图片及配套地图YAML。"," 当前slam_launch启动map_saver_server可执行程序，其节点名为map_saver；配置这些参数或启动服务不会自动把地图保存到磁盘，仍需发起保存。",[29,30,36],"pre",{"className":31,"code":33,"language":34,"meta":35},[32],"language-text","slam_toolbox → namespace\u002Fmap（OccupancyGrid）\n                 ├─ SaveMap服务请求 → 建图launch中的map_saver\n                 │     → 临时订阅、等待一份地图 → 写图片 + 地图YAML\n                 │\n                 └─ map_saver_cli → 新建一个独立MapSaver\n                       → 自己订阅、等待一份地图 → 写图片 + 地图YAML\n\n保存的图片 + 地图YAML → map_server → 重新得到OccupancyGrid\n","text","",[37,38,33],"code",{"__ignoreMap":35},[21,40,41,44,45,52,53],{},[24,42,43],{},"map_saver_server、map_saver_cli和节点名map_saver需要区分。"," 两个可执行程序使用同一个MapSaver类，但CLI自行保存，不通过正在运行的服务器发送请求；因此当前launch中的5秒参数不会自动传给另一条CLI命令。",[46,47,51],"a",{"href":48,"rel":49},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_saver\u002Fmap_saver.cpp",[50],"nofollow","保存器实现","、",[46,54,57],{"href":55,"rel":56},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_saver\u002Fmain_cli.cpp#L156",[50],"CLI入口",[59,60,61,77],"table",{},[62,63,64],"thead",{},[65,66,67,71,74],"tr",{},[68,69,70],"th",{},"实车上看到的现象",[68,72,73],{},"先核对什么",[68,75,76],{},"当前配置怎样理解",[78,79,80,92,103,114,125,136],"tbody",{},[65,81,82,86,89],{},[83,84,85],"td",{},"建图结束却没出现PGM／YAML",[83,87,88],{},"是否真正调用保存服务或CLI、返回结果与目录",[83,90,91],{},"启动保存器不是自动保存，也不是退出时自动导出二维图",[65,93,94,97,100],{},[83,95,96],{},"YAML设了5 s，CLI却很快等图失败",[83,98,99],{},"保存的是哪个进程及CLI参数",[83,101,102],{},"未给CLI加载／设置参数时，它用源码默认2 s，不沿用launch保存器的5 s",[65,104,105,108,111],{},[83,106,107],{},"保存不到图，一直等到超时",[83,109,110],{},"map_topic、namespace、QoS及地图发布状态",[83,112,113],{},"当前每次保存才临时订阅一份地图，True要求兼容的Transient Local发布端",[65,115,116,119,122],{},[83,117,118],{},"改默认阈值，却看不到这次输出变化",[83,120,121],{},"SaveMap请求或CLI是否明确指定阈值、map_mode",[83,123,124],{},"请求非零阈值优先；三态与其他模式的编码不同；地图若只含0、100、-1，许多门槛变化不改变保存阶段分类",[65,126,127,130,133],{},[83,128,129],{},"图片是灰色，重新加载后却成空地",[83,131,132],{},"trinary写出的灰205与地图YAML free_thresh",[83,134,135],{},"当前0.25／0.65组合确有读写后的未知身份丢失，已用安装库临时地图验证",[65,137,138,141,144],{},[83,139,140],{},"保存二维图后没有PCD／posegraph",[83,142,143],{},"保存器的输入与输出类型",[83,145,146],{},"本节点只处理OccupancyGrid；PCD、slam_toolbox内部图状态需要各自保存",[21,148,149,150,153],{},"本次安装的nav2_map_server为",[24,151,152],{},"1.1.20","，map_saver／map_io安装头文件与该版本一致。当前reality参数与安装副本一致；simulation段仅use_sim_time=True不同。",[16,155,156],{"id":156},"参数",[21,158,159],{},"保留发送的5项原配置。具体保存请求的输入话题、输出路径、模式、格式和请求阈值另列，不能把这些请求字段当成这里已经写好的节点参数。",[29,161,165],{"className":162,"code":163,"language":164,"meta":35,"style":35},"language-yaml shiki shiki-themes github-light github-dark","map_saver:\n  ros__parameters:\n    use_sim_time: False\n    save_map_timeout: 5.0\n    free_thresh_default: 0.25\n    occupied_thresh_default: 0.65\n    map_subscribe_transient_local: True\n","yaml",[37,166,167,180,188,201,212,223,234],{"__ignoreMap":35},[168,169,172,176],"span",{"class":170,"line":171},"line",1,[168,173,175],{"class":174},"s9eBZ","map_saver",[168,177,179],{"class":178},"sVt8B",":\n",[168,181,183,186],{"class":170,"line":182},2,[168,184,185],{"class":174},"  ros__parameters",[168,187,179],{"class":178},[168,189,191,194,197],{"class":170,"line":190},3,[168,192,193],{"class":174},"    use_sim_time",[168,195,196],{"class":178},": ",[168,198,200],{"class":199},"sj4cs","False\n",[168,202,204,207,209],{"class":170,"line":203},4,[168,205,206],{"class":174},"    save_map_timeout",[168,208,196],{"class":178},[168,210,211],{"class":199},"5.0\n",[168,213,215,218,220],{"class":170,"line":214},5,[168,216,217],{"class":174},"    free_thresh_default",[168,219,196],{"class":178},[168,221,222],{"class":199},"0.25\n",[168,224,226,229,231],{"class":170,"line":225},6,[168,227,228],{"class":174},"    occupied_thresh_default",[168,230,196],{"class":178},[168,232,233],{"class":199},"0.65\n",[168,235,237,240,242],{"class":170,"line":236},7,[168,238,239],{"class":174},"    map_subscribe_transient_local",[168,241,196],{"class":178},[168,243,244],{"class":199},"True\n",[246,247,249],"h4",{"id":248},"ros__parameters等待默认阈值与地图订阅","ros__parameters（等待、默认阈值与地图订阅）",[251,252,253],"h5",{"id":253},"参数表",[59,255,256,284],{},[62,257,258],{},[65,259,260,263,266,269,272,275,278,281],{},[68,261,262],{},"参数名",[68,264,265],{},"当前值",[68,267,268],{},"单位",[68,270,271],{},"实车处理建议",[68,273,274],{},"作用",[68,276,277],{},"调大效果",[68,279,280],{},"调小效果",[68,282,283],{},"生效条件／备注",[78,285,286,318,351,382,414],{},[65,287,288,293,299,302,307,310,313,315],{},[83,289,290],{},[37,291,292],{},"use_sim_time",[83,294,295,298],{},[37,296,297],{},"False","；仿真True",[83,300,301],{},"不适用，布尔",[83,303,304],{},[24,305,306],{},"上实物前必须核对并正确配置",[83,308,309],{},"选择节点ROS时钟",[83,311,312],{},"不适用",[83,314,312],{},[83,316,317],{},"此键在两套配置都存在，slam_launch会重写；不改变图片坐标／格距；保存等图超时不是按\u002Fclock走的周期任务",[65,319,320,325,331,334,339,342,345,348],{},[83,321,322],{},[37,323,324],{},"save_map_timeout",[83,326,327,330],{},[37,328,329],{},"5.0","；源码默认2.0",[83,332,333],{},"s，一次订阅等图的等待期限",[83,335,336],{},[24,337,338],{},"通常保持当前值，不作为优先调试项",[83,340,341],{},"保存时等待收到一份OccupancyGrid的上限",[83,343,344],{},"可容忍更慢到图，也更晚报告等待失败",[83,346,347],{},"缺图时更快失败，可能来不及取得正常地图",[83,349,350],{},"不是每5 s保存，不是完整写盘操作的总期限；只作用于使用此参数的保存器，CLI需单独设置",[65,352,353,358,363,366,370,373,376,379],{},[83,354,355],{},[37,356,357],{},"free_thresh_default",[83,359,360],{},[37,361,362],{},"0.25",[83,364,365],{},"无量纲，占用比例；当前对应25",[83,367,368],{},[24,369,306],{},[83,371,372],{},"请求free_thresh为0时的默认值；三态保存把已知值≤25写为空闲色",[83,374,375],{},"保存阶段更多已知格判空闲、中间灰色减少",[83,377,378],{},"保存阶段更少已知格判空闲、中间灰色增加",[83,380,381],{},"输入-1仍先写未知灰；但当前灰205在0.25下重载成空闲，需看下方验证；请求非零值覆盖此默认",[65,383,384,389,394,397,402,405,408,411],{},[83,385,386],{},[37,387,388],{},"occupied_thresh_default",[83,390,391],{},[37,392,393],{},"0.65",[83,395,396],{},"无量纲，占用比例；当前对应65",[83,398,399],{},[24,400,401],{},"实物运行时重点观察，有问题再针对性调整",[83,403,404],{},"请求occupied_thresh为0时的默认值；三态保存把已知值≥65写成占用色",[83,406,407],{},"保存阶段更少已知格判占用，更多进入中间灰区",[83,409,410],{},"保存阶段更多已知格判占用，中间灰区减少",[83,412,413],{},"必须大于有效free门槛、且≤1；非零请求覆盖默认；灰区重载还受free门槛影响",[65,415,416,421,426,429,433,436,438,440],{},[83,417,418],{},[37,419,420],{},"map_subscribe_transient_local",[83,422,423],{},[37,424,425],{},"True",[83,427,428],{},"不适用，QoS耐久性选择",[83,430,431],{},[24,432,306],{},[83,434,435],{},"保存请求期间用Transient Local、Reliable、KeepLast(1)订阅地图",[83,437,312],{},[83,439,312],{},[83,441,442],{},"便于从兼容发布端取得保留地图；不是保存文件缓存，也不是“节点重启不保留地图”的开关；False仍默认Reliable，改为Volatile、深度10",[251,444,445],{"id":445},"参数详解",[447,448,450],"h6",{"id":449},"save_map_timeout等待一份图不是整个保存任务计时","save_map_timeout（等待一份图，不是整个保存任务计时）",[21,452,453,454],{},"每次保存创建一个临时OccupancyGrid订阅，将收到的第一份图放进future，再用executor.spin_until_future_complete等待，当前超时5 s。成功收到图后才调用saveMapToFile写图片和YAML，后面的文件编码／写入不被这个5 s等待包住。",[46,455,458],{"href":456,"rel":457},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_saver\u002Fmap_saver.cpp#L191",[50],"订阅与等待代码",[21,460,461],{},"因此增大它能容忍慢到图，却不能修复错误topic、namespace、QoS、不存在的发布者或无效目录；更不会提高建图频率。地图已通过兼容Transient Local发布时，晚加入的保存订阅通常可直接取得最近一份，不必等下一次更新。",[21,463,464],{},"该等待使用executor的chrono超时，不能把它当成必须让仿真\u002Fclock前进5 s才结束的定时保存任务。没有获得完整图，函数返回False；“服务调用成功到达”与“响应result=True、文件完整可读”仍须分开。",[447,466,468],{"id":467},"map_subscribe_transient_local取得最后地图的条件","map_subscribe_transient_local（取得最后地图的条件）",[21,470,471],{},"True时采用Transient Local、Reliable、KeepLast(1)；False分支以默认QoS深度10订阅，耐久性为Volatile、可靠性仍Reliable。True可从兼容发布端取已保留的完整图；它不让一个没有Transient Local能力的发布端凭空保存历史消息。",[21,473,474,475],{},"map_server使用Transient Local发布完整图，slam_toolbox当前建图也有自己的地图发布配置，应核对实际端点。若可靠性或耐久性不兼容，延长save_map_timeout不保证收到消息。",[46,476,479],{"href":477,"rel":478},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_saver\u002Fmap_saver.cpp#L178",[50],"保存订阅QoS",[21,481,482],{},"当前保存器不在启动后持续缓存所有地图版本；订阅在每次保存中创建，取得一份后移除。若发布端保留的是旧图，本次可能迅速保存旧图，等待时间短不证明地图新鲜或建图完整。",[447,484,486],{"id":485},"free_thresh_default与occupied_thresh_default请求覆盖与三态保存边界","free_thresh_default与occupied_thresh_default（请求覆盖与三态保存边界）",[21,488,489],{},"SaveMap请求的free_thresh或occupied_thresh为0时，保存器分别使用节点default值；非零请求则使用请求值。CLI的--free、--occ写入其独立保存器的本次SaveParameters，效果同样是明确指定保存阈值。0在这里是“未指定”，不能当成要求精确使用零门槛。",[21,491,492],{},"三态保存先将门槛乘100并用rint取整数，再分类。当前0.25／0.65得到25／65：",[59,494,495,509],{},[62,496,497],{},[65,498,499,502,505],{},[68,500,501],{},"输入OccupancyGrid的值",[68,503,504],{},"当前三态保存阶段",[68,506,508],{"align":507},"right","写出的8位灰度",[78,510,511,522,533,543],{},[65,512,513,516,519],{},[83,514,515],{},"-1，未知",[83,517,518],{},"先按未知处理，不参与已知值门槛比较",[83,520,521],{"align":507},"205",[65,523,524,527,530],{},[83,525,526],{},"0～25，含25",[83,528,529],{},"空闲",[83,531,532],{"align":507},"254",[65,534,535,538,541],{},[83,536,537],{},"26～64",[83,539,540],{},"中间／不确定",[83,542,521],{"align":507},[65,544,545,548,551],{},[83,546,547],{},"65～100，含65",[83,549,550],{},"占用",[83,552,553],{"align":507},"0",[21,555,556],{},"这不是“雷达点高于25 cm”或“障碍强度大于0.65”，也不是inflation_layer的内部代价阈值。输入应是slam_toolbox的二维占用图，不是terrain_map_ext点云，也不要把具有膨胀颜色的costmap误当原始场地图保存。",[21,558,559,560,563,564],{},"当前原始地图若只含-1、0、100，保持合法门槛且不碰端点时，改变门槛常常不改变",[24,561,562],{},"保存阶段","的黑／白／灰分类；它仍会改变写进地图YAML的阈值，并可能改变重新读取后的结果。",[46,565,568],{"href":566,"rel":567},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_io.cpp#L491",[50],"三态保存比较",[21,570,571,572],{},"有效非零门槛应满足0\u003Cfree\u003Coccupied≤1。参数0会经过默认替代；两门槛相等或反序会使保存失败。trinary按门槛编码图片，scale主要写连续灰度及未知透明通道，raw直接编码占用数；不能把三态分类效果套给所有模式。",[46,573,576],{"href":574,"rel":575},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_io.cpp#L368",[50],"保存参数检查",[447,578,580],{"id":579},"已验证的读写问题trinary灰205与free025","已验证的读写问题：trinary、灰205与free=0.25",[21,582,583,584,587],{},"保存阶段的未知／中间格写成灰度205，并把free_thresh=0.25、occupied_thresh=0.65、negate=0写入配套YAML。重新加载无透明通道三态图时，MapIO使用像素占用比例1−灰度\u002F255，",[24,585,586],{},"严格小于free_thresh便设空闲0","：",[29,589,592],{"className":590,"code":591,"language":34,"meta":35},[32],"灰205的占用比例 = 1 − 205 \u002F 255 ≈ 0.196078\n0.196078 \u003C 0.25\n所以当前三态保存的灰205，在按配套YAML重新读取时变成0\n",[37,593,591],{"__ignoreMap":35},[21,595,596],{},"本次没有只靠公式推断：直接调用容器中已安装的libmap_io，用临时7×1小地图保存并重新读取，得到下面结果。两组occupied_thresh均为0.65、mode为trinary、图片为PGM；保存成功，加载状态均为LOAD_MAP_SUCCESS。",[59,598,599,612],{},[62,600,601],{},[65,602,603,606,609],{},[68,604,605],{},"输入7个格子的值",[68,607,608],{"align":507},"保存／加载使用的free门槛",[68,610,611],{},"重新读取结果",[78,613,614,627],{},[65,615,616,619,622],{},[83,617,618],{},"-1、0、25、26、64、65、100",[83,620,621],{"align":507},"0.25，当前配置",[83,623,624,626],{},[24,625,553],{},"、0、0、0、0、100、100",[65,628,629,631,634],{},[83,630,618],{},[83,632,633],{"align":507},"0.196，对照配置",[83,635,636,639],{},[24,637,638],{},"-1","、0、-1、-1、-1、100、100",[21,641,642,643,646,647,52,652],{},"第一组不仅未知-1变空闲，中间26／64也经灰205变空闲；不能说“25～65一定会在下一次导航时保持未知”。第二组保留灰205对应的未知身份，但已知25也由空闲改为灰区，因为保存整数free门槛变成rint(19.6)=20。",[24,644,645],{},"0.196不是只修元数据、完全保持原分类的无副作用替换。"," ",[46,648,651],{"href":649,"rel":650},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_io.cpp#L501",[50],"灰205写入与YAML门槛",[46,653,656],{"href":654,"rel":655},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_io.cpp#L249",[50],"加载灰度判断",[21,658,659],{},"如果任务需要保留未知区，可以在三态重新导出时明确使用经此版本核对的free=0.196，并复核20附近的已知占用分类；也可以选择其他合适编码模式，但必须一起核对map_server和StaticLayer的解释，不能只改mode字符串。对既有文件应先检查实际像素和元数据，不能断言来自任意工具的灰色图片都有此问题。",[21,661,662,663,52,667],{},"这也解释了前面global_costmap的边界：顶层track_unknown_space=True只能保留\u002Fmap消息里仍为-1的格；若地图加载已把未知转为0，代价层和Theta*的allow_unknown不能恢复丢失身份。",[46,664,666],{"href":665},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1400-map-server","地图加载",[46,668,670],{"href":669},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1300-global-costmap","未知区与全局规划",[21,672,673],{},"本文保留原0.25，没有自动改工程参数或已有地图。这里记录的是本安装版本、指定三态读写条件下已经验证的行为；当前实车地图是否采用相同像素，仍需核对。",[246,675,677],{"id":676},"保存请求与命令行不属于原5项节点参数","保存请求与命令行（不属于原5项节点参数）",[251,679,680],{"id":680},"保存请求字段",[59,682,683,696],{},[62,684,685],{},[65,686,687,690,693],{},[68,688,689],{},"SaveMap请求字段／CLI选项",[68,691,692],{},"单位或类型",[68,694,695],{},"当前用法",[78,697,698,709,720,731,742,753],{},[65,699,700,703,706],{},[83,701,702],{},"map_topic／-t",[83,704,705],{},"话题名称",[83,707,708],{},"指定OccupancyGrid输入；空请求退回相对map，namespace为\u002Fred_standard_robot1时即该namespace\u002Fmap；绝对话题可明确来源",[65,710,711,714,717],{},[83,712,713],{},"map_url／-f",[83,715,716],{},"输出文件路径前缀",[83,718,719],{},"例如目录\u002Fsite_01会生成site_01.yaml和site_01.pgm；不是输入地图路径，不应把.yaml再当作前缀后缀填入",[65,721,722,725,728],{},[83,723,724],{},"image_format／--fmt",[83,726,727],{},"格式名称",[83,729,730],{},"未指定时trinary／raw默认pgm，scale默认png；未知透明通道需选支持它的格式",[65,732,733,736,739],{},[83,734,735],{},"map_mode／--mode",[83,737,738],{},"trinary／scale／raw",[83,740,741],{},"未识别值会警告并回退trinary；需要明确自己采用的像素解释",[65,743,744,747,750],{},[83,745,746],{},"free_thresh／--free",[83,748,749],{},"无量纲比例",[83,751,752],{},"0走节点默认；非零覆盖本次值，不自动改节点default参数",[65,754,755,758,760],{},[83,756,757],{},"occupied_thresh／--occ",[83,759,749],{},[83,761,762],{},"0走节点默认；非零覆盖本次值，仍需和free一起满足关系",[21,764,765,766],{},"服务默认名为map_saver\u002Fsave_map，机器人namespace存在时例如\u002Fred_standard_robot1\u002Fmap_saver\u002Fsave_map。请求响应result表示保存函数的成功／失败，不包含PCD或位姿图。",[46,767,770],{"href":768,"rel":769},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_msgs\u002Fsrv\u002FSaveMap.srv",[50],"SaveMap接口",[21,772,773],{},"接口注释虽举file:\u002F\u002F与package:\u002F\u002F形式，本次1.1.20的保存实现直接把map_url当文件名前缀交给图片写入和文件流，没有对应URI解析；这里应使用实际可写文件系统路径，不把注释示例当已经支持的协议。",[21,775,776,777],{},"保存会写图片和YAML两个文件，目录需要预先存在且可写；重复同一路径会覆盖同名输出。默认空路径会生成带系统时间秒数的map_前缀，仍不保证自动按场地归档。文件名生成显式使用系统时钟，不由use_sim_time决定。",[46,778,781],{"href":779,"rel":780},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_io.cpp#L354",[50],"文件名与写出",[251,783,785],{"id":784},"cli为何不继承此处5秒设置","CLI为何不继承此处5秒设置",[21,787,788],{},"1.1.20的map_saver_cli在当前进程中新建MapSaver，调用on_configure读取自身参数，然后直接调用saveMapTopicToFile；没有给另一个map_saver_server发SaveMap请求。若没有给CLI提供ROS参数或匹配其节点名／namespace的参数文件，它仍使用源码默认save_map_timeout=2.0，而不是建图launch中的5.0。",[21,790,791,792],{},"本工程README给出的CLI命令只传输出前缀和namespace，没有传这份参数文件；因此不要把它当成已使用这里全部设置。显式--free／--occ可以改变本次阈值，--ros-args后的-p可以设置该CLI保存器自己的等待与订阅配置。",[46,793,796],{"href":794,"rel":795},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_saver\u002Fmain_cli.cpp#L162",[50],"CLI新建保存器",[21,798,799,800,803],{},"以下只是",[24,801,802],{},"后续手动保存示例，未执行","。路径是示例，需要换成实际存在且可写的目录；\u002Fred_standard_robot1\u002Fmap也需要按实际机器人修改。此例使用对照门槛0.196，另给CLI独立名字，避免与已有map_saver同名：",[29,805,809],{"className":806,"code":807,"language":808,"meta":35,"style":35},"language-bash shiki shiki-themes github-light github-dark","ros2 run nav2_map_server map_saver_cli \\\n  -t \u002Fred_standard_robot1\u002Fmap \\\n  -f \u002Fhome\u002Ftungchiahui\u002FUserFolder\u002FMyMap\u002Fsite_01\u002Fsite_01 \\\n  --free 0.196 --occ 0.65 --fmt pgm --mode trinary \\\n  --ros-args -r __ns:=\u002Fred_standard_robot1 -r __node:=map_saver_cli \\\n  -p use_sim_time:=False -p save_map_timeout:=5.0 \\\n  -p map_subscribe_transient_local:=True\n","bash",[37,810,811,830,840,850,878,896,914],{"__ignoreMap":35},[168,812,813,817,821,824,827],{"class":170,"line":171},[168,814,816],{"class":815},"sScJk","ros2",[168,818,820],{"class":819},"sZZnC"," run",[168,822,823],{"class":819}," nav2_map_server",[168,825,826],{"class":819}," map_saver_cli",[168,828,829],{"class":199}," \\\n",[168,831,832,835,838],{"class":170,"line":182},[168,833,834],{"class":199},"  -t",[168,836,837],{"class":819}," \u002Fred_standard_robot1\u002Fmap",[168,839,829],{"class":199},[168,841,842,845,848],{"class":170,"line":190},[168,843,844],{"class":199},"  -f",[168,846,847],{"class":819}," \u002Fhome\u002Ftungchiahui\u002FUserFolder\u002FMyMap\u002Fsite_01\u002Fsite_01",[168,849,829],{"class":199},[168,851,852,855,858,861,864,867,870,873,876],{"class":170,"line":203},[168,853,854],{"class":199},"  --free",[168,856,857],{"class":199}," 0.196",[168,859,860],{"class":199}," --occ",[168,862,863],{"class":199}," 0.65",[168,865,866],{"class":199}," --fmt",[168,868,869],{"class":819}," pgm",[168,871,872],{"class":199}," --mode",[168,874,875],{"class":819}," trinary",[168,877,829],{"class":199},[168,879,880,883,886,889,891,894],{"class":170,"line":214},[168,881,882],{"class":199},"  --ros-args",[168,884,885],{"class":199}," -r",[168,887,888],{"class":819}," __ns:=\u002Fred_standard_robot1",[168,890,885],{"class":199},[168,892,893],{"class":819}," __node:=map_saver_cli",[168,895,829],{"class":199},[168,897,898,901,904,907,910,912],{"class":170,"line":225},[168,899,900],{"class":199},"  -p",[168,902,903],{"class":819}," use_sim_time:=False",[168,905,906],{"class":199}," -p",[168,908,909],{"class":819}," save_map_timeout:=",[168,911,329],{"class":199},[168,913,829],{"class":199},[168,915,916,918],{"class":170,"line":236},[168,917,900],{"class":199},[168,919,920],{"class":819}," map_subscribe_transient_local:=True\n",[21,922,923],{},"仿真时按实际时间域设置该CLI的use_sim_time。程序自己的-t、-f、--free等选项应放在--ros-args前；参数文件若采用map_saver分组，而CLI被改名为map_saver_cli，还要调整节点匹配，不能只传文件就认为所有参数已加载。",[246,925,927],{"id":926},"文件内容启动条件与验证范围","文件内容、启动条件与验证范围",[251,929,931],{"id":930},"保存了什么哪些还需要另存","保存了什么，哪些还需要另存",[59,933,934,947],{},[62,935,936],{},[65,937,938,941,944],{},[68,939,940],{},"输出或数据",[68,942,943],{},"当前保存器是否负责",[68,945,946],{},"应怎样理解",[78,948,949,960,971,982,992],{},[65,950,951,954,957],{},[83,952,953],{},"二维图片与配套地图YAML",[83,955,956],{},"是",[83,958,959],{},"写输入网格的尺寸／分辨率／原点x、y、yaw及本次mode、阈值；后续由map_server读取",[65,961,962,965,968],{},[83,963,964],{},"OccupancyGrid.header.frame_id",[83,966,967],{},"不作为独立frame_id字段写进地图YAML",[83,969,970],{},"后续由map_server自己的frame_id参数设置消息坐标名称；不能靠文件自动恢复所有坐标关系",[65,972,973,976,979],{},[83,974,975],{},"三维PCD",[83,977,978],{},"否",[83,980,981],{},"由Point-LIO等点云保存路径处理，供small_gicp定位",[65,983,984,987,989],{},[83,985,986],{},"slam_toolbox的.posegraph／.data",[83,988,978],{},[83,990,991],{},"由slam_toolbox序列化接口另存，供继续建图或其内部定位模式使用",[65,993,994,997,999],{},[83,995,996],{},"全套TF、轨迹、车辆包络与可爬坡能力",[83,998,978],{},[83,1000,1001],{},"二维图不是完整机器人状态快照，也不能证明坡道机械可通行",[21,1003,1004,1005],{},"保存不新增格距或重新计算地面：输入是什么分辨率，输出就按其元数据记录。本版本YAML输出使用Precision(3)，非简单小数的原点／格距需要在保存后复核；不能一概称为逐位精度不变。图片中的相对image路径只写文件名，通常和YAML成套保存、成套搬移。",[46,1006,1009],{"href":1007,"rel":1008},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_io.cpp#L549",[50],"元数据写出",[251,1011,1012],{"id":1012},"当前启动与运行中修改",[59,1014,1015,1025],{},[62,1016,1017],{},[65,1018,1019,1022],{},[68,1020,1021],{},"情况",[68,1023,1024],{},"当前实现及作用",[78,1026,1027,1035,1043,1051,1059,1067],{},[65,1028,1029,1032],{},[83,1030,1031],{},"slam=True",[83,1033,1034],{},"slam_launch启动map_saver_server，生命周期管理列表为map_saver；提供保存服务，但launch不自动调用保存",[65,1036,1037,1040],{},[83,1038,1039],{},"slam=False",[83,1041,1042],{},"当前定位分支启动map_server和small_gicp，不由这条分支启动map_saver_server；参数文件里有分组不代表节点一定运行",[65,1044,1045,1048],{},[83,1046,1047],{},"reality／simulation",[83,1049,1050],{},"两份map_saver段仅时钟False／True不同，其他4项一致；slam_launch重写已有use_sim_time",[65,1052,1053,1056],{},[83,1054,1055],{},"map_saver_server",[83,1057,1058],{},"configure时读4项专用参数并创建SaveMap服务；激活阶段建立生命周期bond",[65,1060,1061,1064],{},[83,1062,1063],{},"map_saver_cli",[83,1065,1066],{},"新建自己的保存器并手动on_configure后直接保存；不依赖远端服务器是否Active",[65,1068,1069,1072],{},[83,1070,1071],{},"运行中设置4项专用参数",[83,1073,1074],{},"当前没有动态回调更新已读取成员；设置成功不保证生效，需要重新配置／重启；单次阈值可用请求覆盖",[21,1076,1077,1078],{},"MapSaver的SaveMap回调没有MapServer的Active状态拒绝检查；服务在configure阶段创建。工程正常由lifecycle_manager_slam管理，但不能根据MapServer行为就断言此版本保存器在Inactive时一定拒绝请求。",[46,1079,1082],{"href":1080,"rel":1081},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_map_server\u002Fsrc\u002Fmap_saver\u002Fmap_saver.cpp#L62",[50],"保存服务与生命周期",[251,1084,1085],{"id":1085},"本次验证与实物待检查",[1087,1088,1089,1096,1102,1108],"ul",{},[1090,1091,1092,1095],"li",{},[24,1093,1094],{},"本次已核对："," nav2_map_server 1.1.20与安装头文件；源码／安装参数段一致；建图launch实际启动map_saver_server、管理map_saver且没有自动保存调用；CLI独立对象路径及默认2 s。",[1090,1097,1098,1101],{},[24,1099,1100],{},"本次已离线验证："," 用安装的libmap_io和临时7×1地图，分别以free=0.25、0.196、occupied=0.65完成trinary／PGM保存再读取；确认前者把未知变空闲、后者保留该未知格，并确认25附近分类也改变。没有启动ROS节点、地图话题或保存服务，临时图片与YAML已随临时目录清理。",[1090,1103,1104,1107],{},[24,1105,1106],{},"源码能确认："," 5 s只包等图阶段；请求阈值优先、0为默认哨兵；三态包含边界的保存比较、严格边界的加载比较；QoS和临时订阅、路径前缀、输出元数据及动态参数限制。",[1090,1109,1110,1113],{},[24,1111,1112],{},"实物待核实："," 实际map_topic及QoS、消息新鲜度、保存调用返回和文件完整性、真实地图的像素／未知区重新加载、二维图与PCD对齐、当前保存方式是否取得需要的参数；本次未对真实建图或导航任务执行保存。",[1115,1116,1117],"style",{},"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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":35,"searchDepth":182,"depth":182,"links":1119},[1120],{"id":14,"depth":182,"text":5,"children":1121},[1122,1123],{"id":18,"depth":190,"text":19},{"id":156,"depth":190,"text":156},"0500-1500","2026-09-20","2026-09-20-dao-hang","\u002Fwiki\u002F2026-09-20-dao-hang","导航","md",true,false,{},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1500-map-saver",{"title":5,"description":35},"wiki\u002F2026-09-20-导航\u002F0500-1500-map_saver","gwuxy2jRbqRPgXr73E5AHs4j88PXbza70KM7e3_dS_I",[1138,1145,1151,1157,1163,1169,1175,1181,1187,1193,1199,1205,1211,1217,1223,1229,1235,1241,1247,1253,1259,1265,1271,1277,1283,1289,1294,1299,1301,1307,1313,1319,1325,1331,1337,1343,1349,1355],{"path":1139,"stem":1140,"title":1141,"authors":1142,"date":1125,"chapterOrder":1143,"chapterDepth":1144,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0100-jian-jie","wiki\u002F2026-09-20-导航\u002F0100-简介","简介",[7],"0100",0,{"path":1146,"stem":1147,"title":1148,"authors":1149,"date":1125,"chapterOrder":1150,"chapterDepth":1144,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0200-huan-jing-pei-zhi-yu-yun-xing","wiki\u002F2026-09-20-导航\u002F0200-环境配置与运行","环境配置与运行",[7],"0200",{"path":1152,"stem":1153,"title":1154,"authors":1155,"date":1125,"chapterOrder":1156,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-0100-robot-description","wiki\u002F2026-09-20-导航\u002F0300-0100-robot_description","robot_description（机器人模型与关节定义）",[7],"0300-0100",{"path":1158,"stem":1159,"title":1160,"authors":1161,"date":1125,"chapterOrder":1162,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1164,"stem":1165,"title":1166,"authors":1167,"date":1125,"chapterOrder":1168,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1170,"stem":1171,"title":1172,"authors":1173,"date":1125,"chapterOrder":1174,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-0400-fang-zhen-shi-jue-you-hua","wiki\u002F2026-09-20-导航\u002F0300-0400-仿真视觉优化","仿真视觉优化（可选）",[7],"0300-0400",{"path":1176,"stem":1177,"title":1178,"authors":1179,"date":1125,"chapterOrder":1180,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-0500-tian-jia-di-tu","wiki\u002F2026-09-20-导航\u002F0300-0500-添加地图","添加地图",[7],"0300-0500",{"path":1182,"stem":1183,"title":1184,"authors":1185,"date":1125,"chapterOrder":1186,"chapterDepth":1144,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-ji-qi-ren-mo-xing-yu-fang-zhen","wiki\u002F2026-09-20-导航\u002F0300-机器人模型与仿真","机器人模型与仿真",[7],"0300",{"path":1188,"stem":1189,"title":1190,"authors":1191,"date":1125,"chapterOrder":1192,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1194,"stem":1195,"title":1196,"authors":1197,"date":1125,"chapterOrder":1198,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0400-0200-chuan-kou-tong-xin","wiki\u002F2026-09-20-导航\u002F0400-0200-串口通信","Serial_Comm（串口通信）",[7],"0400-0200",{"path":1200,"stem":1201,"title":1202,"authors":1203,"date":1125,"chapterOrder":1204,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0400-0300-shou-bing-kong-zhi","wiki\u002F2026-09-20-导航\u002F0400-0300-手柄控制","Joy（手柄控制）",[7],"0400-0300",{"path":1206,"stem":1207,"title":1208,"authors":1209,"date":1125,"chapterOrder":1210,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1212,"stem":1213,"title":1214,"authors":1215,"date":1125,"chapterOrder":1216,"chapterDepth":1144,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0400-ying-jian-dui-jie-yu-kong-zhi","wiki\u002F2026-09-20-导航\u002F0400-硬件对接与控制","硬件对接与控制",[7],"0400",{"path":1218,"stem":1219,"title":1220,"authors":1221,"date":1125,"chapterOrder":1222,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1224,"stem":1225,"title":1226,"authors":1227,"date":1125,"chapterOrder":1228,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1230,"stem":1231,"title":1232,"authors":1233,"date":1125,"chapterOrder":1234,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1236,"stem":1237,"title":1238,"authors":1239,"date":1125,"chapterOrder":1240,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0400-terrain-analysis","wiki\u002F2026-09-20-导航\u002F0500-0400-terrain_analysis","terrain_analysis（近场地面与障碍高差分析）",[7],"0500-0400",{"path":1242,"stem":1243,"title":1244,"authors":1245,"date":1125,"chapterOrder":1246,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1248,"stem":1249,"title":1250,"authors":1251,"date":1125,"chapterOrder":1252,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1254,"stem":1255,"title":1256,"authors":1257,"date":1125,"chapterOrder":1258,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0700-small-gicp-relocalization","wiki\u002F2026-09-20-导航\u002F0500-0700-small_gicp_relocalization","small_gicp_relocalization（先验点云地图重定位）",[7],"0500-0700",{"path":1260,"stem":1261,"title":1262,"authors":1263,"date":1125,"chapterOrder":1264,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1266,"stem":1267,"title":1268,"authors":1269,"date":1125,"chapterOrder":1270,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0900-slam-toolbox","wiki\u002F2026-09-20-导航\u002F0500-0900-slam_toolbox","slam_toolbox（二维地图生成与轨迹优化）",[7],"0500-0900",{"path":1272,"stem":1273,"title":1274,"authors":1275,"date":1125,"chapterOrder":1276,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1000-bt-navigator","wiki\u002F2026-09-20-导航\u002F0500-1000-bt_navigator","bt_navigator（行为树导航任务调度）",[7],"0500-1000",{"path":1278,"stem":1279,"title":1280,"authors":1281,"date":1125,"chapterOrder":1282,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1100-controller-server","wiki\u002F2026-09-20-导航\u002F0500-1100-controller_server","controller_server（路径跟踪、进度检查与到达判定）",[7],"0500-1100",{"path":1284,"stem":1285,"title":1286,"authors":1287,"date":1125,"chapterOrder":1288,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1200-local-costmap","wiki\u002F2026-09-20-导航\u002F0500-1200-local_costmap","local_costmap（局部障碍代价地图）",[7],"0500-1200",{"path":669,"stem":1290,"title":1291,"authors":1292,"date":1125,"chapterOrder":1293,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"wiki\u002F2026-09-20-导航\u002F0500-1300-global_costmap","global_costmap（全局规划代价地图）",[7],"0500-1300",{"path":665,"stem":1295,"title":1296,"authors":1297,"date":1125,"chapterOrder":1298,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"wiki\u002F2026-09-20-导航\u002F0500-1400-map_server","map_server（已有二维地图加载与发布）",[7],"0500-1400",{"path":1133,"stem":1135,"title":5,"authors":1300,"date":1125,"chapterOrder":1124,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},[7],{"path":1302,"stem":1303,"title":1304,"authors":1305,"date":1125,"chapterOrder":1306,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1308,"stem":1309,"title":1310,"authors":1311,"date":1125,"chapterOrder":1312,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1700-smoother-server","wiki\u002F2026-09-20-导航\u002F0500-1700-smoother_server","smoother_server（全局路径平滑）",[7],"0500-1700",{"path":1314,"stem":1315,"title":1316,"authors":1317,"date":1125,"chapterOrder":1318,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1800-behavior-server","wiki\u002F2026-09-20-导航\u002F0500-1800-behavior_server","behavior_server（恢复行为与空闲方向移动）",[7],"0500-1800",{"path":1320,"stem":1321,"title":1322,"authors":1323,"date":1125,"chapterOrder":1324,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1900-waypoint-follower","wiki\u002F2026-09-20-导航\u002F0500-1900-waypoint_follower","waypoint_follower（逐点导航与到点等待）",[7],"0500-1900",{"path":1326,"stem":1327,"title":1328,"authors":1329,"date":1125,"chapterOrder":1330,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-2000-velocity-smoother","wiki\u002F2026-09-20-导航\u002F0500-2000-velocity_smoother","velocity_smoother（速度限幅与加减速平滑）",[7],"0500-2000",{"path":1332,"stem":1333,"title":1334,"authors":1335,"date":1125,"chapterOrder":1336,"chapterDepth":171,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\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":1338,"stem":1339,"title":1340,"authors":1341,"date":1125,"chapterOrder":1342,"chapterDepth":1144,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-dao-hang-can-shu","wiki\u002F2026-09-20-导航\u002F0500-导航参数","导航参数",[7],"0500",{"path":1344,"stem":1345,"title":1346,"authors":1347,"date":1125,"chapterOrder":1348,"chapterDepth":1144,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0600-kai-fa-wen-ti-yu-pai-cha","wiki\u002F2026-09-20-导航\u002F0600-开发问题与排查","开发问题与排查",[7],"0600",{"path":1350,"stem":1351,"title":1352,"authors":1353,"date":1125,"chapterOrder":1354,"chapterDepth":1144,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1131},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0700-jue-ce","wiki\u002F2026-09-20-导航\u002F0700-决策","决策",[7],"0700",{"path":1127,"stem":1356,"title":1357,"authors":1358,"date":1125,"chapterOrder":1359,"chapterDepth":1144,"docKey":1126,"docRoot":1127,"docTitle":1128,"isWikiDoc":1130,"isWikiIndex":1130},"wiki\u002F2026-09-20-导航\u002Findex","北极熊导航复现日志",[7],null,[1361,1363,1366,1369],{"name":7,"image":1362},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":1364,"image":1365},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":1367,"image":1368},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":1370,"image":1371},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431906501]