Python · 1 Hz
参考路径发布器
演示使用直线路径;工具同时支持圆形与 Slalom 点列
GAZEBO SIMULATION · SAFE MOTION CONTROL · 2026
A CBF-NMPC-Based Safe Motion Control System for Mobile Robots
一套基于 ROS 2 与 Gazebo 的差速底盘局部控制仿真系统。针对动态障碍物避让问题,控制器在滚动时域内联合优化轨迹跟踪与软化安全约束,并将首个最优控制量在线下发给仿真底盘。

以下指标来自项目演示材料;随附源码未包含可复现的全系统性能日志,后续将随测试视频与 rosbag 补充验证。
20 Hz
配置的控制循环频率
< 25 ms
演示材料报告的单次求解
0
演示材料报告的测试碰撞
100%
演示材料报告的解算成功率
控制器订阅里程计、参考路径和障碍物状态,按 20 Hz 标称周期构造预测问题。求解结果驱动仿真底盘,并发布预测轨迹、CBF 值和障碍物预测,供 RViz2 监控。
Python · 1 Hz
演示使用直线路径;工具同时支持圆形与 Slalom 点列
Python · 20 Hz
同步动态障碍物里程计并广播速度状态
C++ · 20 Hz
构建滚动时域优化并输出 v / ω
Simulation
执行动力学仿真与预测轨迹可视化

读取机器人位姿、参考路径与障碍物状态
以恒速模型预测障碍物在 N 步内的位置
由 CasADi 构造问题并使用 IPOPT 求解
下发首个控制量,发布诊断并进入下一周期
采用差速 Unicycle 模型描述平面运动。连续时间动力学经 RK4 离散化,以兼顾预测精度与数值稳定性。
优化项由状态跟踪、控制输入、控制增量平滑、终端状态和 CBF 松弛变量组成。航向误差采用 1 − cos(θ − θ_ref) 形式,避免角度周期带来的不连续。
对每个障碍物定义上述安全函数,并施加离散前向不变约束。高权重非负松弛变量与 h_k ≥ −0.01 容差用于缓解瞬时不可行,因此这是软化的离散安全约束,而非绝对安全证明。
障碍物约束不变时保留上一周期解作为 IPOPT 初值;当前实现会在障碍物位置变化时重建问题并清空初值,这是后续实时性优化重点。
根据实时位置和速度执行恒速外推,并在整个预测时域内逐步施加 CBF 约束。
从最近路径点截取 N+1 个参考点并渐进消除横向偏差。当前控制节点将参考航向固定为 +X,圆形与 Slalom 跟踪仍需完善。
求解异常时立即发布零线速度和零角速度;诊断消息持续记录求解耗时、成功状态和 CBF 值。
测试覆盖多障碍物迎面拦截、窄通道卡口和复杂多障碍物场景。下方每组场景附有 Gazebo 测试视频,可直接播放查看闭环避障过程。
TEST 01
动态障碍物以梯队形式迎面运动,验证预测约束与在线绕行能力。
TEST 02
在有限横向空间中测试动态障碍物避让;通道墙体用于 Gazebo 碰撞环境,尚未作为 CBF 约束输入。
TEST 03
不同半径障碍物形成高密度冲突,测试连续求解稳定性。

当前采用恒速、已知状态预测。下一步将结合 EKF 或学习模型,输出短时多轨迹概率预测。
当通道完全阻塞时,局部 NMPC 可能进入局部极小或不可行状态。计划接入 PRM / Hybrid A* 全局规划器。
当前障碍物状态来自 Gazebo 真值而非传感器感知。后续需接入检测与跟踪,并在真实底盘上标定延迟、轮胎侧滑和状态估计误差。
ROS 2 Humble · C++ · CasADi · IPOPT · Gazebo 11 · RViz2 · Python