ego_planner_standalone
本项目将原始的 ROS EGO-Planner 分离为两部分:
- ROS Bridge (
ego-planner/src/ros_bridge): 处理 ROS 消息和共享内存通信 - Planner Standalone (
planner_standalone): 无 ROS 依赖的纯 C++ 规划算法
当前架构
数据流
仿真环境 (simulator) -> ROS 话题订阅 -> ROS Bridge Node -> 共享内存 (Shared Memory) -> Planner Standalone (FSM + 算法) -> 共享内存 (Shared Memory) -> ROS Bridge Node -> ROS 话题发布 -> Traj Server -> 控制器
输入数据(从仿真环境)
- 定位数据 (
/visual_slam/odom)- 位置、速度、姿态
- 频率:~100Hz
- 点云数据 (
/grid_map/occupancy_inflate)- 已膨胀的障碍物点云
- 频率:~10Hz
- 注意: 仿真已完成膨胀,算法端不需要再处理
- 目标航点 (
/waypoint_generator/waypoints)- 目标位置
- 事件驱动(用户在 RViz 中点击)
输出数据(给控制器)
- B 样条轨迹 (
/planning/bspline)- 控制点
- 节点向量 (knots)
- 轨迹 ID
- 发布给
traj_server
- 轨迹可视化 (
/planning/bspline_path)- Path 消息格式
- 用于 RViz 显示
- 规划器状态 (
/planning/planner_state)- FSM 状态 (INIT, WAIT_TARGET, GEN_NEW_TRAJ, etc.)
算法流程
整个规划器的运行逻辑由 main.cpp 驱动,通过 EGOPlannerManager 协调各个模块。
- 主循环:
main.cpp负责 IO 接口读写、程序启动 - : 读取状态与环境信息


