根据任务书中的描述,初步思路是设计一个中心化算法和一个去中心化算法:
- 中心化算法接收所有状态信息,维护一个任务队列,调度所有机器人执行的宏观任务;
- 去中心化算法由每一个机器人分别独自完成,从任务队列中取得任务并自行执行,执行过程中自行考虑避障等细节因素。
项目初期可以让中心化算法和去中心化算法均是贪婪的,等第一个能跑的版本出来了之后,再考虑在此框架上更新算法内容。
- 陈泰然
- 整体框架
- PID算法实现
- 延迟反馈(forward)
- 底层计算
- 避障算法
- 墙壁建模
- ETA
- 蔡恩光
- 学习git(doge)
- 学习该项目的代码结构
- 写出一个最简单的任务分配算法保证机器人的基本运行
- 调度算法优化
- 让机器人们在制造货物时优先让4,5,6保持持平状态不要死命的制造6号物品 1,2,3同理
- 让机器人优先考虑最近的工作台
- 当时间不够时停止执行无法完成任务
- 测算任务所需时间
- 尽量避免把1 2 3 4 5 6号物品放入9号工作台
- 优先填充距离7 和 9 比较近的 4 5 6 号工作台。
- 如果当前要接的Task有跟合适的人选就让给他 (如果现在要接的Task的Supply工作台是其他机器人的Demand工作台,那么就把任务让给那个机器人)
- 在初始化阶段initialize一个「有权无向图」
- 让机器人动态查看当前是否有更优任务可供选择
- 分配任务时考虑机器人之间的碰撞概率!
- 机器人的控制算法
- PID算法
等机器人方向对准之后再进行加速
- 工作台的状态有两种更新方式
- 仅依靠帧交互数据更新
自行更新
- 复赛可能点
- 工作台进入角度限制
- 迷宫
- 公交车
- 转圈圈
- 撞墙
- 大眼瞪小眼
- 调度
现阶段的center.decide() 在每次调用时都会设置每个robot的target,而这导致每一帧的PIDController.memory都会被清空,导致积分项无效。现阶段的PIDMatrix仅支持对PID输出作线性变换,而目前所需的到达目标之后转向时刹车的功能需要"取绝对值"这种非线性操作。