AGV防疫机器人:多功能,全自主避障与高效消毒

版权申诉
0 下载量 198 浏览量 更新于2024-07-11 收藏 20KB DOCX 举报
"一种用于疫情防控的AGV机器人及其控制系统,旨在解决现有防疫机器人在地形适应性、减震性能、多功能集成以及自主避障能力上的不足,提供更高效、全面的防疫解决方案。" 正文: 1. AGV机器人概述 自动引导车(Automated Guided Vehicle,简称AGV)是一种能够自主导航并执行特定任务的移动机器人。在疫情防控中,AGV机器人被设计用于高效率的消毒和体温监测,特别是在人流量大、流动性强的公共场所。 2. 技术改进点 - 减震机构:针对传统防疫机器人采用的一般轮式底盘缺乏减震功能的问题,本发明引入减震机构,提高了AGV在不同地形的适应性和车身零件的耐用性,确保机器人在复杂环境中的稳定运行。 - 扩大消毒范围:通过优化底盘设计,AGV机器人能更好地在各种地形上全方位喷洒消毒,覆盖更全面的区域,提升消毒效果。 3. 多功能集成 传统的防疫机器人往往功能单一,如仅限于消毒或体温测量。本发明的AGV机器人集成了多种功能,包括但不限于体温检测、消毒喷洒,还能进行数据收集,便于进行大数据分析和管理,提高疫情防控的效率和精确度。 4. 自主避障系统 为了克服现有防疫机器人依赖遥控器操作和避障能力不足的问题,本AGV机器人控制系统配备了先进的自主避障技术,能自主感知环境并做出相应决策,实现无障碍移动,提升了机器人的智能化程度和实用性。 5. 控制系统的创新 该AGV机器人的控制系统设计着重于实现全自主导航和避障,结合无线通信技术,可以实时接收和处理环境信息,确保机器人在复杂环境下安全、有效地执行任务。 6. 应用场景与优势 由于其多功能性和环境适应性,这种AGV机器人不仅适用于公共场所的消毒工作,还可以在医院、学校、车站等地方进行体温监测,减轻人力负担,减少交叉感染的风险。同时,其轻便的设计使得搬运和部署更加便捷,扩大了应用场景。 总结,本发明的AGV机器人及其控制系统通过技术创新,提高了防疫工作的自动化水平,增强了机器人的环境适应性和功能性,为疫情防控提供了更为先进、全面的技术支持。

void AGVScheduler::assign_task_to_agv(std::vector<Task>& tasks, std::vector<AGV>& agvs) { // 首先按照任务的完成状态、优先级进行排序 std::sort(tasks.begin(), tasks.end(), [](const Task& task_1, const Task& task_2) { if (task_1.completed != task_2.completed) { return !task_1.completed; } else { return task_1.priority < task_2.priority; } }); for (const auto& task : tasks) { std::cout << "Task name: " << task.id << ", Completed: " << task.completed << ", Priority: " << task.priority << std::endl; } // 遍历任务列表,分配任务给可用的小车 for (auto& task : tasks) { if (!task.completed) { AGV* closest_agv = nullptr; // 初始化为 nullptr while (closest_agv == nullptr) { // 查找可用的小车 for (auto& agv : agvs) { if (agv.getState()) { closest_agv = &agv; break; } } if (closest_agv == nullptr) { // 没有可用的小车,等待一段时间再查找 std::this_thread::sleep_for(std::chrono::seconds(1)); } } // 找到最近的可用小车 int min_distance = INT_MAX; for (auto& agv : agvs) { if (agv.getState()) { int distance = abs(agv.getCurrentX()- task.start_x) + abs(agv.getCurrentY() - task.start_y); if (distance < min_distance) { min_distance = distance; closest_agv = &agv; } } } // 将任务分配给 AGV 对象的起点和终点坐标 closest_agv->setStartCoord(task.start_x, task.start_y); closest_agv->setEndCoord(task.end_x, task.end_y); closest_agv->setState(false); task.completed = true; std::cout << closest_agv->getid() << "," << task.id << endl; } } },當沒有小車用的時候就卡死,添加代碼,找到可用小車的開始運行,沒找到可用小車的一直等待,直到有可用小車

2023-05-24 上传