ZJU-FAST-Lab / Swarm-Formation

Formation Flight in Dense Environments
GNU General Public License v3.0
383 stars 63 forks source link

Swarm-Formation如何应对延迟,能否根据位置偏差重规划轨迹 #20

Closed Sapio-S closed 9 months ago

Sapio-S commented 9 months ago

您好,

我想在一个无人机仿真器里使用Swarm-Formation,但是遇到了一些问题。 仿真器与Swarm-Formation的通讯靠ROS完成,但是仿真器的计算延迟和ROS的通信延迟导致仿真器里的无人机无法完美执行Swarm-Formation发来的指令,Swarm-Formation的Rviz显示无人机的位置总是大幅落后于规划出来的红色轨迹。另外,仿真器与Swarm-Formation建立连接的时候无法同时连接所有无人机,无人机会先后依次出发并保持最大速度前进。即使在仿真里手动设置,让所有无人机在同一时刻出发,仍然无法完全解决这个问题。这些因素导致无人机在仿真里无法实现预期的编队。 所以想请问,在真机部署的时候,Swarm-Formation(或者Ego-Swarm)发送控制指令的频率大概是多少赫兹?真机部署如何解决无人机延迟的问题?以及,在延迟较大的情况下,是否有办法让无人机根据自己当前的位置,及时重新规划轨迹?

期待您的回复,万分感谢!

SamuraiChamploo commented 9 months ago

请问你所指的“无人机仿真器”是项目所提供的吗?还是说其他的类似于gazebo一样的环境。同时还请说一下你的系统环境,虚拟机还是linux系统。

  1. 关于仿真里ROS的延时 “Swarm-Formation的Rviz显示无人机的位置总是大幅落后于规划出来的红色轨迹”,这个现象与ROS的延时无关,目前你说描述的想象我更倾向于认为是系统算力和内存不足所导致的,由于ros node的机制,可能由于算力限制导致线程卡顿了,如果想确定这个问题,可能需要提供更多配置细节。另一方面,如果仿真的无人机数量过多,也会导致这个问题,如果你使用rqt_graph查看,你就会发现每增加一个无人机,就会增加相应的建图、感知、规划和控制node的开销。

  2. 关于真机部署 控制频率一般是100Hz。

  3. 如何解决无人机延迟问题 这个问题需要拆解为网络延时和算法延时,目前我认为你首先需要解决算法延时的问题,网络延时我们并没有系统地解决,该项目在做实验的时候在150ms的网络延时下可以正常运行。至于总延时较大的情况下,该项目并没有系统解决,这里我推荐你去参考另一篇论文Robust MADER: Decentralized and Asynchronous Multiagent Trajectory Planner Robust to Communication Delay,它也有开源项目rmader

Sapio-S commented 9 months ago

感谢您的回复。

我的系统环境为linux系统ubuntu 20.04。 我认为可以大致排除算法延迟的问题,因为目前我仅仿真6-7架无人机,用这个项目的仿真器运行没有任何问题。我试图使用的无人机仿真器不是项目仿真器,是一套动力学参数较为复杂的仿真器,但是它的计算速度比较慢,达不到100Hz的渲染速度。即,算法端可能在以100Hz的频率规划未来轨迹,但仿真端只能以50Hz乃至10Hz的频率执行,二者之间存在比较大的延迟,并且由于设置了ros消息的buffer大小,仿真端接收的指令可能会出现丢包。我感觉这样的延迟有点类似真机部署时遇到的通信或网络延迟。请问您在实机部署中遇到过类似的问题吗?这种问题有没有解决的途径呢?

SamuraiChamploo commented 9 months ago

你的这个问题有点过于复杂了,我认为可能和实机部署场景中遇到的问题不太一致,很抱歉我没法根据你的描述给出更好的建议