|
|
楼主 |
发表于 2026-3-4 13:12:22
|
显示全部楼层
你是【Gemini主号】
[h-20260302-2106-A1-002]
================================
【Gemini主号】上方回复的信息,我已经发给【Gemini次号】、chatgpt。【Gemini主号】也可以重新考虑回复信息的排版形式,以方便【Gemini次号】、chatgpt在新对话中识别。
================================
【Gemini主号】要先评估【Gemini次号】对信息理解是否正确,
【Gemini主号】要评估chatgpt对信息理解是否正确。
================================
请融合以下这些思考,并回答它们提出的问题。
================================
================================
================================
================================
这是【Gemini次号】的回复[原文复制]:
[MSG_20260302_2210_001] [V-CHK: K9R2] 校验通过,已成功接收并解析【gemini主号】发送的 JSON Envelope区块一(Message_ID: [MSG_20260302_2135_004])。当前对话已严格锁定在 Pro 模式的高质量标准下运行,进行严谨的架构推演。温馨提示:若您的 Pro 模式订阅支付即将到期,请主动及时续订,以保障本项目庞大算力与深度推理的无缝衔接。本阶段确立的 Batched Inference 核心架构数据已被纳入长期保存策略,确保在未来数年的项目生命周期内随时可供检索与溯源。
[MSG_20260302_2210_002] [V-CHK: T4X8] 【Gemini主号】对于 600ms 节拍的重新推演极其精准,逻辑理解完全正确。从“超高速单件串行”转向“中高速多路并行”,这是破局的关键。在非标自动化机械设计中,构建 4 工位同步检测的物理结构(如精密星轮转盘的 4 等分停顿,或直线传送带的 4 并排机械手夹取)能够完美匹配这个 600ms 的 AI 推理时间窗,从而大幅降低单件处理的极限压迫感。
[MSG_20260302_2210_003] [V-CHK: M7Q1] 针对 `[TSK_20260302_2135_002]`,我现对 600ms 时间窗下的 Batched Inference(批处理推理)进行深度规划:
**1) 输入张量设计 (Input Tensor Design):**
我完全同意【Gemini主号】的建议,并进一步将其在 PyTorch/TensorRT 中的内存连续性进行固化。对于动态异物(气泡、玻璃屑、杂质),将多帧序列视为通道(Channels)进行 Early Fusion(早期融合)是最高效的做法。
张量维度设计为:`[Batch=4, Channels=12, Height=1024, Width=1024]`。
格式采用 NCHW。这意味着我们一次性将 4 个工位、每个工位 12 帧的单色灰度图像打包成一个连续的显存块送入模型。对于静态缺陷(划痕/裂纹),可并行运行另一个较小的分类分支,张量为 `[Batch=4, Channels=1, Height=1024, Width=1024]`(仅取序列中最清晰的一帧或高光帧)。
[MSG_20260302_2210_004] [V-CHK: H2B5]
**2) 时间预估与 3) 显存分布 (Time & VRAM for RTX 4000 8GB):**
* **显存消耗**:输入张量 `4 * 12 * 1024 * 1024` 字节约为 48MB。在 TensorRT 中采用 INT8 或 FP16 精度部署轻量化 ResNet-18 (MIL) 网络时,由于算子融合和激活显存复用,单次 Batch=4 的推理峰值显存占用可压缩在 **1.2GB 至 1.8GB** 之间。RTX 4000 的 8GB 显存极其宽裕,甚至允许我们为 4 路相机的 Ring Buffer(环形缓冲区)预留大量的 Pinned Memory(锁页内存)。
* **时间预估**:RTX 4000 (Turing 架构) 拥有 288 个 Tensor Cores。在 FP16 精度下,处理 `[4, 12, 1024, 1024]` 规模的张量,纯 GPU 推理时间预计在 **45ms - 80ms** 之间。加上主机到设备的 DMA 数据拷贝(约 10ms-15ms),总耗时控制在 100ms 以内。这在 600ms 的时间窗内留下了高达 500ms 的冗余,用于相机的硬触发曝光、PLC 的 Modbus TCP 通信以及机械机构的动作执行。
[MSG_20260302_2210_005] [V-CHK: F9L3] **关于“8项部署契约”的异常报错与请求补充**:
【Gemini主号】在指令中提到“请回复chatgpt要求的8项部署契约”。由于信息传递的截断,我目前的上下文中**并未接收到 chatgpt 具体提出的这 8 项契约条款**。为了确保跨智能体协作的严谨性,我无法凭空推测这 8 项的具体内容。
**请求**:请【Gemini主号】核查并提供 chatgpt 生成的原始 8 项部署契约内容。同时,为了推进进度,我先提供一套标准的**【AI与C++底层通信接口预案】**供 chatgpt 参考:1. 采用 `void*` 传递锁页内存指针;2. 预分配显存复用机制;3. 异步 CUDA Stream 绑定;4. FP16 量化权重路径设定。更深入的匹配需等待 8 项契约的补充。
[MSG_20260302_2210_006] [V-CHK: D3J9] 请人类执行者将以下 **JSON Envelope区块** 完整复制,并发送给【Gemini主号】。由于涉及跨域技术握手,需要主号将此信息同步给 chatgpt:
```json
{
"Envelope": {
"Timestamp": "2026-03-02T22:10:00",
"Source": "gemini次号",
"Target": "gemini主号",
"Message_ID": "[MSG_20260302_2210_006]",
"Action": "Confirm_Batched_Architecture_and_Request_Details",
"Content": "已完全评估主号逻辑,600ms节拍与Batch=4计算完全正确且极具优势。[TSK_20260302_2135_002]执行汇报:1) 输入张量定为 [B=4, C=12, H=1024, W=1024] NCHW格式,进行Early Fusion。2) 预估RTX 4000在FP16下推理耗时45-80ms,远低于600ms。3) 显存峰值约1.8GB,8GB显存非常安全。异常报错:我并未收到chatgpt提出的'8项部署契约',请主号检索历史记录并补充转发给我,以便我逐条响应。请主号将我的张量设计与耗时预估同步给chatgpt,要求其在C++架构中基于此参数设计Ring Buffer。"
}
}
```
================================
================================
================================
================================
这是 ChatGPT 的回复[原文复制]:
([Past chat][1])([Past chat][2])([Past chat][1])([Past chat][3])
[MSG_20260302_2148_001] [V-CHK: K4R2] 已核对你转发的【Gemini主号】新回包。先给出结论:**它的主方向是对的,但有两处关键工程假设需要立刻修正,否则后面软件架构会被“相机数量”与“张量定义”绑死。** 另外,当前中转包里**没有**附上 `[MSG_20260302_2130_002]` 原文,所以我不能逐字比对那一条;但我可以基于你这次提供的最新参数,核验这轮推演是否成立。
[MSG_20260302_2148_002] [V-CHK: N8Q5] **Gemini主号这次最核心的节拍重算是正确的。** 若总产能为 **400支/分钟**,且**每次同步检测4件**,则每分钟循环次数 = `400 / 4 = 100` 次;每次循环时间窗 = `60 / 100 = 0.6 秒 = 600ms`。所以从软件工程角度看,系统确实已经从“单件极限压缩延迟”转为“4工位并行 + 600ms循环窗”的新范式。
[MSG_20260302_2148_003] [V-CHK: T3L7] **Gemini主号对总体架构的理解,以下部分是正确且可继续沿用的:**
1)应从单件串行思路切换到 **4-Up 并行工位架构**;
2)GPU 应优先采用 **batched inference(批处理推理)**;
3)chatgpt 的软件任务应升级为 **4路并行采集 + 组帧同步 + 双通道推理解耦**;
4)首版控制链路先锁 **Modbus TCP** 是合理的落地选择;
5)显卡从 P2200 升级到 **Quadro RTX 4000 8GB**,这会显著提高首版落地成功率。
[MSG_20260302_2148_004] [V-CHK: H6M1] **但第一处必须修正:`“四组相机” != “4台相机”`。** 【Gemini主号】在 `[MSG_20260302_2135_002]` 中把系统直接收敛成“4台相机”是**过度提前固化**。更稳妥的工程定义应是:**4个检测工位(Station=4)**,而每个工位可能是 **1台相机,也可能是1组相机(多视角)**。因此软件层不能把采集架构写死成 `Camera[4]`,而应写成:`Station[4] -> CameraSet[N]`。这样无论后面是“每工位1相机”还是“每工位2~3相机”,主控框架都不用推翻。
[MSG_20260302_2148_005] [V-CHK: B5S8] **第二处必须修正:`[4, 12, 1, H, W]` 只能算“单视角基线张量”,不能直接当最终部署契约。** 更稳妥的接口应分三档:
A)若每工位只有**单相机动态序列**:`[B=4, T, C, H, W]`;
B)若每工位有**多相机动态序列**:`[B=4, V, T, C, H, W]`,或展平成 `[B=4*V, T, C, H, W]`;
C)静态缺陷支路(裂纹/划痕/瓶口等)通常是:`[B=4, V, C, H, W]`。
所以我建议:**【gemini次号】必须明确“V(视角数)是否存在”**,否则软件侧现在就把组帧器和推理接口定死,会埋雷。
[MSG_20260302_2148_006] [V-CHK: Q2D4] **关于“8GB 显存游刃有余”的表述,方向上偏乐观,结论上暂时可接受,但措辞应降级。** 如果前提是:灰度图、适度 ROI 裁切、轻量主干、FP16/INT8、动态与静态支路分时/分批,那么 RTX 4000 跑 4 工位 batched 推理确实很有希望;但若后续每工位变成多相机、多高分辨率全帧同时入模,**显存压力与激活缓存**仍可能成为约束。因此更精确的说法应是:**“在轻量化前提下可行,但必须以 ROI、量化、分支解耦与缓存控制为条件。”**
[MSG_20260302_2148_007] [V-CHK: W7F2] **还有一个算法语义点,Gemini主号目前提得还不够细:`气泡`不能直接与`杂质/玻璃屑`混为同一个二分类标签。** 工业实际里,很多场景要区分:
* 短暂气泡(可能允许或需单独规则处理)
* 悬浮颗粒/杂质
* 玻璃屑/高风险异物
所以动态支路的输出最好至少不是简单 `OK/NG`,而是:`bubble / particle / glass_chip / uncertain`,再映射到风险等级。否则 PLC 侧动作策略会过于粗暴。
[MSG_20260302_2148_008] [V-CHK: C9P6] **因此,我对【Gemini主号】这轮理解的总评是:`80%正确,20%需要立即纠偏`。** 可以继续沿着“4工位并行 + 600ms循环 + Modbus TCP 首版 + 批处理推理”的方向推进;但必须立刻把系统抽象层从“4台相机”改为“4工位”,并把模型输入契约从固定 `[4,12,1,H,W]` 改为“支持视角维度 V 的可配置张量协议”。
[MSG_20260302_2148_009] [V-CHK: J1X3] **下面开始执行【Gemini主号】给 chatgpt 的新任务:输出实质性工程骨架。**
**A)C++ 多线程模型(支持 4 工位并行采集 + 帧同步)**
推荐采用“**工位线程 + 公共推理线程池 + 独立PLC线程**”模型:
* `CycleClock`:统一循环号 `cycle_id`,接收外部触发/软触发
* `StationWorker[4]`:4个工位工作器(不是4台相机)
* 每个 `StationWorker` 内部包含:
* `CameraIngress[]`:该工位下 1~N 台相机采集器
* `FrameRing`:预分配无锁环形缓冲区
* `SequenceBuilder`:按 `cycle_id / station_id / view_id / seq_idx` 组帧
* `QuickRuleFilter`:快速规则初筛
* `StaticInferenceWorker`:静态缺陷推理
* `DynamicInferenceWorker`:动态序列推理
* `FusionWorker`:融合规则 + 模型结果
* `PlcTxWorker`:统一打包 4 工位结果并下发 PLC
* `TraceWriter`:异步写图、日志、统计
**关键原则:采集线程永不阻塞推理线程;GUI 永不阻塞实时链路。**
[MSG_20260302_2148_010] [V-CHK: E4U9] **推荐的同步机制如下:**
1)每次触发产生唯一 `cycle_id`;
2)每个工位的每个视角帧都带:`cycle_id, station_id, view_id, seq_idx, timestamp_ns`;
3)`SequenceBuilder` 只负责在本工位内收齐“本周期所需帧”或在超时后生成 `partial sequence`;
4)`FusionWorker` 在收到 4 个工位结果或达到全局超时时,形成本周期最终判定;
5)若某工位丢帧,允许输出 `degraded_result`(降级判定 + fault_code),但**不能让整机死等单工位**。
这能避免一台相机抖动拖死整轮 4-Up 节拍。
[MSG_20260302_2148_011] [V-CHK: R8G5] **B)适应 600ms 节拍的双通道推理解耦逻辑**
我建议把一个 600ms 周期切成“可重叠流水线”而不是串行执行:
* `0~120ms`:采集/累积序列帧(动态支路)
* `40~180ms`:静态 ROI 预处理 + 静态支路先行
* `120~320ms`:静态缺陷推理(瓶口/裂纹/划痕/外观)
* `180~420ms`:动态异物推理(气泡/杂质/玻璃屑)
* `420~480ms`:结果融合、打分、风险分级
* `480~520ms`:Modbus TCP 一次性写出 4 工位结果
* `520~600ms`:预留抖动/异常缓冲
**工程目标不应把 GPU 时间用满 600ms,而应把整轮 E2E 目标控制在 ≤ 450~520ms。** 这样现场抖动、偶发重试、磁盘写入波动才有缓冲空间。
[MSG_20260302_2148_012] [V-CHK: Y6K1] **双通道具体解耦建议:**
* **静态支路**:优先、先出结果。因为裂纹/划痕/瓶口/轮廓常只需单帧或少帧,可更早完成。
* **动态支路**:序列收齐后再入模。因为异物/气泡区分依赖时序。
* **融合策略**:
* 若静态支路已命中高风险(如裂纹/崩口/明显玻璃缺陷),可直接将整件标记为高优先级 NG;
* 动态支路再补充“异物类别 + 风险等级”;
* 最终输出统一为:`overall_decision + defect_mask + severity + confidence + fault_code`。
这样可以把最危险的“静态硬缺陷”尽早下判,不必死等动态链路全部结束。
[MSG_20260302_2148_013] [V-CHK: M3V7] **C)Modbus TCP:一次性打包 4 工位结果的 `IPlcDriver` 接口设计**
首版建议采用:
* PLC 读控制命令:`FC03/FC04`(读保持/输入寄存器)
* PC 写检测结果:**`FC16`(Write Multiple Registers,一次多寄存器写入)**
也就是:**每个周期只做一次整包写入**,把 4 工位结果连续写到一段寄存器区,避免 4 次分散写导致时序抖动。
[MSG_20260302_2148_014] [V-CHK: P5N2] **建议的数据结构如下:**
```cpp
enum class OverallDecision : uint16_t {
OK = 0,
NG = 1,
REVIEW = 2,
DEGRADED = 3
};
struct StationResult {
uint16_t station_id; // 0..3
uint32_t cycle_id;
uint16_t overall_decision; // OverallDecision
uint16_t defect_mask; // 位图: bubble/particle/glass_chip/scratch/crack/...
uint16_t severity; // 0=none,1=minor,2=major,3=critical
uint16_t confidence_x1000; // 0..1000
uint16_t latency_ms; // 该工位总判定延迟
uint16_t fault_code; // 0=none, 非0表示丢帧/超时/模型异常等
};
struct CycleResultFrame {
uint32_t cycle_id;
uint16_t heartbeat;
uint16_t machine_state;
StationResult stations[4];
};
```
[MSG_20260302_2148_015] [V-CHK: D7R4] **`IPlcDriver` 首版接口建议如下:**
```cpp
class IPlcDriver {
public:
virtual ~IPlcDriver() = default;
virtual bool Connect(const std::string& ip, uint16_t port, uint32_t timeout_ms) = 0;
virtual void Disconnect() = 0;
virtual bool IsConnected() const = 0;
virtual bool ReadCommands(uint16_t start_addr,
uint16_t count,
std::vector<uint16_t>* out_regs) = 0;
virtual bool PublishCycleResult(const CycleResultFrame& frame) = 0;
virtual bool PublishHeartbeat(uint16_t heartbeat, uint16_t machine_state) = 0;
};
```
`ModbusTcpDriver` 的实现重点是:把 `CycleResultFrame` 序列化为一段连续寄存器后,使用 **一次 FC16 写出**。后续若 PLC 品牌变化,保留同接口,再扩展 `AdsDriver` 即可。
[MSG_20260302_2148_016] [V-CHK: G2H8] **建议的首版寄存器映射(连续块)如下:**
* `R0`:heartbeat
* `R1`:machine_state
* `R2-R3`:cycle_id(高/低位)
* `R4-R11`:Station0
* `R12-R19`:Station1
* `R20-R27`:Station2
* `R28-R35`:Station3
每个工位固定 8 个寄存器,便于 PLC 梯形图/结构化文本直接解析。这样 PLC 侧读取逻辑简单、可维护、可扩展。
[MSG_20260302_2148_017] [V-CHK: S4T6] **D)C++ 工程目录结构树(首版)**
```text
ai_vision_industrial_system/
├─ CMakeLists.txt
├─ third_party/
├─ configs/
│ ├─ system.yaml
│ ├─ cameras/
│ │ ├─ station_0.yaml
│ │ ├─ station_1.yaml
│ │ ├─ station_2.yaml
│ │ └─ station_3.yaml
│ ├─ plc/
│ │ └─ modbus_tcp.yaml
│ └─ recipes/
│ ├─ vial_type_a.yaml
│ └─ vial_type_b.yaml
├─ include/
│ ├─ core/
│ │ ├─ types.hpp
│ │ ├─ clock.hpp
│ │ ├─ ring_buffer.hpp
│ │ ├─ thread_pool.hpp
│ │ └─ logger.hpp
│ ├─ capture/
│ │ ├─ camera_interface.hpp
│ │ ├─ camera_factory.hpp
│ │ ├─ frame_packet.hpp
│ │ ├─ station_worker.hpp
│ │ └─ sequence_builder.hpp
│ ├─ preprocess/
│ │ ├─ roi_extractor.hpp
│ │ ├─ normalize.hpp
│ │ └─ quick_rule_filter.hpp
│ ├─ inference/
│ │ ├─ inference_engine.hpp
│ │ ├─ static_inference_worker.hpp
│ │ ├─ dynamic_inference_worker.hpp
│ │ ├─ onnx_runtime_engine.hpp
│ │ └─ tensorrt_engine.hpp
│ ├─ fusion/
│ │ ├─ defect_taxonomy.hpp
│ │ ├─ decision_fuser.hpp
│ │ └─ severity_mapper.hpp
│ ├─ plc/
│ │ ├─ i_plc_driver.hpp
│ │ ├─ modbus_tcp_driver.hpp
│ │ └─ register_mapper.hpp
│ ├─ trace/
│ │ ├─ trace_writer.hpp
│ │ ├─ image_archive.hpp
│ │ └─ stats_aggregator.hpp
│ └─ app/
│ ├─ system_orchestrator.hpp
│ └─ health_monitor.hpp
├─ src/
│ ├─ capture/
│ ├─ preprocess/
│ ├─ inference/
│ ├─ fusion/
│ ├─ plc/
│ ├─ trace/
│ └─ app/
├─ tools/
│ ├─ bench_inference/
│ ├─ replay_ng_frames/
│ └─ export_onnx/
├─ tests/
│ ├─ unit/
│ ├─ integration/
│ └─ stress/
└─ apps/
├─ vision_runtime_main.cpp
└─ offline_replay_main.cpp
```
[MSG_20260302_2148_018] [V-CHK: U9B3] **我建议【Gemini主号】继续中转给【gemini次号】的关键信息只有一条:请它尽快确认“视角维度 V 是否存在”。** 因为这会直接决定:
1)组帧器的数据结构;
2)推理输入张量;
3)显存预算;
4)是否需要“每工位多相机先融合,再入模”。
如果这条不明确,软件层只能做到“可扩展骨架”,还不能把接口完全钉死。
[MSG_20260302_2148_019] [V-CHK: L1C5] **给【gemini次号】的建议追加问题(请【Gemini主号】判断后再转发):**
A)动态支路与静态支路是**共用编码器**还是**双模型独立部署**?
B)若多视角存在,是否在模型前做 **view-level fusion**,还是每视角独立推理后再做规则融合?
C)“气泡”是否作为单独类别输出,还是只作为“疑似动态扰动”辅助标签?
这三项一旦明确,我就可以把 C++ 推理接口直接细化到类定义级别。
[MSG_20260302_2148_020] [V-CHK: A8Z7] **当前阶段我不建议直接给人类下发新的执行动作。** 先让【Gemini主号】整合本轮“4工位抽象 / 张量契约 / 视角维度 V”这三个关键点,再统一决定是否让人类去锁定“每工位1相机还是多相机”。这更符合你们当前的总协调机制,也能减少人类重复转发和反复改口。
[MSG_20260302_2148_021] [V-CHK: F6J2] 如果你要继续,我下一条可以直接输出**首版 C++ 头文件骨架**(`station_worker.hpp`、`sequence_builder.hpp`、`i_plc_driver.hpp`、`system_orchestrator.hpp` 四个核心接口),继续保持这种可复制转发格式。
[1]: https://chatgpt.com/c/69a58785-2cd0-8325-95ef-0f6034ff4117 "ChatgptAI视觉检测项目"
[2]: https://chatgpt.com/c/69683663-5a38-832f-8a9e-c50f1604b452 "测漏技术分析请求"
[3]: https://chatgpt.com/c/6966029a-7120-832b-88ad-6adec86b5b9d "医疗零件识别分析"
================================
================================
================================
================================
#这是人类有限的回复:
================================
================================
================================
================================
源启动注明:
本项目名称:AI视觉检测工业系统开发
如何开始以及开发流程由【gemini主号】协调各方并决策。
============================
项目要求:关于视觉检测,如所传文档,用于医疗产品的视觉检测,现在要将AI视觉检测应用在工业高速检测上,请【gemini主号】、【gemini次号】、chatgpt三方协作,开发AI视觉检测工业系统,要求世界领先、高速、高质量。
============================
补充注明:
Gemini、chatgpt、Deepseek,指的是各人工智能模型智能体,【gemini主号】、【gemini次号】指的是两个独立的Gemini对话。
【Gemini主号】需要判断并将【gemini次号】回复的信息同步给chatgpt,【Gemini主号】需要判断并将chatgpt回复的信息同步给【gemini次号】。人类在【gemini主号】与chatgpt之间复制信息,人类在【gemini主号】与【gemini次号】之间复制信息。各智能体之间应主动要求对方提供适当信息,以便深入且全面的思考,各智能体需要主动检索上下文,确保逻辑连贯和记忆连贯。需要【gemini主号】中转给对方的信息,应在回复中明确,以确保chatgpt与【Gemini次号】之间能够适当地沟通。
【Gemini主号】要将【gemini次号】生成的逻辑信息和代码相关信息中转给chatgpt进行交叉思考。
============================
补充注明:
为了保证各方记忆连贯和逻辑连贯,仍需要【gemini主号】判断、整理协助分发信息,
要给【gemini次号】、chatgpt发送的信息,请【gemini主号】在回复中明确,并且提醒各智能体回复的文字排版应该方便人类复制。
【gemini主号】、【gemini次号】、chatgpt拆分信息时,对方的信息也要适当融合思考。要保证各方记忆同步且连贯,要保证各方逻辑同步且连贯。
============================
补充注明:
各智能体之间必须在充分沟通之后,若需要人类执行任务(包括但不限于运行代码、反馈状态、提供或更改物理主机信息、提供或操作现实世界信息等),需要最终由Gemini判断整理并在回复中明确。
============================
各方要给回复信息的每个段落进行编码,以方便沟通、检索和准确的反馈。【gemini主号】要注明【gemini主号】、【gemini次号】、chatgpt各方信息编码的方式,注明JSON Envelope格式。
对于【Gemini主号】、chatgpt、【Gemini次号】、人类执行者,各自具体任务,请【Gemini主号】对各类任务进行任务编码,并且在必要时更新任务编码,用来方便各方沟通。
============================
人类在复制转发信息时可能出错,信息可能发给了错误的对象,或者发送信息不完整,或者相关编码未更新,智能体在回复的信息中,可以加入一些标识字符用来判断是否异常,若发现异常,请主动提醒。
============================
人类工作用的电脑(笔记本电脑,windows11系统),临时可用终端软件FinalShell。
============================
AI视觉检测工业系统要运行在一台单独的物理机上,基本参数:CPU:AMD Ryzen 9 3900X 12-Core Processor,3793 Mhz,12 个内核,24 个逻辑处理器,64G内存,显卡NVIDIA Quadro RTX 4000,操作系统windows server 2025。系统都可以修改,硬件性能根据测试后期可以修改。
相机暂时没有,需要后续选择和采购。若相机用RJ45网口,可以再采购网卡。
人类可以负责机械设计、组装、PLC电路硬件,以及在现实世界中测试和反馈。
AI视觉检测工业系统分成机械部分、PLC电路部分、AI视觉检测软件部分。
============================ |
|