开源机械爪OpenClaw:从设计到力控抓取的完整实现指南

news2026/5/17 7:38:06
1. 项目概述从“OpenClaw”看开源机械爪的无限可能最近在逛GitHub的时候发现了一个挺有意思的项目叫“MeyerZhou/openclaw”。光看名字你大概能猜到这是个关于机械爪的开源项目。没错这是一个旨在提供低成本、模块化、易于复现的机械爪设计与控制方案的开源仓库。对于很多机器人爱好者、创客甚至是高校里做机器人相关课题的学生来说一个性能可靠、成本可控的末端执行器也就是我们常说的机械手或夹爪往往是项目推进中的一大痛点。市面上的成品要么太贵动辄数千上万要么就是闭源的黑盒想改个参数、加个传感器都无从下手。OpenClaw的出现恰恰瞄准了这个痛点。简单来说OpenClaw项目提供了一套完整的解决方案包括机械结构的三维设计文件通常是STP或STEP格式、用于3D打印的STL文件、电子部分的电路原理图与PCB设计、以及核心的控制固件与上位机软件。它的目标很明确让你能用最普通的材料比如PLA 3D打印件、最常见的电子元件如Arduino、步进电机、舵机和最低的学习成本亲手打造出一个功能完备、可编程控制的机械爪。这个爪子可以用来做物体抓取、分类集成到你的机械臂上完成更复杂的任务或者单纯作为学习机器人学、控制原理的绝佳教具。我之所以对这个项目特别感兴趣是因为在过去的机器人项目中我也曾为末端执行器头疼过。自己从头设计费时费力采购成品又超出预算。像OpenClaw这样的开源项目它不仅仅是一堆文件更代表了一种开放、共享和可迭代的工程文化。接下来我会结合自己的一些经验深入拆解这个项目的核心设计思路、关键技术选型、具体的搭建步骤以及在实际操作中你肯定会遇到的那些“坑”和解决技巧。2. 核心设计思路与方案选型解析2.1 为什么选择“平行夹持器”作为基础构型打开OpenClaw的机械设计文件你大概率会看到一种最常见的机械爪构型平行夹持器。它通常由两个或多个手指组成这些手指在驱动下做平行的开合运动。为什么开源项目普遍青睐这种设计这背后有深刻的工程考量。首先结构简单易于实现。平行运动可以通过连杆机构、齿轮齿条或者同步带等方式轻松实现对加工精度要求相对较低非常适合用桌面级FDM 3D打印机来制造。复杂的多指灵巧手虽然功能强大但其涉及的关节数、传感器数量和控制系统复杂度呈指数级增长不适合作为入门或低成本项目的起点。其次适用场景广泛。在工业分拣、物流码垛、实验室样品抓取等场景中需要抓取的物体大多是规则形状的方块、圆柱或球体。平行夹持器通过调整开合宽度和夹持力能够稳定抓取这类物体其功能已经覆盖了绝大部分非精密操作的需求。最后控制模型简单。平行夹持器的运动可以简化为一个自由度开合的控制问题。你只需要关心手指的位置开合度和输出的力夹紧力。这大大降低了软件和算法层面的难度开发者可以将精力更多放在应用集成和功能拓展上而不是纠结于复杂的运动学正逆解算。注意OpenClaw可能也会提供其他构型如三指自适应抓取器的版本但平行夹持器通常是其核心和起点。选择哪种构型取决于你的主要应用目标。如果是抓取尺寸变化大的不规则软物体自适应抓取器更好如果是追求稳定、快速和精确的抓取规则硬质物体平行夹持器是不二之选。2.2 驱动方案的选择舵机 vs. 步进电机 vs. 直线电机驱动方式是机械爪的“肌肉”决定了其力量、速度和精度。OpenClaw项目通常会提供多种驱动方案的适配设计常见的有以下三种舵机Servo Motor这是最常见、最易用的选择。舵机内部集成了电机、减速齿轮组、控制电路和位置反馈电位器。你只需要发送一个PWM信号脉冲宽度调制它就会自动旋转到指定角度并保持。对于开源项目来说舵机的优势是“开箱即用”接线简单电源、地、信号三根线Arduino等开发板有大量现成库支持。缺点是扭矩有限且长时间堵转手指夹紧物体后电机仍在出力容易烧毁。OpenClaw若采用舵机方案通常会选用大扭矩的金属齿轮舵机如MG996R并设计机械结构来放大其输出力。步进电机Stepper Motor步进电机的优势在于精确的位置控制和保持扭矩。它通过接收脉冲信号来一步步转动没有累积误差并且在停止时能提供很大的保持力非常适合需要精确定位和大力矩夹持的场景。缺点是控制相对复杂需要专门的驱动板如A4988、TMC2208并且存在低速振动和可能失步的问题。如果OpenClaw采用了步进电机那么其控制板很可能集成了步进电机驱动器固件需要实现更复杂的加减速曲线控制以获得平稳运动。直线电机/推杆Linear Actuator这是一种直接将旋转运动转化为直线运动的装置。它能提供极大的推力和直线行程结构紧凑。在一些需要直接直线驱动手指的紧凑型设计中可能会被采用。但成本较高速度通常较慢控制接口可能是PWM、模拟信号或总线通信如RS485。OpenClaw的典型选型逻辑为了最大化项目的可访问性和成功复现率舵机方案往往是默认和首推的。项目文档会明确指定舵机的型号、尺寸和接口定义。步进电机方案可能会作为“高级”或“高性能”版本提供满足对精度和力量有更高要求的用户。2.3 传感与反馈从“盲抓”到“感知抓取”一个基础的机械爪可以没有传感器完全通过程序预设位置进行“盲抓”。但这在实际应用中非常不可靠因为物体位置、尺寸的微小变化都可能导致抓取失败。因此为机械爪增加感知能力是提升其实用性的关键。OpenClaw项目通常会考虑集成以下几种传感器限位开关/微动开关这是最简单的反馈。安装在手指完全张开或闭合的位置用于机械校准和防止超程。成本极低可靠性高是必选项。压力/力传感器这是实现“力控”抓取的核心。可以通过薄膜压力传感器、应变片或者专门的一维力传感器来测量指尖的夹持力。有了力反馈你就可以实现“自适应抓取”——轻轻捏住一颗鸡蛋而不捏碎或者紧紧抓住一个光滑的金属块而不打滑。集成力反馈是OpenClaw项目从“玩具”迈向“工具”的重要一步。编码器如果使用步进电机通常电机本身不带位置反馈开环控制。额外加装旋转编码器可以构成闭环实时监测电机实际转角防止失步并提高位置精度。对于舵机其内部电位器就是一种简单的编码器。视觉传感器虽然这不直接集成在爪子上但OpenClaw项目通常会预留接口或给出示例说明如何与摄像头如USB摄像头、树莓派相机结合通过OpenCV等视觉库识别物体位置和姿态实现视觉引导抓取。方案取舍一个完整的OpenClaw项目可能会采用“限位开关 力传感器”的组合。限位开关用于上电后的原点校准确保每次开合都有一个绝对的物理参考点。力传感器则用于抓取过程中的闭环力控制。这样的组合在成本、复杂度和功能之间取得了很好的平衡。3. 机械结构详解与3D打印实战3.1 关键部件拆解与设计要点假设我们拿到的是OpenClaw基于平行夹持器的设计文件包。里面通常包含以下核心部件基座Base这是机械爪与机械臂或固定支架连接的接口。设计上必须考虑连接标准如常见的法兰接口并保证足够的结构强度以承受抓取和移动物体时的力矩。内部需要预留空间安装电机和布线。驱动机构Transmission将电机的旋转运动转化为手指的平行开合运动。常见的设计有蜗轮蜗杆/齿轮齿条结构紧凑传动比大有自锁功能断电后能保持位置但效率较低加工精度要求高。连杆机构这是最经典的设计例如平行四边形连杆或剪刀式连杆。它的优点是运动轨迹确定、力传递特性好并且可以通过杠杆原理放大电机的输出力。OpenClaw很可能采用这种方案因为它非常适合3D打印零件都是简单的连杆易于制造和组装。同步带/同步轮可以实现更长的行程和更快的速度噪音小但需要张紧机构且保持力不如前两者。手指Fingers/Grippers直接接触物体的部分。设计要点包括夹持面可以是平面、V型槽用于抓取圆柱体或带有防滑纹路如硅胶套、花纹的表面以增加摩擦力。指尖可以考虑设计成可更换的以便适配不同物体。有时会在这里预留安装力传感器或触觉传感器的空间。轻量化手指是运动部件减轻其重量可以降低电机负载提高响应速度。3.2 3D打印参数设置与后处理心得OpenClaw的零件几乎都是为FDM熔融沉积3D打印优化的。直接用默认参数打可能也能装上但要想获得最佳的性能和寿命有几个参数必须仔细调整层高Layer Height对于结构件推荐使用0.2mm的层高。这是一个在打印速度、表面质量和强度之间很好的平衡点。对于需要精密配合的轴孔可以考虑在关键区域使用0.16mm或0.12mm的层高。填充密度Infill Density不要盲目追求100%填充。对于机械爪零件20%-30%的填充密度配合3-4层壁厚Perimeters已经能提供足够的强度同时大幅节省材料和打印时间。填充图案推荐“Gyroid”或“Grid”它们在各方向上的强度比较均衡。打印方向Orientation这是影响零件强度的最关键因素。FDM打印的零件层与层之间的结合力远低于同一层内材料的结合力。因此必须确保零件承受主要应力的方向与打印层平行而不是垂直。错误示例将一根承受弯曲力的连杆竖直打印力会试图将打印层撕开极易断裂。正确示例将连杆平放在打印床上使其长度方向与打印床平行。这样弯曲力作用在打印层平面上强度最高。支撑Support对于有悬垂结构的部分如下巴、内部空腔必须生成支撑。建议使用“树状支撑Tree Support”它更容易拆除对模型表面的损伤更小。支撑与模型的接触面距离Z距离可以稍微调大一点比如0.2mm方便剥离。后处理至关重要清理支撑和拉丝仔细去除所有支撑材料用刀片或锉刀修整接触点。孔轴配合处理设计上通常会预留一定的配合公差比如轴直径5mm孔设计为5.2mm。如果打印后孔还是太小或轴太粗需要进行扩孔或打磨。准备一套手捻钻或扩孔器是非常有用的可以轻松地将孔扩大到精确尺寸。装配测试不要涂任何胶水先进行“干装配”把所有零件用手拧的螺丝组装起来测试各个关节的运动是否顺畅有无干涉。确认无误后再逐步上紧螺丝并在需要的地方添加螺丝胶如乐泰242防止振动松脱。实操心得打印第一个版本时我强烈建议你先用普通的PLA材料打印一套进行“功能测试”。PLA便宜、好打能快速验证结构设计是否合理装配是否有问题。等所有问题都解决后再考虑用PETG或ABS/ASA材料打印最终版本。PETG兼具韧性和强度耐温性比PLA好是更耐用的选择。ABS强度高且耐温但打印难度大有翘曲和异味问题。4. 电子系统搭建与核心电路解析4.1 主控板与驱动电路选型OpenClaw的“大脑”通常是一块微控制器。选择哪款主控决定了项目的开发环境和扩展能力。Arduino Uno/Nano这是最入门、最经典的选择。如果机械爪只由1-2个舵机驱动且不需要复杂的传感器Arduino Uno完全够用。其PWM引脚可以直接驱动舵机模拟输入引脚可以读取力传感器。优点是生态极其丰富有海量的教程和库。ESP32这是功能更强大、更现代的选择。如果OpenClaw项目需要无线控制Wi-Fi/蓝牙、或者需要连接多个传感器更多IO口和ADC、亦或需要运行更复杂的控制算法双核处理器主频更高那么ESP32是更好的选择。它同样兼容Arduino IDE学习曲线平缓。STM32等32位ARM核心板如果项目追求极致的性能、实时性和低功耗可能会选择STM32。但这通常意味着要进入“嵌入式开发”的深水区使用HAL库或直接寄存器编程适合有经验的开发者。驱动电路对于舵机直接连接主控板的PWM引脚即可。但要注意电源问题舵机尤其是大扭矩舵机启动瞬间电流很大可达2A以上。绝对不要试图从Arduino的5V引脚取电这会导致主控板复位甚至损坏。必须为舵机提供独立的、功率足够的电源如3节AA电池盒或一个5V/3A的DC电源模块并与主控板共地。对于步进电机必须使用步进电机驱动模块如A4988、DRV8825或更先进的TMC2209。这些模块接收主控板发出的“方向”和“步进脉冲”信号并输出大电流来驱动电机。需要根据电机额定电流仔细调节驱动板上的电流参考电压Vref。对于传感器限位开关是数字输入力传感器如模拟输出的薄膜压力传感器需要连接ADC引脚。如果使用数字接口的传感器如I2C的力传感器模块则需连接对应的I2C总线。4.2 供电系统设计与布线技巧一个可靠的供电系统是项目稳定的基石。对于OpenClaw这样的系统通常需要两路供电逻辑电源为主控板、传感器供电。通常是5V或3.3V要求电压稳定、噪声小。可以直接使用主控板自带的稳压器如通过USB供电或者使用一个独立的低压差线性稳压器LDO。动力电源为电机舵机/步进电机供电。电压根据电机额定电压选择常见舵机是5V或6V步进电机可能是12V或24V。电流能力必须充足建议预留至少2倍的余量。一个典型的供电方案使用一个12V的直流电源适配器作为总输入。然后一路通过一个DC-DC降压模块如LM2596降到5V给舵机和主控板供电。另一路直接或通过另一个降压模块给主控板提供5V/3.3V逻辑电如果主控板支持宽电压输入也可以直接从12V取电经板载稳压器得到。如果使用步进电机12V可以直接供给步进电机驱动板。布线“避坑”指南强弱电分离电机动力线粗线和信号线细线尽量分开走线避免平行长距离走线以减少电磁干扰。如果无法避免可以成直角交叉。电源去耦在每个芯片的电源引脚附近务必放置一个0.1uF的陶瓷电容到地用于滤除高频噪声。对于电机驱动板在电源入口处增加一个100uF以上的电解电容可以吸收电机启停产生的电压尖峰。共地确保系统中所有的“地”GND都连接在一起形成一个统一的参考电位这是电路正常工作的基础。线缆管理使用扎带、线槽或热缩管将线缆整理好避免在运动过程中被机械部件缠绕或拉扯。对于频繁运动的部位可以考虑使用拖链。5. 固件开发与核心控制逻辑实现5.1 开发环境搭建与基础库介绍无论OpenClaw项目推荐使用Arduino还是PlatformIO搭建开发环境都是第一步。Arduino IDE对于纯Arduino项目去官网下载安装即可。优点是简单直观。缺点是对代码管理、库依赖管理不太友好。PlatformIO VSCode这是我强烈推荐的方式。它是一个专业的嵌入式开发平台作为VSCode插件存在。它自动管理开发板支持包、库文件具有强大的代码补全、调试和项目管理功能。对于ESP32、STM32等多平台项目尤其方便。OpenClaw的固件通常会依赖一些核心库舵机控制库如Arduino自带的Servo.h库。对于更精确的控制可以考虑ESP32Servo或PCA9685舵机驱动板库如果使用I2C舵机驱动板。步进电机库如AccelStepper.h。这个库功能强大支持加减速曲线规划能让步进电机运动非常平滑是必选库。通信库如果需要上位机控制可能会用到Serial串口通信或者WebServer、BluetoothSerial等实现无线控制。传感器库根据具体使用的力传感器型号安装对应的库例如用于HX711压力传感器模块的库。5.2 状态机设计与核心控制循环一个健壮的机械爪控制程序不应该是一堆顺序执行的delay()函数。我们需要引入状态机State Machine的思想。机械爪可以处于几种明确的状态例如IDLE空闲、HOMING回零、MOVING运动、GRIPPING抓取、RELEASING释放等。在loop()函数中我们根据当前状态来执行相应的操作。这样做的好处是逻辑清晰易于扩展并且能实现非阻塞式操作让程序在等待传感器反馈或电机运动的同时还能处理其他任务如接收串口指令。下面是一个极度简化的状态机控制逻辑框架// 定义状态枚举 enum GripperState { STATE_IDLE, STATE_HOMING, STATE_MOVE_TO_TARGET, STATE_GRIP_WITH_FORCE, STATE_RELEASE }; GripperState currentState STATE_HOMING; // 初始状态为回零 int targetPosition 0; int targetForce 0; void loop() { switch (currentState) { case STATE_HOMING: // 驱动电机向闭合方向慢速运动直到触发限位开关 if (limitSwitchClosed.read() LOW) { // 假设触发为低电平 motor.stop(); setCurrentPosition(0); // 将当前位置设为原点 currentState STATE_IDLE; Serial.println(Homing completed.); } break; case STATE_MOVE_TO_TARGET: // 使用AccelStepper库平滑运动到目标位置 stepper.moveTo(targetPosition); if (stepper.distanceToGo() 0) { currentState STATE_IDLE; } break; case STATE_GRIP_WITH_FORCE: // 缓慢闭合手指同时持续读取力传感器 stepper.move(1); // 每次循环移动一小步 int currentForce readForceSensor(); if (currentForce targetForce) { stepper.stop(); currentState STATE_IDLE; Serial.println(Grip force reached.); } break; case STATE_IDLE: default: // 空闲状态可以在这里解析串口命令改变targetPosition/targetForce和currentState handleSerialCommand(); break; } // 必须调用让AccelStepper库更新电机位置 stepper.run(); }5.3 力控抓取算法浅析实现“轻柔”的抓取是机械爪智能化的体现。一个简单的力/位混合控制思路如下位置控制阶段机械爪快速运动到接近物体的位置略大于物体宽度。这个阶段以速度优先采用位置控制模式。切换检测阶段开始缓慢闭合。当指尖刚刚接触物体的瞬间电机负载会突然增加。对于舵机可以通过检测其电流有些智能舵机支持电流反馈或通过外部力传感器读数从零变为一个微小值来判断接触。对于步进电机可以通过检测驱动器上的“堵转检测”信号或者通过编码器发现位置无法跟随指令来判断。力控制阶段一旦检测到接触立即从位置控制模式切换到力控制模式。控制目标不再是位置而是力传感器读数。使用一个简单的P比例控制器电机速度 Kp * (目标力 - 当前测量力)。当前力小于目标力时电机继续闭合等于时停止如果意外超过如物体被挤压变形则电机微微张开以释放多余的压力。这个Kp参数需要根据实际系统调试太小则响应慢太大则容易振荡。实操心得力控抓取的调试是个细致活。首先确保你的力传感器已经正确校准读数稳定。其次切换点的判断要设置一个合理的阈值避免噪声误触发。最后力控制环的Kp参数建议从小往大调在空载和抓取不同物体如硬质方块、空塑料瓶的情况下反复测试找到既能快速响应又不会产生剧烈振荡的值。6. 上位机软件与调试技巧6.1 简易调试界面开发让机械爪动起来只是第一步一个友好的上位机界面能极大提升开发和调试效率。我们不需要开发复杂的工业软件一个简单的图形界面足矣。这里推荐使用Python Tkinter或Processing它们上手快能快速创建带按钮、滑块和图表的基础界面。一个典型的上位机功能应包括手动控制区按钮或滑块用于直接控制爪子的开合、指定位置移动、启动力控抓取等。参数设置区可以设置目标位置、目标抓取力、运动速度、加速度等参数并实时下发给下位机。数据监控区以数字或曲线图的形式实时显示从下位机上传的传感器数据如当前位置、实际夹持力、电机电流等。指令终端一个文本框可以发送自定义的串口指令并显示接收到的所有数据用于底层调试。通信协议上下位机之间通常通过串口UART通信。需要定义一个简单明了的文本协议。例如上位机发送POS,1000\n表示移动到位置1000单位可能是步数或0.1mm。上位机发送GRIP,150\n表示以150单位的力进行抓取。下位机上传DATA,1050,142\n表示当前位置1050当前力142。在Python中你可以使用pyserial库来操作串口。在固件端需要编写相应的串口指令解析函数。6.2 系统校准与参数整定流程在正式使用前必须对系统进行校准这决定了控制的精度。机械原点校准这就是前面提到的“回零”操作。让机械爪闭合直到触发限位开关将此位置定义为位置零点。每次上电或初始化时都应执行一次。位置尺度校准告诉系统“移动1000步实际手指移动了多少毫米”。你可以让爪子从零点移动到另一个已知位置比如完全张开触发另一个限位开关记录下步数Steps_full和实际张开距离Distance_full_mm。那么位置尺度系数就是Distance_full_mm / Steps_full(mm/步)。之后你想移动X毫米只需要发送X / 尺度系数步数即可。力传感器校准这是力控的基础。通常需要做“零点”和“满量程”两点校准。零点在手指完全悬空不受任何力的情况下读取传感器原始值AD_zero。满量程在指尖悬挂一个已知重量的标准砝码如100克读取此时的传感器原始值AD_100g。计算系数Force_coefficient 100g / (AD_100g - AD_zero)(克/AD值)。之后测量值AD_current对应的力就是(AD_current - AD_zero) * Force_coefficient。参数整定运动参数步进电机的最大速度、加速度需要根据你的机械结构调试。太大会导致丢步或产生剧烈振动。从较小的值开始逐步增加直到运动快速且平稳。力控参数如前所述比例系数Kp需要调试。可以编写一个自动测试脚本让爪子反复抓取一个固定重量的物体观察力的响应曲线调整Kp使系统能快速、无超调地达到目标力。7. 常见问题排查与进阶优化7.1 典型故障与解决方案速查表问题现象可能原因排查步骤与解决方案电机不转1. 电源未接通或电压不足。2. 信号线连接错误或断开。3. 主控板程序未正确输出信号。4. 电机或驱动板损坏。1. 用万用表测量电机供电端子电压。2. 检查信号线是否接到正确的控制引脚并用逻辑分析仪或示波器检查是否有PWM/脉冲信号输出。3. 上传一个最简单的测试程序如让舵机往复运动。4. 替换法更换电机或驱动板测试。运动卡顿、异响1. 机械结构装配过紧或有干涉。2. 电机扭矩不足带不动负载。3. 步进电机电流设置过小或驱动细分不足。4. 运动速度/加速度设置过高。1. 断开电机手动转动机构检查是否顺畅。调整配合公差润滑轴承。2. 换用更大扭矩的电机或检查机械传动比是否足够。3. 重新计算并调节步进电机驱动板的Vref电流增加驱动细分设置。4. 降低固件中的速度/加速度参数。抓取力度不稳定1. 力传感器读数波动大噪声。2. 力控算法参数如Kp不合适。3. 机械结构存在回程间隙或变形。1. 为力传感器增加硬件滤波RC低通滤波或软件滤波如滑动平均滤波。检查供电是否稳定。2. 重新调试力控环参数。3. 检查并紧固所有螺丝优化结构设计增加刚度。通信中断或数据错误1. 串口波特率等参数设置不一致。2. 线缆过长或干扰大。3. 程序缓冲区溢出。1. 确认上下位机波特率、数据位、停止位、校验位完全一致。2. 缩短线缆使用带屏蔽的线确保共地良好。3. 在固件中及时清空串口缓冲区上位机避免发送过快。3D打印件断裂1. 打印方向错误受力方向与层间方向平行。2. 填充率过低或壁厚太薄。3. 材料选择不当PLA太脆。1. 重新设计打印方向确保主要受力方向与打印层垂直。2. 增加填充率至30%以上和壁厚至4层以上。3. 换用PETG或ABS/ASA等更具韧性的材料。7.2 性能优化与功能拓展思路当基础功能实现后你可以考虑以下方向来提升你的OpenClaw增加触觉感知除了测量夹持力还可以尝试集成触觉传感器阵列。例如使用导电海绵、FSR力敏电阻阵列或甚至自己用导电线缝制一个触觉布贴在指尖表面获取接触点的压力分布图像。这能让你判断物体的形状和抓取姿态是否稳定。实现更智能的抓取策略结合简单的计算机视觉用摄像头识别物体的大致轮廓和位置实现“先看后抓”。或者编写更复杂的抓取规划算法例如对于未知物体先用小力试探性抓取如果滑移则增大力度。更换驱动方式如果你对静音有要求可以将舵机换成直流电机编码器闭环驱动的方案配合FOC磁场定向控制算法可以实现极其平滑和安静的控制。设计可更换指尖将指尖设计成模块化快拆结构准备平夹爪、V型爪、软质海绵爪等多种指尖以应对不同形状和材质的物体。集成到更大的系统将OpenClaw作为末端执行器安装到开源机械臂如UR臂、六轴机械臂或移动机器人平台上完成更复杂的抓取-放置任务。这个项目最吸引人的地方就在于它的开放性和可扩展性。你不仅是在组装一个工具更是在搭建一个学习和创新的平台。每一个你遇到的问题和解决的方案都会成为你宝贵的经验。希望这份详细的拆解能帮你更顺利地开启自己的开源机械爪之旅并在此基础上创造出更酷的应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2620856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…