AGV详解:概念、结构与技术参数介绍

版权申诉
5星 · 超过95%的资源 1 下载量 138 浏览量 更新于2024-07-18 收藏 1.17MB PPT 举报
AGV学习教材深入探讨了AGV(自动导向车)及其在工业自动化中的重要角色。AGV是一种具备电磁或光学导引装置的搬运车辆,能够按照预设路线自主行驶,进行物料搬运、装载和卸载。课程内容包括以下几个方面: 1. AGV的基本概念:AGV被定义为装有自动导引装置的小型运输车辆,能够在规定路径上行驶,并配备有导航、停车控制、安全保护装置以及物料处理功能。美国物流协会和我国国家标准对其进行了明确的描述。 2. AGV的结构与工作原理:学习内容涵盖了AGV的主要技术参数,如行驶速度、载重能力、通信方式等,以及其如何通过电磁感应、光学传感器或激光导航等方式实现路径指引。 3. 案例分析:通过实际的引导案例,学员可以更好地理解AGV在实际生产环境中的应用,如ZPMC开发的自动导向车系统。 4. 发展历史:介绍了AGV技术的发展历程,从20世纪50年代初的初步开发到90年代末期的激光导航技术的应用,展示了其在提高生产效率和自动化水平中的作用。 5. AGVS(自动导引车系统)的特点:AGVS作为AGV的集合体,具有机电一体化、自动化、柔性化和准时化等特点,是自动化仓储系统不可或缺的一部分。 6. AGV的类型:课程区分了固定路径导引(依赖预设路线)和自由路径导引(能够灵活调整路径)两种类型的AGV,强调了不同应用场景下的适应性。 通过这个学习教材,学员不仅能掌握AGV的基本知识,还能了解到其在工业生产流程中的实施策略和未来发展趋势。这对于理解物流自动化、智能制造以及仓库管理等领域都具有重要的参考价值。

void MainWindow::moveAgvs() { Astar astar; std::vector<std::vector<Node*>> agv_paths(agvs.size()); // 将变量名改为 agv_paths //根據agv獲取taskid,初始化 int completed_task_index = -1; // 如果任務都完成了,停止定時器 bool all_tasks_completed = true; for (int j = 0; j < tasks.size(); j++) { if (tasks[j].completed != 2) { all_tasks_completed = false; break; } } if (all_tasks_completed) { timer->stop(); // 停止定时器 return; } // 得到agv的路綫 for (int i = 0; i < agvs.size(); i++) { if (agvs[i].getLoad() == true) { // 如果是负载的状态 if (agvs[i].getCurrentX() == agvs[i].getEndX() && agvs[i].getCurrentY() == agvs[i].getEndY()) { // 如果到达终点 agvs[i].setLoad(false); // 设置为空载状态 agvs[i].setState(true); std::cout << "agv__id :" << agvs[i].getid() << " ,agv_get_task_id :" << agvs[i].get_task_id() << endl; for (int j = 0; j < tasks.size(); j++) { if (tasks[j].id == agvs[i].get_task_id()) { completed_task_index = j; break; } } if (completed_task_index != -1) { tasks[completed_task_index].completed = 2; } task_to_agv(); // 更新任务分配 update(); // 更新AGV状态 } else { // 否则行驶到终点 Node* start_node = new Node(agvs[i].getCurrentX(), agvs[i].getCurrentY()); Node* end_node1 = new Node(agvs[i].getEndX(), agvs[i].getEndY()); std::vector<Node*> path = astar.getPath(start_node, end_node1); path.erase(path.begin()); agv_paths[i] = path; // 将路径保存到 agv_paths 中 } } else { // 如果是空载的状态 if (agvs[i].getCurrentX() == agvs[i].getStartX() && agvs[i].getCurrentY() == agvs[i].getStartY()) { // 如果到达起点 agvs[i].setLoad(true); // 设置为负载状态 } else { // 否则行驶到起点 Node* start_node = new Node(agvs[i].getCurrentX(), agvs[i].getCurrentY()); Node* end_node = new Node(agvs[i].getStartX(), agvs[i].getStartY()); std::vector<Node*> path = astar.getPath(start_node, end_node); path.erase(path.begin()); agv_paths[i] = path; // 将路径保存到 agv_paths 中 } } } // 将 agv_paths 赋值给类成员变量 paths paths = std::vector<std::vector<Node>>(agv_paths.begin(), agv_paths.end()); },paths = std::vector<std::vector<Node>>(agv_paths.begin(), agv_paths.end()); 報錯:沒有可接受的轉換

2023-05-26 上传