ConsensusFollow.py API 参考

融合路径收敛项、图拉普拉斯一致性项和 LQR 的分布式编队控制器。

  • 源码路径:multi_demo/scripts/swarm_lf/ConsensusFollow.py
  • 本页函数/方法数:8
  • 行号对应本文档生成时采用的源码版本;源码调整后应重新生成本页。

阅读方式

本页用于快速检索签名与调用关系。核心控制和算法推导请先阅读“开发指南”中的对应章节。

ConsensusFollow.__init__

__init__(self, start_pos, desire_path, L, self_id, offset, dt=0.1)
  • 源码位置:第 12 行
  • 类别:初始化
  • 作用:初始化 ConsensusFollow 的参数、状态缓存以及所需的通信或算法对象。
  • 主要调用np.append, np.array, np.copy, np.eye, np.linalg.inv, np.zeros, self.RiccatiEqSolve
  • 写入状态self.A, self.B, self.C, self.K, self.L, self.P, self.Q, self.R, self.dt, self.err_record, self.id, self.offset, self.path, self.ref_status, self.status, self.status_record

ConsensusFollow.DesireStatusCal

DesireStatusCal(self, ref_r)
  • 源码位置:第 45 行
  • 类别:内部计算/辅助
  • 作用:根据参考路径或领航者状态与编队偏移计算期望位置和速度。
  • 主要调用abs, np.array, np.copy, np.cross, np.linalg.norm, np.reshape, self.path.NearestP
  • 写入状态:不直接写入对象属性

ConsensusFollow.Acal

Acal(self, all_agent_pos, ref_r=0.0)
  • 源码位置:第 75 行
  • 类别:内部计算/辅助
  • 作用:根据当前状态与期望状态计算二维加速度控制量,并执行加速度/速度边界处理。
  • 主要调用np.append, np.array, np.copy, np.linalg.norm, np.squeeze, self.DesireStatusCal
  • 写入状态self.err_record

ConsensusFollow.AngleCal

AngleCal(self, a_vec)
  • 源码位置:第 115 行
  • 类别:内部计算/辅助
  • 作用:把二维加速度分解为切向与法向分量,计算轴向加速度和带符号滚转角。
  • 主要调用np.arctan, np.array, np.linalg.norm, np.reshape, np.squeeze
  • 写入状态:不直接写入对象属性

ConsensusFollow.StatusUpdate

StatusUpdate(self, u)
  • 源码位置:第 132 行
  • 类别:内部计算/辅助
  • 作用:更新控制器内部状态;离线基类还会按双积分模型推进状态。
  • 主要调用np.append, np.array, np.linalg.norm, np.reshape, np.squeeze
  • 写入状态self.ref_status, self.status, self.status_record

ConsensusFollow.GetErr

GetErr(self, desire_status)
  • 源码位置:第 154 行
  • 类别:算法查询/计算
  • 作用:计算并返回名称所指的轨迹、误差或几何量。具体定义见本页所属模块说明。
  • 主要调用:无显式函数调用
  • 写入状态:不直接写入对象属性

ConsensusFollow.RiccatiEqSolve

RiccatiEqSolve(A, B, Q, R)
  • 源码位置:第 159 行
  • 类别:内部计算/辅助
  • 作用:求解连续代数 Riccati 方程,返回用于构造 LQR 增益的矩阵 P。
  • 主要调用scipy.linalg.solve_continuous_are
  • 写入状态:不直接写入对象属性

SingleTest

SingleTest()
  • 源码位置:第 164 行
  • 类别:离线测试入口
  • 作用:源码内部辅助函数;结合签名、状态写入和主要调用可定位其在调用链中的职责。
  • 主要调用Acal, ConsensusFollow, DesirePath, StatusUpdate, dict, go.Figure, go.Scatter, int, np.array, np.ceil
  • 写入状态:不直接写入对象属性