下载双驱双向潜伏式AGV小车设计图资料包

版权申诉
5星 · 超过95%的资源 1 下载量 187 浏览量 更新于2024-12-19 收藏 18.21MB ZIP 举报
资源摘要信息: "双驱双向潜伏式AGV小车_零件图_机械工程图_机械三维3D设计图打包下载.zip" 标题中所涉及的知识点包括: 1. 双驱双向潜伏式AGV小车 - 双驱双向: 指的是AGV小车具有两个驱动电机,能够实现两个方向上的驱动。这样的设计可以提高AGV小车在转向、加速和制动时的稳定性及灵活性。 - 潜伏式: 描述AGV小车的设计使得它在执行任务时可以降低自身高度,使其更贴近地面,这样可以减少与周围环境的冲突,提高安全性,并且能够在狭小的空间内灵活运行。 - 自动引导车(Automatic Guided Vehicle, AGV): 是一种通过编程设定路径后可以自动在工厂、仓库等场所搬运物品的自动车辆。AGV小车通常搭载多种传感器和导航系统,如激光导航、磁导航等,实现无人操作下的物料搬运。 2. 零件图 - 零件图是工程图纸的一种,它详细表示了机械部件的形状、尺寸、材料和制造要求等信息。零件图对于制造过程至关重要,它能确保每个零件的精度和兼容性,是机械设计和生产制造中的基础资料。 3. 机械工程图 - 机械工程图包括机械零件图、装配图和系统图等,它详细展示了机械产品的设计意图和结构组成。工程图不仅包含零件的几何形状和尺寸,还包括表面粗糙度、公差配合、材料属性以及焊接、热处理等工艺要求。 4. 机械三维3D设计图 - 三维设计图是利用计算机辅助设计(CAD)软件创建的三维模型,它可以从不同角度和尺度展示机械部件或整个机械系统的外观和内部结构。三维设计图对产品的设计验证、分析模拟和制造指导都有重要作用,有助于更直观地理解产品设计,并在生产前进行有效的错误检测和修改。 压缩包子文件的文件名称列表中仅提供了一个名称 "A24-双驱双向潜伏式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 上传

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 < task_2.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 == 0) { // 只分配未完成的任务 AGV* closest_agv = nullptr; int wait_time = 0; // 等待时间计数器 // 初始化为 nullptr while (closest_agv == nullptr && wait_time < 1) { // 最多等待 1 秒钟 // 查找可用的小车 for (auto& agv : agvs) { if (agv.getState()) { closest_agv = &agv; break; } } if (closest_agv == nullptr) { // 没有可用的小车,等待一段时间再查找 std::this_thread::sleep_for(std::chrono::seconds(1)); wait_time++; } } if (closest_agv != nullptr) { // 找到可用小车 // 找到最近的可用小车 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->set_task_id(task.id); closest_agv->setStartCoord(task.start_x, task.start_y); closest_agv->setEndCoord(task.end_x, task.end_y); closest_agv->setState(false); // 小车被占用 task.completed = 1; // 任务状态修改为进行中 std::cout << "agv_id" << closest_agv->getid() << "————" << "task_id"<<task.id << "task_completed"<< task.completed << endl; } else { std::cout << "task_id-" << task.id << "No available AGV!" << "task_completed"<< task.completed <<endl; } } },修改代碼為在最後輸出所有task的agvid,taskid和task的completed

2023-05-25 上传