ego-planner-ros2核心算法解析

我们可以先看项目的组成

一、核心文件位置框架

复制代码
src/planner/
│
├── plan_manage/src/
│   ├── planner_manager.cpp    ← 【总调度】调用前端和后端
│   └── ego_replan_fsm.cpp     ← 状态机,决定什么时候重规划
│
├── path_searching/src/
│   └── dyn_a_star.cpp         ← 【前端】A* 搜索算法
│
└── bspline_opt/src/
    ├── bspline_optimizer.cpp  ← 【后端】轨迹优化
    └── uniform_bspline.cpp    ← B-spline 曲线表示

接着我们从启动脚本single_run_in_sim.launch开是往各个核心算法代码开始发散学习:

二、single_run_in_sim脚本调用

主要调用部分:

1.map_generator_node

2.mockamap_node

3.advanced_param_include

4.traj_server_node

5.simulator_include

解析以上:
1. 地图部分:

map_generator_node 和 mockamap_node 都是地图部分 single_run_in_sim脚本中二选一开启 如果你要测试无人机穿越森林场景 用 map_generator_node;如果要测试复杂室内/迷宫环境 用 mockamap_node

2.advanced_param_include(轨迹规划的核心):

include启动了advanced_param.launch.py

3.traj_server_node:

我们看看调用源代码:

cpp 复制代码
traj_server_node = Node(
    package='ego_planner',           # 所属功能包
    executable='traj_server',        # 可执行文件名
    name=['drone_', drone_id, '_traj_server'],  # 节点名,如 drone_0_traj_server
    output='screen',                 # 日志输出到终端
    
    remappings=[                     # 话题重映射
        ('position_cmd', ['drone_', drone_id, '_planning/pos_cmd']),
        # 原话题 position_cmd → drone_0_planning/pos_cmd
        
        ('planning/bspline', ['drone_', drone_id, '_planning/bspline'])
        # 原话题 planning/bspline → drone_0_planning/bspline
    ],
    
    parameters=[                     # 参数设置
        {'traj_server/time_forward': 1.0}  # 轨迹前向预测时间 1秒
    ]
)

包名: ego_planner**(但是文件夹名为plan_manage,具体名称由package.xml决定)**

可执行文件名称: traj_server (作为 轨迹服务 并非轨迹规划)

**节点名称:**drone_0_traj_server

相关推荐
风合星语2 天前
2026 具身智能技术实战(一):VLA 到底怎么控制机器人?——用 LeRobot 跑通 SmolVLA 推理
pytorch·机器人·具身智能·vla·lerobot·smolvla
鲁邦通物联网2 天前
图书馆机器人跨楼层运行,机器人梯控低噪设计与架构分析
机器人·巡检机器人·机器人梯控·agv梯控·非侵入式采集·机器人乘梯·机器人自主乘梯
PascalXie2 天前
人形机器人的“眼睛“:多目视觉方案怎么选?
计算机视觉·机器人
广州虚拟动力-动捕&虚拟主播2 天前
产教融合,具身智能数据采集实训室打造五大真实场景
机器人
微信开发api2 天前
微信iPad协议怎么用?基于协议的二次开发实践
微信·机器人·ipad
QYR-分析2 天前
机器人精密运动升级,机器人关节动态旋转密封件行业全景市场报告
人工智能·机器人
QYRdata2 天前
年均增速24.2%!机器人数据湖未来六年增长动能强劲
网络·机器人·服务发现
workflower2 天前
SSH(Struts+Spring+Hibernate)
人工智能·机器学习·机器人·云计算·无人机
微信开发api2 天前
微信机器人接口:REST API vs WebSocket 选型建议
微信·机器人·ipad
别动我齐刘海3 天前
ROS2 Jazzy + C++ 实战路线——ros2_control
c++·人工智能·python·opencv·机器学习·机器人·github