【工创赛2025-智能物流搬运塔吊方案开源(2分15秒)】西安理工大学工程训练中心
一、前言时光荏苒岁月如梭。三年的本科竞赛生涯随着工训赛的结束告一段落。竞赛路途中受到了诸多大佬的帮助和鼓励。为了将这份开源精神传递下去本团队全体成员一致决定无偿开源本项目机械设计图纸、PCB设计、电控代码、视觉代码及镜像文件、参赛文档以及其他有关设计资料。请注意本项目开源文件完全免费内容遵循CC 4.0 BY-NC-SA版权协议转载请给出适当的署名不可用作商业用途严禁倒卖若广大网友发现以上行为请第一时间与我取得联系。在此由衷感谢西安理工大学工程训练中心的各位老师对我们竞赛项目的悉心指导与鼎力支持。这里放一张二代小车同堂的照片作为纪念二、关于开源项目运行视频[开源]2025工训赛智能物流搬运初赛第八2分26秒_哔哩哔哩_bilibili本项目参与了2025年中国大学生工程实践与创新能力大赛全国总决赛初赛成绩仅1个二环其余均为一环总时间2分26秒。决赛由于准备不足以及现场不可预料的因素成绩不算理想最后总成绩为全国特等奖。整车机械、电控、视觉及硬件均自主开发核心 PCB主控 / 电源 / 拓展 / 塔吊转接自主绘制打样保障硬件系统的高集成与可靠性。机械结构创新性采用 “塔吊”设计灵活性大大提高。视觉算法通过抗干扰优化在强光干扰或目标部分遮挡的情况下仍然可以准确识别目标底盘定位结合麦克纳姆轮逆运动学解算配合视觉校正算法实现 ±2mm 级精度以及全流程陀螺仪无偏差可精确按照预定轨迹运动并无误差返回出发点。开源内容分为三个部分团队队员将会自行整理各自负责的工作内容编写开源文档呈现给大家本文作为导航。电路硬件设计及电控代码开源本文机械模型开源【工创赛2025-塔吊方案机械开源2分15秒】西安理工大学工程训练中心-CSDN博客视觉算法开源【工创赛2025-塔吊方案视觉开源2分15秒】西安理工大学工程训练中心-CSDN博客三、电路硬件设计及电控1.硬件设计与PCB工程文件1.主控板采用STM32F407VET6单片机自主绘制核心板核心板具有以下元件及功能元器件功能CH340与工控机通讯MCP2551塔吊电机CAN通讯MAX3232OPSRS232转串口0.96寸OLED显示系统状态2.42寸OLED显示任务码正面元件红色对象背面元件绿色对象1塔吊总接口1蜂鸣器27针OLED接口0.96寸2电源板接口3塔吊35步进接口3OPS接口4工控机USB接口4扩展板接口5一键启动接口6三色LED指示灯7遥控器接口调试用比赛拆除87针OLED接口2.42寸模拟SPI9烧录接口10复位按钮11BOOT0按钮2.电源板整车采用6S供电电池24V直接接入电机并有自制开关电源模块也在PCB工程当中输出5V作为逻辑供电通过隔离电源输出12V作为工控机供电保证工控机供电稳定。支持电池热替换换电池无需关闭工控机。序号对象1电源总开关带灯控制MOS管2DM4310电机CAN信号3DM4310电机供电4、13电机接口串口总线不分顺序55V稳压模块65VUSB供电7主控板接口8工控机12V供电9隔离电源10隔离电源开关严禁带电操作11电池热替换接口二极管防倒灌12主供电接口电源总开关接口注释使用的隔离电源3.主控板扩展板带有急停按钮一键切断动力电程序也可以控制动力电急停按钮是强制下拉此外预备了一个ESP01插槽和一些通信接口与供电接口。正面元件红色对象背面元件绿色对象1扩展排针1主控板连接器2HDMI屏幕供电5V2ESP01跳线排针3急停按钮指示灯3ESP01插槽4急停按钮5扫码摄像头固定孔6供电排针4.塔吊综合板的作用类似一个分线器把塔吊总接口的线束按照功能转换为接口在早期的版本中这里设计了一个STM32H750用于刷OPENMV固件进行扫码后经过多方权衡将OPENMV置于主控板拓展板省赛之后又换成USB摄像头扫码。序号对象1备用舵机接口2夹爪舵机接口328步进电机伸缩控制接口4摄像头补光灯控制接口5主控板接口6电源指示灯7降压模块输出8V给舵机5.电池PCB苦于电池价格高昂、维修不便、形状不方便隐藏的问题我们自主设计了一块6S电池盒采用6节186503500mah串联经测试可以给车供电1小时以上。序号对象1平衡头接口注意线序2立焊XT60输出接口电池成品其他的PCB为转接板或功能较为简单的模块在此不做过多介绍。6.连接线的制作PCB模块之间的连接线多采用FC灰排线包括塔吊的连接线但是FC灰排线质地较软不耐磨省赛前一天晚上塔吊绝缘皮被磨破整车大短路JestonOrinNano烧毁连夜移植了哪吒开发板勉强使用。省赛结束后为了解决这个安全隐患经过一个周的选型和测试最终使用TRVV工业拖链电缆自行压接牛角座。经测试该线强度高抗拉扯柔软适中十分合适。另外市面上没有找到质地柔软且纤细的USB摄像头线我们经过多次选型使用超细特氟龙屏蔽线自制USB线缆线缆直径仅1.5mm抗屏蔽性能良好。因制作较为复杂后续可能会考虑出售成品。通过该图片可以看到塔吊的拖链电缆和超细USB线2.电控逻辑实现及主要算法1.主体框架整车采用FreeRTOS操作系统任务如下任务功能MAIN_TASK主任务实现工作流程UART_RX_TASK串口空闲中断之后的解包任务CHASSIS_TASK底盘定位任务TOWER_TASK塔吊动作任务OUTPU_TASK信息的输入或输出任务下面以以上任务为模块进行介绍2.底盘底盘采用OPS平面定位系统配合麦克纳姆轮运动学逆解算可以实现小陀螺位置环即一边旋转一边向目标位置移动。诚然OPS成本较高我们的OPS是学校多年前购买的可以考虑使用光流计进行替代亦或是放弃小陀螺单纯使用步进电机脉冲进行开环位置控制但无法克服打滑的问题。/** * brief 麦克纳姆轮底盘移动控制函数 * param x 目标X坐标 * param y 目标Y坐标 * param z 目标角度绕Z轴 * note 实现底盘向目标位置(x,y)和目标角度z的移动控制包含PID速度调节和运动学解算 */ void chassis_move(int x, int y, int z) { // 运动参数限制值定义 XYVmax 1600; // X/Y方向最大速度限制 ZVmax 750; // 旋转方向最大速度限制 XYVmin 5; // X/Y方向最小速度限制 ZVmin 5; // 旋转方向最小速度限制 int Speed[4] {0}; // 四个轮子的目标速度数组(FL, FR, BL, BR) int devx, devy, devz; // 位置和角度的偏差值 // 计算X方向位置偏差当前位置到目标位置的差值 devx pos_x - x; // 计算Y方向位置偏差 devy pos_y - y; // 计算角度偏差考虑最短路径避免超过180度的旋转 if (z * zangle 0 abs(z) fabs(zangle) 180) devz -(360 - abs(z) - fabs(zangle)); // 反向旋转更优 else devz z - zangle; // 直接计算偏差 // 速度分量变量定义 float vx1 0, vy1 0; // 用于合成速度的中间变量 float vx2 0, vy2 0; float vz 0; // 旋转速度分量 // 根据Y方向偏差计算速度分量含角度补偿 vy1 cos(zangle * 3.141f / 180) * mKpy * devy; // 角度余弦分量 vx2 sin(zangle * 3.141f / 180) * mKpy * devy; // 角度正弦分量 // 限制速度在安全范围内最大、最小、死区 numerical_limit(vy1, XYVmax, XYVmin, 5); numerical_limit(vx2, XYVmax, XYVmin, 5); // 根据X方向偏差计算速度分量含角度补偿 vy2 sin(zangle * 3.141f / 180) * mKpx * devx; // 角度正弦分量 vx1 cos(zangle * 3.141f / 180) * mKpx * devx; // 角度余弦分量 // 限制速度在安全范围内 numerical_limit(vy2, XYVmax, XYVmin, 5); numerical_limit(vx1, XYVmax, XYVmin, 5); // 计算旋转速度分量比例控制 vz mKpz * devz; numerical_limit(vz, ZVmax, 0, 5); // 限制旋转速度 // 麦克纳姆轮运动学逆解计算四个轮子的目标速度 // 注公式根据轮子安装方式和辊子角度推导符号对应电机转向 Speed[0] - (vy1 - vy2 vx1 vx2 vz); // 前左轮(FL) Speed[1] (vy1 - vy2 - vx1 - vx2 - vz); // 前右轮(FR) Speed[2] - (vy1 - vy2 - vx1 - vx2 vz); // 后左轮(BL) Speed[3] (vy1 - vy2 vx1 vx2 - vz); // 后右轮(BR) // 速度平滑处理与执行限制加速度避免冲击 for (uint8_t i 0; i 4; i) { // 加速限制正向加速不超过20单位/周期 if (Speed[i] 0 Speed[i] last_Speed[i]) Speed[i] last_Speed[i] 20; // 减速限制负向加速不超过20单位/周期 if (Speed[i] 0 Speed[i] last_Speed[i]) Speed[i] last_Speed[i] - 20; // 速度转换将计算速度转换为电机目标值系数0.238为硬件相关参数 SpeedTarget[i] (int)(Speed[i] * 0.238); // 保存当前速度用于下一次加速度限制 last_Speed[i] Speed[i]; } // 判断是否接近目标位置用于状态反馈 if ((devx 100 devx -100) (devy 100 devy -100) (devz 30 devz -30)) near_pos 1; // 标记为接近目标 // 判断是否到达目标位置带延迟确认防止抖动 if ((devx 60 devx -60) (devy 60 devy -60) (devz 15 devz -15)) delay_pos; // 累计满足条件的周期数 else delay_pos 0; // 不满足则重置计数器 // 连续10个周期满足条件则判定为到达目标 if (delay_pos 10) in_pos 1; // 标记为已到达目标 }许多队伍遇到陀螺仪或OPS有累积误差的问题我们是通过视觉校准的方式解决的每次机器人看到三色环通过左环与右环相减校准Z轴中间环坐标与左环右环中点坐标加权校准OPS位置整个比赛过程中校准2次达到了比较好的精度效果。identify_posture(1500, 1700); //识别姿态 Chassis_Go_Pos(1900, 1020, 0, 0, 100); //底盘目标更新 CRing_Dual_Calibration(); //色环双重校准 Update_OPS(1940, 1050, 0); //更新OPS位置底盘主任务分为自动模式与遥控模式自动模式又分为场地位置闭环和视觉校准闭环得益于RTOS的多任务调度底盘可以和其他模块并行运行互不干扰。//------------------------------------------------------------------------------------------------------------------- // brief 底盘主任务 // return / // param / // Sample usage: / //------------------------------------------------------------------------------------------------------------------- void Chassis_task(void) //底盘任务 { Motor_Init(); osDelay(100); while(!ready) { osDelay(10);} while(1) { if(control_mode0) { switch(chassis_mode) { case 1: chassis_move(X_target d_X, Y_target d_Y, Z_target); //底盘OPS定位 break; case 2: if (v_in_pos 1) //底盘视觉校准 SpeedTarget_stop(); //校准完成电机停转 osDelay(5); break; } } else if(control_mode1) { chassis_RC(RC_RX.LX,RC_RX.LY,RC_RX.RX); //底盘遥控模式 } SetMotorVoltageAndDirection(SpeedTarget[0], SpeedTarget[1], SpeedTarget[2], SpeedTarget[3]); //速度提交 osDelay(5); } }3.塔吊塔吊与底盘类似一直处于位置更新状态在其他任务中设置目标值编写动作组以执行动作。因为偷懒没有写到位检测而只是用延时进行了替代这样而来修改动作组较为耗时且有可能导致塔吊撞击车身使得结构件损坏决赛夹爪断了呜呜呜。//------------------------------------------------------------------------------------------------------------------- // brief 塔吊主任务函数 // return 无返回值 // param 无参数 // Sample usage: 作为RTOS任务创建负责塔吊系统的主控制逻辑 //------------------------------------------------------------------------------------------------------------------- void Tower_task(void) { // 初始化塔吊系统 OS_Tower_Init(); // 等待系统就绪 // 循环等待ready标志位为真未就绪时每10ms延时一次 while(!ready) { osDelay(10); // RTOS延时函数释放CPU资源 } // 更新塔吊初始目标位置 // 参数含义(X坐标, Y坐标, Z坐标)其中h_comp为高度补偿值 Tower_target_updata(2300, 1850 h_comp, -250); // 主控制循环持续运行塔吊控制逻辑 while(1) { // 控制模式0自动控制模式 if(control_mode 0) { // 控制28电机到目标位置带半径补偿 // 参数目标位置 基础目标位置 半径补偿值d_radius最大速度2000 Motor28_AbsPosition(Motor28_target d_radius, 2000); osDelay(1); // 短暂延时确保指令执行 // 控制35电机到目标位置 // 参数目标位置Motor35_target最大速度2800 Motor35_AbsPosition(Motor35_target, 2800); osDelay(1); // 短暂延时确保指令执行 // 控制G6220电机到目标位置带角度补偿 // 参数目标位置 基础目标位置 角度补偿值d_theta最大速度300 G6220_Position(MotorDM_target d_theta, 300); } // 控制模式1遥控器手动控制模式 else if(control_mode 1) { // 通过遥控器左旋钮控制28电机 Motor28_AbsPosition((RC_RX.KNOB_L 100) * 15, 1500); osDelay(5); // 延时等待电机响应 // 通过遥控器右旋钮控制35电机 Motor35_AbsPosition((RC_RX.KNOB_R 100) * 10, 3000); osDelay(5); // 延时等待电机响应 } // 主循环延时控制任务执行频率约100Hz osDelay(10); } }以下是一个车上放置物料的动作组示例//------------------------------------------------------------------------------------------------------------------- // brief 控制机械臂在车内放置物料 // return 无返回值 // param order 放置序号1/2/3对应车内不同的放置位置 // Sample usage: put_materials_car(2); // 在车内第二个位置放置物料 //------------------------------------------------------------------------------------------------------------------- void put_materials_car(uint8_t order) { short theta 0; // 机械臂旋转角度目标值含补偿 short delay 1000; // 动作间基础延时时间(ms) // 根据放置序号选择对应的角度参数和延时 switch (order) { case 1: // 第一个放置位置 theta 265 20; // 角度值基础角度补偿值 delay 1000; // 该位置对应的移动延时 break; case 2: // 第二个放置位置 theta 0 18; // 角度值基础角度补偿值 delay 800; // 该位置对应的移动延时 break; case 3: // 第三个放置位置 theta -265 40; // 角度值基础角度补偿值 delay 600; // 该位置对应的移动延时 break; } // 放置物料的动作流程按时间顺序执行 // 1. 移动机械臂到放置点上方准备位置含高度补偿 Tower_target_updata(1840, 1900 h_comp, theta); osDelay(delay); // 等待移动完成 // 2. 机械臂下降到放置高度 Tower_target_updata(1840, 1700, theta); osDelay(150 t_comp); // 等待下降完成含时间补偿t_comp // 3. 打开夹爪释放物料 LFD_01M_OP_C; // 夹爪打开控制指令 osDelay(100); // 等待夹爪完全打开 // 4. 机械臂上升离开放置点回到准备高度 Tower_target_updata(1840, 1900 h_comp, theta); osDelay(100 t_comp); // 等待上升完成含时间补偿t_comp // 5. 机械臂返回初始待命位置 Tower_target_updata(1500, 1900 h_comp, -270); osDelay(100 * (3 - order)); // 等待返回完成序号越小等待时间越长 }4.串口解包所有串口使用空闲中断DMA传输实现了不定长度数据包接收当空闲中断触发DMA搬运完成把缓冲区指针通过队列传输给解包任务进行相应的数据解包。参考了这位大佬的文章大家可以去支持一下STM32HAL库CubeMx FreeRTOS 消息队列 DMA串口空闲中断接收消息_stm32 freertos 串口接收数据-CSDN博客/* USER CODE END Header_UART_RX_Task */ /** * brief UART接收任务函数 * param argument: 任务参数未使用 * note 负责处理多个UART接口的数据接收与解包包括UART1~UART6 * 采用队列机制接收中断传来的数据实现异步处理 */ void UART_RX_Task(void *argument) { /* USER CODE BEGIN UART_RX_Task */ // 串口功能定义 // UART1 -- 连接NANO设备 // UART2 -- 连接OPS设备 // UART4 -- 连接底盘系统 // UART5 -- 连接遥控器(RC) // UART6 -- 连接ESP01无线模块 // 定义各串口接收数据结构体指针 UART2_RX_TypeDef *pRecvUart2Data; /* 指向UART2接收数据的指针 */ UART5_RX_TypeDef *pRecvUart5Data; /* 指向UART5接收数据的指针 */ UART1_RX_TypeDef *pRecvUart1Data; /* 指向UART1接收数据的指针 */ // 打印任务初始化信息 printf(Uart Thread init. \r\n); osDelay(500); // 初始化延时等待外设就绪 // System_message(Uart RX init); // 系统消息提示注释掉的备选方案 /* 无限循环处理接收数据 */ for(;;) { /* 检查UART2队列是否有数据 */ /* xQueueReceive参数说明 - 队列句柄uart2_queueHandle - 接收缓冲区存储指向接收到的数据结构体的指针 - 等待时间0非阻塞立即返回 */ if (xQueueReceive(uart2_queueHandle, pRecvUart2Data, 0) pdTRUE) { /* 对接收到的UART2数据进行解包处理OPS设备数据 */ POS_Data_Unpack(pRecvUart2Data-buffer); } /* 检查UART5队列是否有数据遥控器数据 */ if (xQueueReceive(uart5_queueHandle, pRecvUart5Data, 0) pdTRUE) { /* 对接收到的UART5数据进行解包处理遥控器数据 */ RC_Data_Unpack(pRecvUart5Data-buffer); } /* 检查UART1队列是否有数据NANO设备数据 */ if (xQueueReceive(uart1_queueHandle, pRecvUart1Data, 0) pdTRUE) { /* 对接收到的UART1数据进行解包处理NANO设备数据 */ NANO_Data_Unpack(pRecvUart1Data-buffer); } // 任务延时5ms降低CPU占用率 osDelay(5); } /* USER CODE END UART_RX_Task */ }5.主任务主任务主要进行各个任务的调度和目标更新尽量简洁的写明整个任务的流程。以下是初赛第一圈的示例。// 底盘移动到出库位置坐标X150, Y165角度-45°模式0速度300 Chassis_Go_Pos(150, 165, -45, 0, 300); // 出库 // 重置塔吊姿态可能包括位置、角度校准确保初始状态一致 reset_posture(); // 移动到扫码位置坐标X730, Y130角度-90°模式0速度10 Chassis_Go_Pos(730, 130, -90, 0, 10); // 扫码 // 获取任务代码如物料颜色、加工指令等任务信息 Get_Task_Code(); // 显示任务代码可能通过显示屏或指示灯展示 Show_Task_Code(); /* 第一轮任务执行 */ // 移动到物料台坐标X1450, Y110角度-90°模式0速度100 Chassis_Go_Pos(1450, 110, -90, 0, 100); // 物料台 // 注释等待启动信号通过GPIO读取启动引脚未启用 // while(!(HAL_GPIO_ReadPin(Start_GPIO_Port,Start_Pin))) {osDelay(50);} // 物料盘抓取 // 从物料台抓取第1个颜色任务对应的物料位置1 grab_turntable_B(color_task[0],1); // 抓取第2个颜色任务对应的物料位置2 grab_turntable_B(color_task[1],2); // 抓取第3个颜色任务对应的物料位置3 grab_turntable_B(color_task[2],3); // 移动到T1路口坐标X1050, Y165角度0°模式1速度300 Chassis_Go_Pos(1050, 165, 0, 1, 300); // T1路口 // 移动到粗加工区1坐标X1050, Y1900角度0°模式1速度300 Chassis_Go_Pos(1050, 1900, 0, 1, 300); // 粗加工区1 // 旋转到加工角度坐标不变角度调整为90°模式1速度50 Chassis_Go_Pos(1050, 1900, 90, 1, 50); // 组加工区2 // 调整识别姿态参数为识别相关坐标 identify_posture(1500, 1700); // 识别姿态 // 移动到加工操作位置坐标X1000, Y1950角度90°模式0速度300 Chassis_Go_Pos(1000, 1950, 90, 0, 300); // 执行色环双重校准提高物料颜色识别精度 CRing_Dual_Calibration(); // 色环双重校准 // 从车上抓取第1个物料放置到地面对应第1个颜色任务 grab_materials_car(1, 0); put_materials_ground(color_task[0],0); // 抓取第2个物料放置到地面对应第2个颜色任务 grab_materials_car(2, 0); put_materials_ground(color_task[1],0); // 抓取第3个物料放置到地面对应第3个颜色任务 grab_materials_car(3, 0); put_materials_ground(color_task[2],0); // 重置塔吊姿态 reset_posture(); // 从地面抓取第1个颜色任务的物料放置到车上位置1 grab_materials_ground(color_task[0],1); put_materials_car(1); // 抓取第2个颜色任务的物料放置到车上位置2 grab_materials_ground(color_task[1],0); put_materials_car(2); // 抓取第3个颜色任务的物料放置到车上位置3 grab_materials_ground(color_task[2],0); put_materials_car(3); // 移动到下一个位置坐标X1000, Y1880角度90°模式1速度300 Chassis_Go_Pos(1000, 1880, 90, 1, 300); // 移动到下一区域坐标X1860, Y1880角度90°模式1速度300 Chassis_Go_Pos(1860, 1880, 90, 1, 300); // 旋转调整角度坐标不变角度调整为0°模式1速度300 Chassis_Go_Pos(1860, 1880, 0, 1, 300); // 再次调整识别姿态 identify_posture(1500, 1700); // 识别姿态 // 移动到目标位置坐标X1900, Y1020角度0°模式0速度100 Chassis_Go_Pos(1900, 1020, 0, 0, 100); // 色环双重校准再次校准确保后续操作精度 CRing_Dual_Calibration(); // 色环双重校准 // 更新OPS坐标可能是视觉定位系统的坐标更新 Update_OPS(1940, 1050, 0); // 注释等待启动信号未启用 // while(!(HAL_GPIO_ReadPin(Start_GPIO_Port,Start_Pin))) {osDelay(50);} // 从车上抓取物料并放置到地面重复之前的物料转移逻辑 grab_materials_car(1, 0); put_materials_ground(color_task[0],0); grab_materials_car(2, 0); put_materials_ground(color_task[1],0); grab_materials_car(3, 0); put_materials_ground(color_task[2],0); reset_posture(); // 移动到目标位置坐标X1900, Y165角度-90°模式1速度300 Chassis_Go_Pos(1900, 165, -90, 1, 300);其他功能的具体实现在工程文件中均有体现在工程开始初期就考虑到了开源的可能性所有文件名、变量、任务名均由英文组成如果遇到疑惑可以删除下划线丢进百度翻译。代码包含详细注释函数的功能、参数、返回值均有说明。四、开源文件链接百度网盘https://pan.baidu.com/s/52RIeV8DY5et8Gdv43Estjw停止更新gitee链接工创赛2025-智能物流搬运塔吊方案: 工创赛2025-智能物流搬运塔吊方案开源进群下载文件940304442五、后记第一次开源如此规模的项目恐有不周感谢谅解。有任何问题可以在下方留言如果大家有需求我会建立一个QQ群供大家交流讨论。企鹅群940304442开源文件同步更新全体作者空城少年_Space的个人空间-空城少年_Space个人主页-哔哩哔哩视频KRFranz的个人空间-KRFranz个人主页-哔哩哔哩视频雾霭烟_的个人空间-雾霭烟_个人主页-哔哩哔哩视频Morii_an的个人空间-Morii_an个人主页-哔哩哔哩视频西安理工大学 2025年8月六、更新日志时间更新内容2025年8月11日初稿发布2025年8月11日勘误2025年8月12日更新下载链接2025年8月13日添加视觉算法开源链接2026年10月10日补充电源总开关接口注释

相关新闻

3 步解锁 WeMod 专业版并连上手机远程面板

3 步解锁 WeMod 专业版并连上手机远程面板

3 步解锁 WeMod 专业版并连上手机远程面板 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 手机浏览器里点下 Apply 键,PC 端游戏参数在…

2026/10/11 1:20:25 阅读更多 →
视频号视频下载解密一次搞定:res-downloader 使用指南

视频号视频下载解密一次搞定:res-downloader 使用指南

视频号视频下载解密一次搞定:res-downloader 使用指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 一个从视频…

2026/10/11 1:20:24 阅读更多 →
混合配电系统规划:经济性与可靠性的多目标优化与Python实现

混合配电系统规划:经济性与可靠性的多目标优化与Python实现

1. 这个课题到底在算什么:混合配电系统规划问题的本质这几年做配电网方向的研究和工程落地,绕不开一个高频课题:混合配电系统规划。我最早接触这类项目时,也犯过不少想当然的错误,这里先把问题的本质讲透,后…

2026/10/11 1:20:24 阅读更多 →

最新新闻

Linux网络性能优化实战:从内核参数调整到tcpdump抓包排查

Linux网络性能优化实战:从内核参数调整到tcpdump抓包排查

某个深夜,线上接口的P99延迟从60ms一路冲到700ms,我第一时间就想做一轮Linux网络性能优化与监控,于是把网上那套内核参数调优脚本挨个灌进去,tcp_tw_reuse、tcp_max_syn_backlog全都改了。结果延迟没降,反而有机器连接…

2026/10/11 2:22:00 阅读更多 →
Spring Boot JDBC多数据源动态切换实战:配置、路由与避坑指南

Spring Boot JDBC多数据源动态切换实战:配置、路由与避坑指南

简介:实际项目中常会遇到一个应用连接多个数据库的场景。这份“springboot-jdbc-多数据源”资源正是一套基于Spring Boot与JdbcTemplate的双数据源示例工程,面向Java开发者和需要处理跨库读写的中级程序员,目的是清晰展示多套数据源的定义、装…

2026/10/11 2:22:00 阅读更多 →
脑肿瘤MRI数据集的下载与整理:从NIfTI到训练集

脑肿瘤MRI数据集的下载与整理:从NIfTI到训练集

简介:面向医学影像与深度学习研究者,提供脑肿瘤MRI分类与分割两套配套数据。分类部分涵盖神经胶质瘤、脑膜瘤、垂体瘤及无肿瘤四种标签,便于训练图像分类模型;分割部分补充了肿瘤区域坐标标注,可支持语义分割与目标检测…

2026/10/11 2:22:00 阅读更多 →
阳光穿透树叶的丁达尔光斑动效:纯 CSS 径向渐变与混合模式叠加实战

阳光穿透树叶的丁达尔光斑动效:纯 CSS 径向渐变与混合模式叠加实战

在日语中,有一个极其唯美的专有词汇叫作“木漏れ日(Komorebi)”,专门用来指代“阳光穿透树叶的缝隙,在地面与墙面上洒下的摇曳光斑与丁达尔光柱”。 每当秋日微风拂过银杏树冠,金黄的枝叶随风轻轻晃动&…

2026/10/11 2:22:00 阅读更多 →
高校软件正版化落地指南:Navicat教育授权采购、部署与台账管理

高校软件正版化落地指南:Navicat教育授权采购、部署与台账管理

一说起校园里的软件正版化,很多人第一反应是“采购部门的事,跟我们搞技术的关系不大”。但这两年我在实际接触高校信息中心、计算机学院和科研团队的过程中,能明显感觉到一个变化:软件正版化已经不再是一张写在文件里的口号&#…

2026/10/11 2:22:00 阅读更多 →
FM020协议转换模块:实现PROFIBUS-DP与Modbus无缝对接

FM020协议转换模块:实现PROFIBUS-DP与Modbus无缝对接

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 2:20:59 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →