type
Post
status
Published
date
Mar 31, 2026
slug
summary
ubuntu20.04+foxy
tags
具身智能
ROS
SLAM
category
项目开发
icon
password
一、2d导航
相较于前面的mapping,nav导航的launch文件就是将slam换成nav2,里面最关键的一节在于具体的参数文件的配置。
fastlio2_nav2_launch.py
nav2_params.yaml
smart_nav.xml
0. 核心参数
use_sim_time:仿真时间
amcl:定位
local_costmap&global_costmap:代价地图
bt_navigator:行为树大脑
FollowPath/DWB:运动控制
local_costmap:局部代价地图
global_costmap:全局代价地图
下面是我在修改params参数文件的时候遇到的一些坑
1. 核心服务器的“改名换姓”(最大踩坑点)
这是导致很多人把高版本配置搬到 Foxy 上直接崩溃的元凶:
- Foxy 版本:专门负责机器狗脱困、旋转、后退的服务器叫做
recoveries_server。
- Humble 版本:官方认为“恢复动作”也是机器人行为的一部分,于是将其重构并重命名为了
behavior_server(行为服务器)。
2. 插件命名空间(Namespace)的变更
跟着服务器名字一起变的,是底层 C++ 插件的调用路径:
- Foxy 版本:在配置旋转和后退插件时,使用的是
nav2_recoveries/Spin和nav2_recoveries/BackUp。
- Humble 版本:全部统一改成了
nav2_behaviors/Spin等。如果你在 Foxy 里写了 behaviors,系统就会报找不到动态链接库(.so 文件)的致命错误。
3. 行为树(Behavior Tree)高级节点的缺失
Nav2 的大脑在 Humble 版本得到了极大的扩充,加入了许多复杂的业务逻辑节点,而这些在 Foxy 中是完全不存在的。
- Foxy 缺失的功能:不支持
nav2_compute_path_through_poses(途经多个中间点的路径规划),不支持nav2_change_goal_node(动态修改目标),也不支持nav2_remove_passed_goals等高级插件。
- 后果:在 Foxy 中,你的
plugin_lib_names列表必须保持绝对的“纯净”,只能保留最基础的算路、走路、清理地图和条件判断插件。
4. 行为树 XML 语法的年代感
Foxy 使用的是较老版本的 BehaviorTree.CPP 引擎,它的逻辑标签带有明显的时代特征:
- Foxy 特有标签:在处理备选逻辑和带记忆的顺序执行时,Foxy 的官方剧本大量使用了
<ReactiveFallback>和<SequenceStar>这样的原生控制标签。
- Humble 的进化:在新版本中,
<SequenceStar>已经被弃用,通常被更符合直觉的<ControlNode>组合或者直接被 C++ 层面封装好的复合动作(如PipelineSequence的高级变体)所取代。
5. 清理代价地图的服务调用
当机器狗卡住需要自救时,它会请求清理代价地图。
- Foxy 版本:在 XML 剧本中,调用清理服务时,必须精准指定名称,例如
service_name="local_costmap/clear_entirely_local_costmap"和global_costmap/clear_entirely_global_costmap。
- Humble 版本:清理服务的接口和参数传递变得更加灵活,甚至可以根据不同的膨胀层进行精细化清理。
二、运动控制
接入一个运动控制底层node就可以实现运动控制了。
具体实现如下:
有关问题,欢迎您在底部评论区留言,一起交流~
- Author:Koreyoshi
- URL:https://tangly1024.com/article/342c7b13-c6a7-8097-9578-d4e117900b00
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!




