[{"data":1,"prerenderedAt":1259},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1900-waypoint-follower":3,"wiki-doc-items-2026-09-20-dao-hang":1025,"wiki:author-members":1247},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":208,"chapterOrder":1012,"date":1013,"description":35,"docKey":1014,"docRoot":1015,"docTitle":1016,"extension":1017,"isWikiDoc":1018,"isWikiIndex":1019,"meta":1020,"navigation":1018,"path":1021,"seo":1022,"stem":1023,"wikiDepth":208,"__hash__":1024},"wiki\u002Fwiki\u002F2026-09-20-导航\u002F0500-1900-waypoint_follower.md","waypoint_follower（逐点导航与到点等待）",[7],"董佳辉",{"type":9,"value":10,"toc":1006},"minimark",[11,15,20,28,39,51,57,168,191,194,197,313,318,322,479,482,487,495,502,505,509,517,528,577,585,591,594,598,606,612,616,619,733,736,740,748,751,754,758,766,774,777,781,788,791,799,803,807,857,872,880,888,892,900,968,971,974,1002],[12,13,5],"h2",{"id":14},"waypoint_follower逐点导航与到点等待",[16,17,19],"h3",{"id":18},"实车先看是否调用逐点导航是否需要到点等待","实车先看：是否调用逐点导航、是否需要到点等待",[21,22,23,27],"p",{},[24,25,26],"strong",{},"本节点收到FollowWaypoints航点列表后，逐个调用NavigateToPose，到点后执行一次任务插件，再前往下一个点。当前插件是WaitAtWaypoint，每个导航成功的点等待200 ms，即0.2 s，最后一个点也等待。"," 它不直接跟踪planner_server输出的稠密路径，也不直接计算底盘速度。",[29,30,36],"pre",{"className":31,"code":33,"language":34,"meta":35},[32],"language-text","客户端发送FollowWaypoints：poses=[A, B, C]\n    → waypoint_follower\n        → NavigateToPose(A) → bt_navigator → 规划／控制／必要时恢复\n            ├─ 导航成功 → WaitAtWaypoint：等待200 ms\n            └─ 导航失败 → 记录A的索引；当前stop_on_failure=false，继续\n        → NavigateToPose(B) → 同样处理\n        → NavigateToPose(C) → 同样处理，成功时最后一个点也等待\n        → 返回Action结果及missed_waypoints\n","text","",[37,38,33],"code",{"__ignoreMap":35},[21,40,41,42,45,46],{},"当前PB的navigation_launch在独立进程和组件分支都会加载waypoint_follower，并把它交给生命周期管理器；",[24,43,44],{},"加载不等于已经收到航点任务。"," 普通NavigateToPose和NavigateThroughPoses不经过这个航点列表执行器，也不会因为enabled=True自动在途经点暂停。",[47,48,50],"a",{"href":49},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1000-bt-navigator","当前BT入口",[21,52,53,54],{},"本次在当前PB源码中没有找到发送FollowWaypoints的客户端；Fork的另一套目录ysu2026_rm_sentry_nav_cod\u002Fsrc\u002Fwaypoint_editor中则已有waypoint_to_nav2桥接代码，通过start_waypoint_following服务发送该Action。当前PB启动文件没有加载该桥接；是否另行启动或由外部决策客户端调用，需以实际请求为准，不能直接判断这组参数永远不用。",[37,55,56],{},"已有桥接客户端",[58,59,60,76],"table",{},[61,62,63],"thead",{},[64,65,66,70,73],"tr",{},[67,68,69],"th",{},"实车上看到的现象",[67,71,72],{},"先核对什么",[67,74,75],{},"当前配置怎样理解",[77,78,79,91,102,113,124,135,146,157],"tbody",{},[64,80,81,85,88],{},[82,83,84],"td",{},"普通单点／连续多点导航没有暂停",[82,86,87],{},"实际请求是哪个Action",[82,89,90],{},"只有FollowWaypoints成功到点后调用本任务插件",[64,92,93,96,99],{},[82,94,95],{},"以为200是等待200秒",[82,97,98],{},"插件转换出的时间单位",[82,100,101],{},"源码使用milliseconds，当前为0.2秒",[64,103,104,107,110],{},[82,105,106],{},"调loop_rate，停留时间没有相应变短",[82,108,109],{},"状态检查循环和插件等待各自的参数",[82,111,112],{},"20 Hz是任务处理循环；200 ms由插件单独等待",[64,114,115,118,121],{},[82,116,117],{},"某个点没到，却继续下一个点",[82,119,120],{},"stop_on_failure与导航结果",[82,122,123],{},"当前False记录导航失败索引并跳过，不自动再次尝试该点",[64,125,126,129,132],{},[82,127,128],{},"Action成功，但有点没有到达",[82,130,131],{},"返回的missed_waypoints",[82,133,134],{},"False允许列表遍历完后返回成功；成功不等于每点到达",[64,136,137,140,143],{},[82,138,139],{},"开了等待，底盘仍在自旋",[82,141,142],{},"到点判定、零速链和cmd_spin",[82,144,145],{},"插件不发零速度、不检查实际停车；附加自旋不由它清除",[64,147,148,151,154],{},[82,149,150],{},"仿真暂停后航点等待不结束",[82,152,153],{},"use_sim_time与\u002Fclock是否前进",[82,155,156],{},"插件按节点ROS时钟等待，20 Hz墙钟循环不能让睡眠提前结束",[64,158,159,162,165],{},[82,160,161],{},"等待时间很长时，取消响应也变慢",[82,163,164],{},"同步processAtWaypoint调用",[82,166,167],{},"插件睡眠期间不检查Action取消；取消在主循环恢复后处理",[21,169,170,171,174,175,178,179,185,186],{},"本次安装的nav2_waypoint_follower为",[24,172,173],{},"1.1.20","，rclcpp为",[24,176,177],{},"16.0.21","。服务器／WaitAtWaypoint安装头文件与Nav2对应版本一致；安装插件XML注册nav2_waypoint_follower::WaitAtWaypoint，库存在；FollowWaypoints安装接口与该版本一致。下文按这套接口解释。",[47,180,184],{"href":181,"rel":182},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_waypoint_follower\u002Fsrc\u002Fwaypoint_follower.cpp",[183],"nofollow","服务器源码","、",[47,187,190],{"href":188,"rel":189},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_waypoint_follower\u002Fplugins\u002Fwait_at_waypoint.cpp",[183],"等待插件源码",[16,192,193],{"id":193},"参数",[21,195,196],{},"下面原样保留发送的7项参数。源码和安装副本的reality段一致；simulation段只有use_sim_time=True不同。本次没有更改工程YAML，也没有发送导航或航点请求。",[29,198,202],{"className":199,"code":200,"language":201,"meta":35,"style":35},"language-yaml shiki shiki-themes github-light github-dark","waypoint_follower:\n  ros__parameters:\n    use_sim_time: False\n    loop_rate: 20\n    stop_on_failure: false\n    waypoint_task_executor_plugin: \"wait_at_waypoint\"\n    wait_at_waypoint:\n      plugin: \"nav2_waypoint_follower::WaitAtWaypoint\"\n      enabled: True\n      waypoint_pause_duration: 200\n","yaml",[37,203,204,217,225,238,249,260,272,280,291,302],{"__ignoreMap":35},[205,206,209,213],"span",{"class":207,"line":208},"line",1,[205,210,212],{"class":211},"s9eBZ","waypoint_follower",[205,214,216],{"class":215},"sVt8B",":\n",[205,218,220,223],{"class":207,"line":219},2,[205,221,222],{"class":211},"  ros__parameters",[205,224,216],{"class":215},[205,226,228,231,234],{"class":207,"line":227},3,[205,229,230],{"class":211},"    use_sim_time",[205,232,233],{"class":215},": ",[205,235,237],{"class":236},"sj4cs","False\n",[205,239,241,244,246],{"class":207,"line":240},4,[205,242,243],{"class":211},"    loop_rate",[205,245,233],{"class":215},[205,247,248],{"class":236},"20\n",[205,250,252,255,257],{"class":207,"line":251},5,[205,253,254],{"class":211},"    stop_on_failure",[205,256,233],{"class":215},[205,258,259],{"class":236},"false\n",[205,261,263,266,268],{"class":207,"line":262},6,[205,264,265],{"class":211},"    waypoint_task_executor_plugin",[205,267,233],{"class":215},[205,269,271],{"class":270},"sZZnC","\"wait_at_waypoint\"\n",[205,273,275,278],{"class":207,"line":274},7,[205,276,277],{"class":211},"    wait_at_waypoint",[205,279,216],{"class":215},[205,281,283,286,288],{"class":207,"line":282},8,[205,284,285],{"class":211},"      plugin",[205,287,233],{"class":215},[205,289,290],{"class":270},"\"nav2_waypoint_follower::WaitAtWaypoint\"\n",[205,292,294,297,299],{"class":207,"line":293},9,[205,295,296],{"class":211},"      enabled",[205,298,233],{"class":215},[205,300,301],{"class":236},"True\n",[205,303,305,308,310],{"class":207,"line":304},10,[205,306,307],{"class":211},"      waypoint_pause_duration",[205,309,233],{"class":215},[205,311,312],{"class":236},"200\n",[314,315,317],"h4",{"id":316},"ros__parameters时钟任务循环与失败策略","ros__parameters（时钟、任务循环与失败策略）",[319,320,321],"h5",{"id":321},"参数表",[58,323,324,352],{},[61,325,326],{},[64,327,328,331,334,337,340,343,346,349],{},[67,329,330],{},"参数名",[67,332,333],{},"当前值",[67,335,336],{},"单位",[67,338,339],{},"实车处理建议",[67,341,342],{},"作用",[67,344,345],{},"调大效果",[67,347,348],{},"调小效果",[67,350,351],{},"生效条件／备注",[77,353,354,386,419,449],{},[64,355,356,361,367,370,375,378,381,383],{},[82,357,358],{},[37,359,360],{},"use_sim_time",[82,362,363,366],{},[37,364,365],{},"False","；仿真True",[82,368,369],{},"不适用，布尔",[82,371,372],{},[24,373,374],{},"上实物前必须核对并正确配置",[82,376,377],{},"选择节点ROS时钟；WaitAtWaypoint使用该时钟等待",[82,379,380],{},"不适用",[82,382,380],{},[82,384,385],{},"launch会重写已有键；False通常按系统时间，True且ROS时间激活时按\u002Fclock；主任务循环另用WallRate",[64,387,388,393,399,402,407,410,413,416],{},[82,389,390],{},[37,391,392],{},"loop_rate",[82,394,395,398],{},[37,396,397],{},"20","；源码默认20",[82,400,401],{},"Hz，FollowWaypoints任务处理循环目标频率",[82,403,404],{},[24,405,406],{},"通常保持当前值，不作为优先调试项",[82,408,409],{},"控制反馈、导航结果处理以及取消／抢占检查的循环节拍",[82,411,412],{},"无阻塞时检查更密，调度和反馈开销增加",[82,414,415],{},"无阻塞时检查更稀，任务切换／取消响应可能更慢",[82,417,418],{},"正整数，当前名义50 ms／轮；不是controller_frequency，也不改变200 ms等待；动态改值不会重建已进行请求的WallRate",[64,420,421,426,432,434,439,442,444,446],{},[82,422,423],{},[37,424,425],{},"stop_on_failure",[82,427,428,431],{},[37,429,430],{},"false","；源码默认True",[82,433,369],{},[82,435,436],{},[24,437,438],{},"根据实际功能需求开启或设置",[82,440,441],{},"决定单点导航或到点任务失败时是否终止航点列表",[82,443,380],{},[82,445,380],{},[82,447,448],{},"False记录导航失败并继续；True遇失败终止，尚未尝试的后续点不因此列入missed；不是急停／障碍检测开关",[64,450,451,456,462,465,469,472,474,476],{},[82,452,453],{},[37,454,455],{},"waypoint_task_executor_plugin",[82,457,458,461],{},[37,459,460],{},"\"wait_at_waypoint\"","；源码默认同值",[82,463,464],{},"不适用，任务插件ID",[82,466,467],{},[24,468,406],{},[82,470,471],{},"选择到点后执行的任务插件配置分组",[82,473,380],{},[82,475,380],{},[82,477,478],{},"是分组ID，不是类名；读取wait_at_waypoint.plugin，只加载一个执行器，不表示串联多个任务",[319,480,481],{"id":481},"参数详解",[483,484,486],"h6",{"id":485},"loop_rate等待导航结果的循环不是移动控制频率","loop_rate（等待导航结果的循环，不是移动控制频率）",[21,488,489,490],{},"收到非空列表后，服务器创建WallRate(loop_rate)，每轮处理取消／新目标、发送下一点、发布current_waypoint、处理导航状态，最后处理NavigateToPose客户端回调并按节拍等待。20 Hz对应名义50 ms／轮，但回调、同步任务插件或取消等待都可能延长这一轮，不能把50 ms写成取消响应的硬上限。",[47,491,494],{"href":492,"rel":493},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_waypoint_follower\u002Fsrc\u002Fwaypoint_follower.cpp#L161",[183],"任务循环",[21,496,497,498],{},"每个点只在切换到新目标时发送一次NavigateToPose，不是每秒20次重发。规划频率由BT的RateController等决定，控制速度仍由controller_server产生；改loop_rate不会把路径跟踪频率改成同样的值，也不会把机器人线速度直接提高。",[47,499,501],{"href":500},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1100-controller-server","控制频率与速度",[21,503,504],{},"当前20 Hz与controller_server的20 Hz数值相同，仍是两个独立循环。按数值计算，200 ms相当于四个50 ms间隔，但WaitAtWaypoint是一次同步睡眠，期间不会因此执行四轮航点检查。",[483,506,508],{"id":507},"stop_on_failure继续任务与结果完整性","stop_on_failure（继续任务与结果完整性）",[21,510,511,512],{},"本版将NavigateToPose的ABORTED、CANCELED或目标被拒绝视为导航失败。导航失败先把当前索引加入failed_ids；True立即终止当前FollowWaypoints并返回已记录索引，False则推进到下一个点，不执行失败点的WaitAtWaypoint。",[47,513,516],{"href":514,"rel":515},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_waypoint_follower\u002Fsrc\u002Fwaypoint_follower.cpp#L199",[183],"导航失败及推进分支",[21,518,519,520,523,524,527],{},"索引从0开始。例如",[205,521,522],{},"A, B, C","中B导航失败、其余成功，当前False会尝试C，最终可返回Action成功、missed_waypoints=",[205,525,526],{},"1","。即使所有点导航失败，False也可在遍历完后返回成功并列出全部失败索引；客户端必须一起检查返回列表，不能仅看SUCCEEDED就报告每点到达。",[58,529,530,543],{},[61,531,532],{},[64,533,534,537,540],{},[67,535,536],{},"情况",[67,538,539],{},"stop_on_failure=True",[67,541,542],{},"当前stop_on_failure=False",[77,544,545,556,566],{},[64,546,547,550,553],{},[82,548,549],{},"某点NavigateToPose失败",[82,551,552],{},"记录该索引，终止列表",[82,554,555],{},"记录该索引，继续下一点",[64,557,558,561,563],{},[82,559,560],{},"某点导航成功，任务插件返回False",[82,562,552],{},[82,564,565],{},"继续下一点；1.1.20这一分支没有记录该任务失败索引",[64,567,568,571,574],{},[82,569,570],{},"列表全部处理完",[82,572,573],{},"无失败才走到正常成功结束",[82,575,576],{},"即使有导航失败，也成功结束并返回missed_waypoints",[21,578,579,580],{},"任务插件失败的记录条件与导航失败不同：只有“任务返回False且stop_on_failure=True”才把该点加入missed。当前WaitAtWaypoint正常返回True，但若以后替换为其他任务插件，False策略下不能认为missed_waypoints完整涵盖所有任务执行失败。",[47,581,584],{"href":582,"rel":583},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_waypoint_follower\u002Fsrc\u002Fwaypoint_follower.cpp#L219",[183],"任务执行分支",[21,586,587,588],{},"Fork另一目录的waypoint_to_nav2桥接在SUCCEEDED分支只打印“All waypoints reached successfully!”，没有检查missed_waypoints。如果以后使用它，当前False下该日志可能与实际漏点不符；需要核对客户端结果处理。本次只记录这个适配事项，没有修改该桥接。",[37,589,590],{},"现有结果处理",[21,592,593],{},"True终止的是航点任务流程，不等于由本节点直接发急停。单点导航自己的恢复会先在NavigateToPose中进行；这里只依据它最后的结果决定是否继续下一点，不通过改False增加同一点的恢复次数。",[483,595,597],{"id":596},"waypoint_task_executor_pluginid类名与到点条件","waypoint_task_executor_plugin（ID、类名与到点条件）",[21,599,600,601],{},"服务器按ID寻找对应的plugin键，再创建类并调用initialize(node, ID)。所以当前ID为wait_at_waypoint时，需要与下面分组同名；如果只改ID而保留下方旧分组，新ID的插件配置不会自动从旧分组继承。",[47,602,605],{"href":603,"rel":604},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_waypoint_follower\u002Fsrc\u002Fwaypoint_follower.cpp#L74",[183],"加载任务执行器",[21,607,608,609],{},"本节点以NavigateToPose的成功结果作为执行任务的条件，没有在此处再次检查真实车速或严格位置误差。当前general_goal_checker的xy容差0.15 m、yaw容差6.28 rad，解释见控制器页；因此“成功后等待200 ms”不是另加0.2秒精确对准，也不能替代到点判定和实际停车验证。",[47,610,611],{"href":500},"到达判定",[314,613,615],{"id":614},"wait_at_waypoint到点后的等待插件","wait_at_waypoint（到点后的等待插件）",[319,617,321],{"id":618},"参数表-1",[58,620,621,641],{},[61,622,623],{},[64,624,625,627,629,631,633,635,637,639],{},[67,626,330],{},[67,628,333],{},[67,630,336],{},[67,632,339],{},[67,634,342],{},[67,636,345],{},[67,638,348],{},[67,640,351],{},[77,642,643,672,700],{},[64,644,645,650,655,658,662,665,667,669],{},[82,646,647],{},[37,648,649],{},"plugin",[82,651,652],{},[37,653,654],{},"nav2_waypoint_follower::WaitAtWaypoint",[82,656,657],{},"不适用，任务插件类名",[82,659,660],{},[24,661,406],{},[82,663,664],{},"到达航点后按节点时钟睡眠，再返回任务成功",[82,666,380],{},[82,668,380],{},[82,670,671],{},"安装XML注册正确；不是behavior_server的nav2_behaviors\u002FWait，也不是路径跟踪控制器",[64,673,674,679,684,686,690,693,695,697],{},[82,675,676],{},[37,677,678],{},"enabled",[82,680,681,431],{},[37,682,683],{},"True",[82,685,369],{},[82,687,688],{},[24,689,438],{},[82,691,692],{},"决定WaitAtWaypoint是否执行到点等待",[82,694,380],{},[82,696,380],{},[82,698,699],{},"False直接返回True，导航列表照常继续；True还要求初始化时pause_duration不为0；不直接启用FollowWaypoints任务",[64,701,702,707,713,716,721,724,727,730],{},[82,703,704],{},[37,705,706],{},"waypoint_pause_duration",[82,708,709,712],{},[37,710,711],{},"200","；源码默认0",[82,714,715],{},"ms，成功到点后的ROS时钟等待时长",[82,717,718],{},[24,719,720],{},"实物运行时重点观察，有问题再针对性调整",[82,722,723],{},"每个导航成功的航点同步等待指定时长",[82,725,726],{},"到点停留预算及整次任务耗时增加；阻塞期间取消／切换请求的处理可能更迟",[82,728,729],{},"停留预算减少；初始化为0会把插件内部enabled置False",[82,731,732],{},"当前200 ms=0.2 s；包括最后一个成功点；不对导航失败点等待；正整数用于有效等待，不是目标精度或整个任务超时",[319,734,481],{"id":735},"参数详解-1",[483,737,739],{"id":738},"enabled与waypoint_pause_duration两个条件一起决定是否等","enabled与waypoint_pause_duration（两个条件一起决定是否等）",[21,741,742,743],{},"initialize读取wait_at_waypoint.enabled和wait_at_waypoint.waypoint_pause_duration；如果时长为0，即使YAML写enabled=True，也把内部is_enabled设为False。processAtWaypoint遇内部禁用直接返回True，表示本插件任务成功，不会终止或取消导航列表。",[47,744,747],{"href":745,"rel":746},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_waypoint_follower\u002Fplugins\u002Fwait_at_waypoint.cpp#L43",[183],"初始化与零时长处理",[21,749,750],{},"当前True和200会进入睡眠分支。每个点使用同一时长，插件没有按航点索引设置不同等待时间，也没有根据当前位置、偏差或速度自动延长；需要其他到点任务时应使用相应执行器实现。",[21,752,753],{},"同一列表有N个导航成功的点时，名义等待预算为N×0.2 s，包含最后一个点。例如10个点全部成功，合计名义等待2 s；这是参数换算，不含路途、恢复、回调调度和任务切换耗时，也不是本次实测。",[483,755,757],{"id":756},"_200的单位与仿真时间","200的单位与仿真时间",[21,759,760,761],{},"插件把整数200转成std::chrono::milliseconds，再调用节点clock的sleep_for。因此单位明确为毫秒；5000才表示5秒，不要把当前200解释为200秒，也不要为了表达0.2秒把此整数参数直接写成浮点0.2。",[47,762,765],{"href":763,"rel":764},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_waypoint_follower\u002Fplugins\u002Fwait_at_waypoint.cpp#L67",[183],"等待调用",[21,767,768,769],{},"这里虽传入chrono时长，等待仍按节点时钟工作。本次rclcpp 16.0.21的sleep_for实际等待now()+时长；use_sim_time=False时ROS时钟通常使用系统时间，True且ROS时间激活时则等待\u002Fclock前进到目标时刻。仿真暂停或时钟不再前进，200 ms不保证在200 ms墙钟时间后返回。",[47,770,773],{"href":771,"rel":772},"https:\u002F\u002Fgithub.com\u002Fros2\u002Frclcpp\u002Fblob\u002F16.0.21\u002Frclcpp\u002Fsrc\u002Frclcpp\u002Fclock.cpp#L121",[183],"对应rclcpp等待实现",[21,775,776],{},"如仿真时间均匀以真实时间的0.5倍前进，0.2 s仿真等待名义对应0.4 s真实时间；这是时间比例示例，未验证当前仿真实时倍率。loop_rate使用WallRate，也不能改变同步ROS时钟睡眠的结束条件。",[483,778,780],{"id":779},"等待不会检查停车也不会即时处理取消","等待不会检查停车，也不会即时处理取消",[21,782,783,784],{},"WaitAtWaypoint没有cmd_vel发布器，不检查车轮速度、不持续锁定位置，也不清除fake_vel_transform的cmd_spin。它只推迟下一个目标的发送；实际停止由NavigateToPose完成处理和速度下游保证。当前附加自旋可能继续，因此等待不代表底盘所有速度分量都为零。",[47,785,787],{"href":786},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0600-fake-vel-transform","速度转换与附加自旋",[21,789,790],{},"processAtWaypoint在航点主循环内同步调用，sleep_for期间不检查FollowWaypoints取消／抢占。普通取消不会直接唤醒这个睡眠；请求要等插件返回、循环再次到达检查分支后处理。加大loop_rate无法让阻塞中的检查更频繁，延长暂停时长则可能延长这段响应等待。",[21,792,793,794],{},"源码忽略sleep_for的bool返回值，之后仍返回True。若ROS关闭或时间源切换使睡眠提前返回False，这个True也不证明已完整等待200 ms；本次没有做时钟切换或取消实验。",[47,795,798],{"href":796,"rel":797},"https:\u002F\u002Fgithub.com\u002Fros2\u002Frclcpp\u002Fblob\u002F16.0.21\u002Frclcpp\u002Finclude\u002Frclcpp\u002Fclock.hpp#L116",[183],"睡眠返回约定",[314,800,802],{"id":801},"action接口启动条件与动态参数","Action接口、启动条件与动态参数",[319,804,806],{"id":805},"followwaypoints和navigatethroughposes的区别","FollowWaypoints和NavigateThroughPoses的区别",[58,808,809,822],{},[61,810,811],{},[64,812,813,816,819],{},[67,814,815],{},"接口",[67,817,818],{},"当前执行方式",[67,820,821],{},"本页到点等待是否参与",[77,823,824,835,846],{},[64,825,826,829,832],{},[82,827,828],{},"NavigateToPose",[82,830,831],{},"bt_navigator执行一个目标位姿",[82,833,834],{},"普通直接调用不经过航点执行器；FollowWaypoints内部调用成功后才执行插件",[64,836,837,840,843],{},[82,838,839],{},"FollowWaypoints",[82,841,842],{},"waypoint_follower依次发多个独立NavigateToPose，每点成功后调用任务插件",[82,844,845],{},"当前每个成功点等待200 ms",[64,847,848,851,854],{},[82,849,850],{},"NavigateThroughPoses",[82,852,853],{},"bt_navigator运行多位姿行为树，当前ComputePathThroughPoses→FollowPath",[82,855,856],{},"不经过本任务插件，不自动使用200 ms；是否连续通过还受实际BT与控制条件影响",[21,858,859,860,862,863,866,867],{},"本版FollowWaypoints请求只有PoseStamped",[205,861],{}," poses，反馈current_waypoint为从0开始的当前点索引，结果missed_waypoints为失败索引列表；",[24,864,865],{},"没有循环次数、起始索引或整次任务时限字段","。不能仅启动该节点就自动重复巡逻；需要客户端再次发请求或由上层任务逻辑组织。",[47,868,871],{"href":869,"rel":870},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_msgs\u002Faction\u002FFollowWaypoints.action",[183],"1.1.20 Action定义",[21,873,874,875],{},"服务器逐点只填写NavigateToPose的pose，behavior_tree保持空字符串，正常走bt_navigator的默认单点XML；这里不是改为执行默认多点XML。航点请求应携带正确frame_id、位置和有效四元数，当前工程通常按map表达，命名空间也须与follow_waypoints／navigate_to_pose服务端一致。",[47,876,879],{"href":877,"rel":878},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_waypoint_follower\u002Fsrc\u002Fwaypoint_follower.cpp#L185",[183],"逐点请求构造",[21,881,882,883],{},"空poses列表在本版直接返回成功，没有实际导航或到点任务。正常非空请求每次从索引0开始；导航失败跳过后也不会自动回头补点。取消处理会向其NavigateToPose客户端调用async_cancel_all_goals，并等待取消响应，不是本节点直接发布零速度。",[47,884,887],{"href":885,"rel":886},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_waypoint_follower\u002Fsrc\u002Fwaypoint_follower.cpp#L166",[183],"取消处理",[319,889,891],{"id":890},"动态参数服务器有回调插件值只在初始化读取","动态参数（服务器有回调，插件值只在初始化读取）",[21,893,894,895],{},"1.1.20服务器在生命周期activate时安装动态参数回调，deactivate时移除。本页需要区分以下更新条件：",[47,896,899],{"href":897,"rel":898},"https:\u002F\u002Fgithub.com\u002Fros-navigation\u002Fnavigation2\u002Fblob\u002F1.1.20\u002Fnav2_waypoint_follower\u002Fsrc\u002Fwaypoint_follower.cpp#L304",[183],"动态回调",[58,901,902,914],{},[61,903,904],{},[64,905,906,908,911],{},[67,907,193],{},[67,909,910],{},"实际更新路径",[67,912,913],{},"使用时怎样核对",[77,915,916,926,936,947,958],{},[64,917,918,920,923],{},[82,919,392],{},[82,921,922],{},"Active回调接受整数并更新成员；当前请求的WallRate已在开始时创建",[82,924,925],{},"新值用于之后新建的请求循环；正在进行的循环不会因此重建",[64,927,928,930,933],{},[82,929,425],{},[82,931,932],{},"Active回调接受布尔并更新成员；失败分支读取该成员",[82,934,935],{},"可改变后续失败处理策略，不是撤回已经跳过／结束的点",[64,937,938,941,944],{},[82,939,940],{},"waypoint_task_executor_plugin、wait_at_waypoint.plugin",[82,942,943],{},"当前回调不重新加载类或更换执行器",[82,945,946],{},"需重新配置生命周期／重启，单看参数值改变不能证明已切换",[64,948,949,952,955],{},[82,950,951],{},"wait_at_waypoint.enabled、waypoint_pause_duration",[82,953,954],{},"插件initialize时读入成员，没有动态更新回调",[82,956,957],{},"需重新配置／重启；运行中改200不保证下一点就采用新时长",[64,959,960,962,965],{},[82,961,360],{},[82,963,964],{},"由rclcpp时间源机制处理，不属于上述两个服务器成员的回调分支",[82,966,967],{},"仍须核对launch最终值与时钟状态，任务执行中切换还会影响sleep_for",[21,969,970],{},"服务器回调会返回参数设置成功，但只处理loop_rate和stop_on_failure的上述类型；其他插件参数即使ROS层显示新值，也不能据此证明插件缓存已变化。loop_rate和暂停时长在本版按整数读取，数值类型也需保持正确。",[319,972,973],{"id":973},"本次核对与验证范围",[975,976,977,984,990,996],"ul",{},[978,979,980,983],"li",{},[24,981,982],{},"已核对："," 安装版本、服务器／插件头文件、注册名和库、FollowWaypoints接口；源码与安装副本的两套参数和navigation_launch；当前PB的客户端检索及另一目录已有桥接。",[978,985,986,989],{},[24,987,988],{},"源码能确认："," 七项参数的读取条件；200 ms与最后一点等待；导航失败继续及任务失败记录差异；WallRate与ROS时钟睡眠；取消的阻塞边界和动态更新范围。",[978,991,992,995],{},[24,993,994],{},"实物使用时核对："," 实际Action入口、航点坐标与到点判据，是否需要跳过失败点，以及客户端是否读取missed_waypoints；需要暂停时再观察有效停留时间、附加自旋和取消响应。",[978,997,998,1001],{},[24,999,1000],{},"本次范围："," 只整理文档和目录，未修改导航配置、桥接、BT或插件，未发FollowWaypoints／NavigateToPose、未进行实车或仿真运动测试。文中时间与漏点例子均为源码分析或参数换算。",[1003,1004,1005],"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 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);}",{"title":35,"searchDepth":219,"depth":219,"links":1007},[1008],{"id":14,"depth":219,"text":5,"children":1009},[1010,1011],{"id":18,"depth":227,"text":19},{"id":193,"depth":227,"text":193},"0500-1900","2026-09-20","2026-09-20-dao-hang","\u002Fwiki\u002F2026-09-20-dao-hang","导航","md",true,false,{},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1900-waypoint-follower",{"title":5,"description":35},"wiki\u002F2026-09-20-导航\u002F0500-1900-waypoint_follower","aXsJvi2J688_r5ezr3yqAKLSl5XxWcV7NGbAlkxqRcc",[1026,1033,1039,1045,1051,1057,1063,1069,1075,1081,1087,1093,1099,1105,1111,1117,1123,1129,1135,1140,1146,1152,1158,1163,1168,1174,1180,1186,1192,1198,1204,1210,1212,1218,1224,1230,1236,1242],{"path":1027,"stem":1028,"title":1029,"authors":1030,"date":1013,"chapterOrder":1031,"chapterDepth":1032,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0100-jian-jie","wiki\u002F2026-09-20-导航\u002F0100-简介","简介",[7],"0100",0,{"path":1034,"stem":1035,"title":1036,"authors":1037,"date":1013,"chapterOrder":1038,"chapterDepth":1032,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0200-huan-jing-pei-zhi-yu-yun-xing","wiki\u002F2026-09-20-导航\u002F0200-环境配置与运行","环境配置与运行",[7],"0200",{"path":1040,"stem":1041,"title":1042,"authors":1043,"date":1013,"chapterOrder":1044,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-0100-robot-description","wiki\u002F2026-09-20-导航\u002F0300-0100-robot_description","robot_description（机器人模型与关节定义）",[7],"0300-0100",{"path":1046,"stem":1047,"title":1048,"authors":1049,"date":1013,"chapterOrder":1050,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":1052,"stem":1053,"title":1054,"authors":1055,"date":1013,"chapterOrder":1056,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":1058,"stem":1059,"title":1060,"authors":1061,"date":1013,"chapterOrder":1062,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-0400-fang-zhen-shi-jue-you-hua","wiki\u002F2026-09-20-导航\u002F0300-0400-仿真视觉优化","仿真视觉优化（可选）",[7],"0300-0400",{"path":1064,"stem":1065,"title":1066,"authors":1067,"date":1013,"chapterOrder":1068,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-0500-tian-jia-di-tu","wiki\u002F2026-09-20-导航\u002F0300-0500-添加地图","添加地图",[7],"0300-0500",{"path":1070,"stem":1071,"title":1072,"authors":1073,"date":1013,"chapterOrder":1074,"chapterDepth":1032,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0300-ji-qi-ren-mo-xing-yu-fang-zhen","wiki\u002F2026-09-20-导航\u002F0300-机器人模型与仿真","机器人模型与仿真",[7],"0300",{"path":1076,"stem":1077,"title":1078,"authors":1079,"date":1013,"chapterOrder":1080,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":1082,"stem":1083,"title":1084,"authors":1085,"date":1013,"chapterOrder":1086,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0400-0200-chuan-kou-tong-xin","wiki\u002F2026-09-20-导航\u002F0400-0200-串口通信","Serial_Comm（串口通信）",[7],"0400-0200",{"path":1088,"stem":1089,"title":1090,"authors":1091,"date":1013,"chapterOrder":1092,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0400-0300-shou-bing-kong-zhi","wiki\u002F2026-09-20-导航\u002F0400-0300-手柄控制","Joy（手柄控制）",[7],"0400-0300",{"path":1094,"stem":1095,"title":1096,"authors":1097,"date":1013,"chapterOrder":1098,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":1100,"stem":1101,"title":1102,"authors":1103,"date":1013,"chapterOrder":1104,"chapterDepth":1032,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0400-ying-jian-dui-jie-yu-kong-zhi","wiki\u002F2026-09-20-导航\u002F0400-硬件对接与控制","硬件对接与控制",[7],"0400",{"path":1106,"stem":1107,"title":1108,"authors":1109,"date":1013,"chapterOrder":1110,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":1112,"stem":1113,"title":1114,"authors":1115,"date":1013,"chapterOrder":1116,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":1118,"stem":1119,"title":1120,"authors":1121,"date":1013,"chapterOrder":1122,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":1124,"stem":1125,"title":1126,"authors":1127,"date":1013,"chapterOrder":1128,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0400-terrain-analysis","wiki\u002F2026-09-20-导航\u002F0500-0400-terrain_analysis","terrain_analysis（近场地面与障碍高差分析）",[7],"0500-0400",{"path":1130,"stem":1131,"title":1132,"authors":1133,"date":1013,"chapterOrder":1134,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":786,"stem":1136,"title":1137,"authors":1138,"date":1013,"chapterOrder":1139,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"wiki\u002F2026-09-20-导航\u002F0500-0600-fake_vel_transform","fake_vel_transform（云台系速度转换与底盘自旋）",[7],"0500-0600",{"path":1141,"stem":1142,"title":1143,"authors":1144,"date":1013,"chapterOrder":1145,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":1147,"stem":1148,"title":1149,"authors":1150,"date":1013,"chapterOrder":1151,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":1153,"stem":1154,"title":1155,"authors":1156,"date":1013,"chapterOrder":1157,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-0900-slam-toolbox","wiki\u002F2026-09-20-导航\u002F0500-0900-slam_toolbox","slam_toolbox（二维地图生成与轨迹优化）",[7],"0500-0900",{"path":49,"stem":1159,"title":1160,"authors":1161,"date":1013,"chapterOrder":1162,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"wiki\u002F2026-09-20-导航\u002F0500-1000-bt_navigator","bt_navigator（行为树导航任务调度）",[7],"0500-1000",{"path":500,"stem":1164,"title":1165,"authors":1166,"date":1013,"chapterOrder":1167,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"wiki\u002F2026-09-20-导航\u002F0500-1100-controller_server","controller_server（路径跟踪、进度检查与到达判定）",[7],"0500-1100",{"path":1169,"stem":1170,"title":1171,"authors":1172,"date":1013,"chapterOrder":1173,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1200-local-costmap","wiki\u002F2026-09-20-导航\u002F0500-1200-local_costmap","local_costmap（局部障碍代价地图）",[7],"0500-1200",{"path":1175,"stem":1176,"title":1177,"authors":1178,"date":1013,"chapterOrder":1179,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1300-global-costmap","wiki\u002F2026-09-20-导航\u002F0500-1300-global_costmap","global_costmap（全局规划代价地图）",[7],"0500-1300",{"path":1181,"stem":1182,"title":1183,"authors":1184,"date":1013,"chapterOrder":1185,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1400-map-server","wiki\u002F2026-09-20-导航\u002F0500-1400-map_server","map_server（已有二维地图加载与发布）",[7],"0500-1400",{"path":1187,"stem":1188,"title":1189,"authors":1190,"date":1013,"chapterOrder":1191,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1500-map-saver","wiki\u002F2026-09-20-导航\u002F0500-1500-map_saver","map_saver（二维栅格地图保存）",[7],"0500-1500",{"path":1193,"stem":1194,"title":1195,"authors":1196,"date":1013,"chapterOrder":1197,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":1199,"stem":1200,"title":1201,"authors":1202,"date":1013,"chapterOrder":1203,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1700-smoother-server","wiki\u002F2026-09-20-导航\u002F0500-1700-smoother_server","smoother_server（全局路径平滑）",[7],"0500-1700",{"path":1205,"stem":1206,"title":1207,"authors":1208,"date":1013,"chapterOrder":1209,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-1800-behavior-server","wiki\u002F2026-09-20-导航\u002F0500-1800-behavior_server","behavior_server（恢复行为与空闲方向移动）",[7],"0500-1800",{"path":1021,"stem":1023,"title":5,"authors":1211,"date":1013,"chapterOrder":1012,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},[7],{"path":1213,"stem":1214,"title":1215,"authors":1216,"date":1013,"chapterOrder":1217,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-2000-velocity-smoother","wiki\u002F2026-09-20-导航\u002F0500-2000-velocity_smoother","velocity_smoother（速度限幅与加减速平滑）",[7],"0500-2000",{"path":1219,"stem":1220,"title":1221,"authors":1222,"date":1013,"chapterOrder":1223,"chapterDepth":208,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\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":1225,"stem":1226,"title":1227,"authors":1228,"date":1013,"chapterOrder":1229,"chapterDepth":1032,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0500-dao-hang-can-shu","wiki\u002F2026-09-20-导航\u002F0500-导航参数","导航参数",[7],"0500",{"path":1231,"stem":1232,"title":1233,"authors":1234,"date":1013,"chapterOrder":1235,"chapterDepth":1032,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0600-kai-fa-wen-ti-yu-pai-cha","wiki\u002F2026-09-20-导航\u002F0600-开发问题与排查","开发问题与排查",[7],"0600",{"path":1237,"stem":1238,"title":1239,"authors":1240,"date":1013,"chapterOrder":1241,"chapterDepth":1032,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1019},"\u002Fwiki\u002F2026-09-20-dao-hang\u002F0700-jue-ce","wiki\u002F2026-09-20-导航\u002F0700-决策","决策",[7],"0700",{"path":1015,"stem":1243,"title":1244,"authors":1245,"date":1013,"chapterOrder":1246,"chapterDepth":1032,"docKey":1014,"docRoot":1015,"docTitle":1016,"isWikiDoc":1018,"isWikiIndex":1018},"wiki\u002F2026-09-20-导航\u002Findex","北极熊导航复现日志",[7],null,[1248,1250,1253,1256],{"name":7,"image":1249},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":1251,"image":1252},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":1254,"image":1255},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":1257,"image":1258},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431906625]