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/Spinnav2_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就可以实现运动控制了。
具体实现如下:
 
💡
有关问题,欢迎您在底部评论区留言,一起交流~
Loading...
Koreyoshi
Koreyoshi
一个普通的干饭人🍚
Announcement
🎉写给自己的2026心愿🎉
学一门乐器
拍摄人生照片
义工旅游一个月
在北京交很多新朋友
学习胡闹厨房建模和贴图
----- 2026 ------
👏希望我们一起变好👏