for (int i = 0; i < agvs.size(); i++) { for (int j = 0; j < tasks.size(); j++) { if (tasks[j].id == agvs[i].get_task_id()) { completed_task_index = j; break; } } if (tasks[completed_task_index].completed == 2 ) { // 如果已经完成任务 paths[i].clear(); continue; // 跳过此次循环 } if (! paths[i].empty()) { Node* next_node = paths[i][0]; float speed = agvs[i].getSpeed(); float distance = sqrt(pow(next_node->x - agvs[i].getCurrentX(), 2) + pow(next_node->y - agvs[i].getCurrentY(), 2)); float time = distance / speed * 1000; //node_Value[next_node->x][next_node->y] = 10; QTimer::singleShot(time, this, [&, i, next_node]() { agvs[i].setCurrentX(next_node->x); agvs[i].setCurrentY(next_node->y); this->update(); // 在窗口中重绘 }); } },添加代碼,獲取agv的current的x和y,輸入_MAP[][] = 1
时间: 2023-12-12 09:02:12 浏览: 14
AGVS.rar_AGVS调度_gulf5j4_scheduling AGV_wpf agv调度系统_调度控制
5星 · 资源好评率100%
你可以在 `if (! paths[i].empty())` 的下一行添加以下代码来获取 AGV 的当前位置,并将 `_MAP` 数组相应位置的值设置为 1:
```c++
int cur_x = agvs[i].getCurrentX();
int cur_y = agvs[i].getCurrentY();
_MAP[cur_x][cur_y] = 1;
```
这样每次 AGV 移动后,都会在 `_MAP` 数组中标记出 AGV 经过的节点。
阅读全文