已完成:

  1. ✅图 2 会有一个绕原路的bug,也就是一个 findAPath 有 bug,有些能卖的没卖出去,图 1 修正后反而会死锁等待

  2. ✅图 2 最上面的小口子没判断走进去

  3. ✅#pragma GCC optimize(2) 可以非编译指令加 O2 优化

  4. ✅摩擦力降低带来了碰撞的损失变少:直接加速撞死算了,反正不容易卡死,碰撞检测的后退太慢了。一方面碰撞情况极大地增加,另一方面碰撞的速度损失降低,蓝色方价值损失也少了一半

    1. ✅考虑碰撞检测的距离
    2. ✅提高减速的最低速度,给蓝色方和红色方分别制定减速策略
  5. ✅智能体动态优先级(老是出现没那东西的去卡拿了东西的,甚至把拿了7的给撞没)优先级设置:

    最高:卡死的(A没路走的话A优先级最高)

    最低:本来就已经在避障的

    系数:

    当前物品剩余价值V,如果为空则为目标优先级系数(就是之前那个每个站台的优先级系数)* smothing

    当前剩余路程S

    自身ID

    计算公式大概是:

    先判断是不是没路走了,如果是,设个很大的值 return

    然后判断是不是已经在避障了,如果是的话就给个0,继续避 return

    然后以V S ID为顺序,依次计算优先级(可以搞成一个函数,没想好,我回来可以设计一下)

    目前想的一个优先级是:

    1. 带 7(也就是去卖 7)
    2. 带 567(也就是去卖 4 5 6 )
    3. 带 123(也就是卖 123)
    4. 不带 去 7(也就是买 7)
    5. 不带 去 456(也就是去买 4 5 6)
    6. 不带 去 123(也就是去买 123)
  6. 对于不带物品提高速度

  7. ✅路径规划的有问题,容易撞上,具体表现在DodgingCorners和fixpath

    1. 路径不够直,弯折有点多
    2. 概率性撞上墙角(增加避障距离,90%解决)
  8. 所有可以分红蓝决策的地方 针对运动已经做完了

  9. 找到5m路径最后停住,然后停住一会对方已经过来了😅然后撞上了 这个确实是被推着走所必然的

  10. ✅效率:碰撞检测可能选择太差的路径:每隔 50 帧,重算一遍路径

  11. 问题:碰撞检测

    1. ✅找到的空的/备选路径不对,cantGo 的点不够,容易两个点+路口产生卡死
    2. 避让位置不够远,可能是新路径,可能是停住
  12. 效率:防止一秒内刷新四次跳帧,改成 %100==id*10

  13. 效率:可能会存在一些节点去非常远的地方,这非常影响效率。对于急缺的物资,需要动态提高效率

  14. 红蓝双方:

    1. ✅碰撞检测距离(红 6 蓝 4)
    2. 追逐检测距离【携带物品也可以同时考虑不确定两个机器人带不带物品】(红1.2 蓝 1)
  15. ✅30 帧卡死重算路径→10 帧算卡死路径

  16. ✅做了追逐检测

  17. 100 帧重算【不算对于 2 图有很好的效果,但是应该通过其他方式解决,比如避障应该跑的更远一些,促进转圈圈】

  18. 对 7 号工作台的参数设置更高一些,让 7的生产不要停下来,图 1 生产的比别人慢一些,用带物品的距离来衡量好的工作台

  19. ✅躲避障碍物应该更远一些,因为狭窄地图的情况确实不会出现了 0.81 0.74 0.56