底盘---麦克纳姆轮(Mecanum Wheel)
一、基本定义与起源
- 定义:麦克纳姆轮是一种实现全向移动的特殊轮式结构,通过在主轮周边安装多个倾斜的辊子(小轮),使设备能够在平面上向任意方向移动(包括横向、斜向、旋转等),无需转向机构。这种独特的设计打破了传统轮式移动的方向限制,为各类移动设备赋予了极高的机动性。
- 起源:由瑞典工程师 Bengt Ilon 于 1973 年发明,隶属于麦克纳姆公司(Mecanum AB),因此得名。它的诞生为机器人技术、自动化物流等领域带来了革命性的变化,开启了全向移动的新篇章。
二、结构与核心组件
- 主轮主体
- 圆形轮毂,通常由金属(如铝合金,具有强度高、质量轻的特点,适用于对负载有一定要求的场景)或高强度塑料(成本较低,加工方便,常用于小型或轻载设备)制成,连接驱动轴,由电机直接或间接驱动旋转。轮毂的尺寸设计需综合考虑设备的整体尺寸、承重以及所需的运动速度等因素,一般较大的轮毂在通过障碍物时更具优势,但会增加转动惯量。
- 辊子(小轮)
- 数量:均匀分布在主轮周边,常见为 8 - 12 个。数量的选择会影响轮子与地面的接触特性,较多的辊子能提供更平稳的支撑,但也会增加结构复杂度和摩擦力。
- 形状:
- 圆柱形辊子:通用型,接触面积均匀,适合平坦地面,在一般的室内环境如工厂车间、仓库等应用广泛,能保证稳定的摩擦力传递,实现精确的运动控制。
- 圆锥形辊子:减少横向滑动摩擦,适合高速或高精度控制,但加工难度较高。圆锥形状使得辊子在横向受力时能更好地适应,常用于对运动精度和速度要求苛刻的场景,如精密仪器搬运、高速自动化生产线。
- 关键参数:
- 倾斜角度:
- 辊子轴线与主轮轴线的夹角,常见为 45°(最通用),能在横向和纵向运动能力上达到较好的平衡,适用于大多数场景。
- 30°:在一些对纵向驱动力要求稍高,同时兼顾横向移动的场合使用,例如搬运较重物品且需要偶尔调整横向位置的工业机器人。
- 60°:侧重于横向移动能力,适用于空间局促、需要频繁侧向调整的场景,如在狭窄货架间穿梭的仓储机器人。
- 安装方式:对称排列,确保受力平衡,避免轮子在运转过程中出现偏心、晃动等问题,影响运动精度和设备稳定性。
- 倾斜角度:
- 驱动系统
- 每个麦克纳姆轮由独立电机驱动,这是实现其复杂运动的关键。通过精确控制各轮转速和转向,合成所需运动方向。电机类型多样,常见的有直流无刷电机(效率高、寿命长、控制精度高,广泛应用于中高端设备)、步进电机(定位精度极高,适合低速、高精度的运动控制场景,如科研实验平台),选择依据主要包括设备的动力需求、控制精度要求以及成本预算。
- 每个麦克纳姆轮由独立电机驱动,这是实现其复杂运动的关键。通过精确控制各轮转速和转向,合成所需运动方向。电机类型多样,常见的有直流无刷电机(效率高、寿命长、控制精度高,广泛应用于中高端设备)、步进电机(定位精度极高,适合低速、高精度的运动控制场景,如科研实验平台),选择依据主要包括设备的动力需求、控制精度要求以及成本预算。
三、工作原理:全向移动的实现
- 摩擦力分解
- 当主轮旋转时,辊子与地面接触点的运动方向可分解为:
- 主轮切线方向(沿主轮旋转方向的力,推动设备前进/后退):这是实现设备前后移动的主要动力来源,类似于传统车轮的驱动方式。
- 辊子轴线方向(辊子自由转动,允许横向滑动):由于辊子可绕自身轴线自由转动,此方向的摩擦力不会阻碍设备的横向移动,反而为侧向运动提供了可能。
- 倾斜的辊子使接触点的摩擦力同时产生纵向(主轮方向)和横向(辊子轴线方向)的分力,这两个分力相互配合,为实现全向移动奠定了基础。
- 当主轮旋转时,辊子与地面接触点的运动方向可分解为:
- 运动合成
- 通过控制 4 个轮子的转速和转向(顺时针/逆时针),可合成任意方向的合力:
- 若 4 轮转速相同、转向一致,设备直线前进/后退,此时各轮子的纵向分力共同作用,推动设备沿直线运动。
- 若两侧轮转速相反,设备原地旋转,依靠轮子横向分力的差异产生旋转力矩,实现原地转向,在狭小空间调整姿态极为便捷。
- 若各轮转速和转向不同,可实现横向平移、斜向移动等复杂运动。例如,通过精确控制对角线上两个轮子的转速差,可实现斜向移动,满足多样化的作业需求。
- 通过控制 4 个轮子的转速和转向(顺时针/逆时针),可合成任意方向的合力:
四、分类与特点
分类方式 | 类型 | 特点 |
---|---|---|
辊子倾斜角度 | 45°麦克纳姆轮 | 最常用,平衡横向与纵向运动能力,适用于大多数场景,无论是工业搬运还是服务机器人的室内导航,都能表现出色。 |
90°辊子(类全向轮) | 横向移动能力极强,但纵向驱动效率低,接近传统全向轮(Omni Wheel),在对横向快速移动需求高、纵向移动距离短的场景,如快速分拣流水线旁的物料横向转运环节有优势。 | |
辊子形状 | 圆柱形辊子 | 通用型,接触面积均匀,适合平坦地面,维护简单,成本较低,是多数常规应用的首选。 |
圆锥形辊子 | 减少横向滑动摩擦,适合高速或高精度控制,但加工难度较高,常用于高端精密设备,如芯片制造车间的搬运机器人。 | |
驱动方式 | 单电机驱动 | 结构简单,成本低,但控制精度依赖算法,适用于对成本敏感、运动精度要求不特别高的小型设备,如简易教育机器人套件。 |
双电机驱动(独立辊子) | 可单独控制辊子转速,实现更复杂运动,但结构复杂、成本高,在高端工业机器人、特种作业机器人领域,能满足复杂任务的精准操控需求。 |
五、核心优势与局限性
- 优势:
- 全向移动能力:无需转向,可在狭小空间灵活移动,定位精度高。在复杂的工业布局中,能快速绕过障碍物,精准停靠在指定工位,极大提高生产效率。
- 运动平滑性:辊子连续接触地面,震动小,适合精密设备。对于光学仪器加工、电子芯片制造等对震动敏感的工艺环节,可有效避免因震动引起的产品缺陷。
- 控制灵活性:通过电机转速调节,可实现无级变速和任意角度移动,满足多样化的任务需求,无论是直线加速、减速,还是复杂的曲线轨迹移动,都能精准控制。
- 局限性:
- 结构复杂:辊子和轴承数量多,制造和维护成本高。一旦某个辊子或轴承出现故障,排查和修复难度较大,需要专业技术人员和工具。
- 地面适应性差:不适合粗糙、凹凸或松软地面(辊子易卡滞或陷住)。在户外建筑工地、未硬化的土路等环境,运动性能会大打折扣,甚至无法正常工作。
- 负载限制:横向承载能力低于纵向,重载时易磨损辊子。当搬运重物且需要频繁侧向移动时,辊子的磨损加剧,缩短使用寿命,增加维护成本。
- 运动学解算复杂:需通过矩阵运算合成速度,对控制算法要求较高。开发人员需要具备深厚的数学和控制理论知识,增加了控制系统的设计难度和开发周期。
六、典型应用场景
- 工业领域
- AGV 搬运机器人:在工厂流水线中精准搬运物料,适应狭窄通道。例如汽车制造车间,能在生产线旁穿梭,将零部件按时送达装配工位,提高生产节拍。
- 协作机器人:与人类共融作业,灵活调整位置(如手术机器人辅助定位)。在手术室内,可根据医生指令精确移动,辅助手术器械精准定位,降低手术风险。
- 服务与消费领域
- 仓储机器人:高效分拣货物,提升仓库空间利用率。在大型电商仓库,快速穿梭于货架间,准确抓取货物,实现快速出入库。
- 商用清洁机器人:在复杂环境中完成清扫,避免碰撞。能在商场、酒店大堂等人员密集、布局复杂的场所,灵活避开障碍物,完成地面清洁任务。
- 特种场景
- 医疗设备:如移动手术平台,精准靠近病床。在紧急救援现场或医院病房,可平稳快速移动至患者床边,为手术争取时间。
- 军事侦察机器人:在有限空间内快速调整姿态,适应复杂地形(需改良型辊子)。通过特殊设计的辊子,在山地、丛林等复杂野外环境,利用全向移动优势隐蔽侦察。
- 科研与教育
- 机器人竞赛(如 RoboCup):利用全向移动优势实现快速攻防。参赛队伍借助麦克纳姆轮的灵活操控,设计复杂战术,在赛场上快速移动、转向,抢夺球权。
- 高校实验平台:作为全向运动控制的典型案例,帮助学生深入理解运动学、动力学原理,培养机器人开发技能。
七、与其他全向轮的对比
类型 | 麦克纳姆轮 | 全向轮(Omni Wheel) | 差速轮(普通轮) |
---|---|---|---|
辊子角度 | 倾斜(45°为主) | 垂直(90°,横向自由转动) | 无辊子,仅主轮 |
移动能力 | 全向(任意方向合成) | 横向自由 + 纵向驱动 | 仅前进/后退 + 转向(需差速) |
结构复杂度 | 高(多倾斜辊子) | 中(横向辊子) | 低(简单轮子) |
地面适应性 | 中等(依赖平坦度) | 中等(横向辊子易卡异物) | 高(仅主轮接触) |
典型应用 | 精密定位、复杂轨迹 | 轻载搬运、快速横向移动 | 常规移动(如普通小车) |
八、控制原理与运动学模型
- 速度合成公式
设 4 个轮子的转速为 v 1 v_1 v1, v 2 v_2 v2, v 3 v_3 v3, v 4 v_4 v4,通过倾斜角度(θ = 45°)的运动学矩阵,可计算机器人的整体速度:
其中 v x v_x vx, v y v_y vy为平移速度, 为旋转角ω速度,K为转换矩阵(需根据轮间距和角度设计)。在实际应用中,不同的设备尺寸、轮子布局会导致转换矩阵 K 的具体形式有所差异,需要根据实际情况精确推导。
2. 控制算法
- 常用 逆运动学 解算各轮转速,结合 PID 控制实现速度闭环。PID 控制通过比例、积分、微分环节,实时调整电机输出,使实际速度快速跟踪目标速度,保证运动的稳定性和精度。
- 高级应用需考虑动力学模型(如摩擦补偿、负载分配)。在高速、重载或高精度运动场景,考虑轮子与地面的摩擦力变化、各轮子的负载不均等因素,对控制算法进行优化,提高系统的鲁棒性。
九、设计与使用注意事项
- 机械设计
- 辊子轴承需选择低摩擦、高耐用性类型(如滚珠轴承),减少能量损耗,延长使用寿命,同时要考虑轴承的密封性能,防止灰尘、碎屑等异物进入,影响转动。
- 主轮与辊子的直径比需合理(通常主轮直径为辊子的 3 - 5 倍),避免打滑。过大或过小的直径比都会影响轮子的抓地力和运动性能,需要通过实验和模拟进行优化。
- 地面要求
- 优先使用平坦硬质地面(如瓷砖、木地板),避免地毯、沙地或高落差地形。若无法避免在较差地面运行,可考虑对地面进行预处理(如铺设临时导轨)或对轮子进行适应性改进(如增加防滑花纹、提高辊子离地间隙)。
- 负载匹配
- 横向负载不超过额定值的 50%,防止辊子变形或轴承损坏。在设计搬运任务时,要根据麦克纳姆轮的负载特性合理分配物品重量,避免出现偏载现象。
- 维护要点
- 定期清理辊子间的异物(如毛发、碎屑),检查轴承润滑情况。可制定详细的维护计划,定期拆解轮子进行深度保养,及时更换磨损的辊子和轴承,确保设备长期稳定运行。
十、总结
麦克纳姆轮通过巧妙的辊子倾斜设计,将传统轮子的单向驱动转化为全向运动,成为精密移动设备的核心部件。尽管存在结构复杂和地面适应性的限制,但其在工业自动化、服务机器人等领域的优势不可替代。随着材料和控制算法的进步,麦克纳姆轮的应用场景将不断扩展,推动机器人移动技术向更灵活、精准的方向发展。未来,有望在更多新兴领域,如深海探测、太空探索等极端环境下的移动装备中看到它的身影,为人类的科技探索之旅助力。
相关文章:
底盘---麦克纳姆轮(Mecanum Wheel)
一、基本定义与起源 定义:麦克纳姆轮是一种实现全向移动的特殊轮式结构,通过在主轮周边安装多个倾斜的辊子(小轮),使设备能够在平面上向任意方向移动(包括横向、斜向、旋转等),无需…...
内网文件传输新体验,聊天、传输、自定义,一应俱全
Flix 是一款高效、便捷的跨平台局域网文件传输工具,支持 Windows、macOS、Android、iOS 和 Linux 等多种操作系统。它以简洁直观的聊天式界面为特色,让用户能够像发送消息一样轻松地传输文件,无需复杂的设置或登录。Flix 支持大文件和多种格式…...
深入解析嵌入式Linux系统架构:从Bootloader到用户空间
B站视频链接,请多多关注本人B站: 📌 Yocto项目实战教程:第二章 视频讲解 目录 第2章 Linux系统架构 2.1 GNU/Linux2.2 Bootloader2.3 内核空间2.4 用户空间 总结 第2章 Linux系统架构 {#linux系统架构} 嵌入式Linux系统是Linux内核的精简版…...
一句话,十分钟,一部片!
大家好!我是羊仔,专注AI工具、智能体、编程。 羊仔最近发现一个超有意思的AI工具,简直是为内容创作者量身打造的!啥工具?Story-Flicks! 这玩意儿能干啥呢?简单来说,一句话…...
【橘子大模型】使用streamlit来构建自己的聊天机器人(下)
一、简介 我们之前完成了一个简易的聊天机器人,但是还留下了一些问题没有解决,比如如何开启新的会话。如何切换session_id,如何把对话做成流式的输出。这些我们就会在今天来完成。 二、关于新的会话和session_id from dotenv import load_…...
【合新通信】光纤延迟线(ODL)的原理
光纤延迟线是一种利用光学原理实现信号传输的设备,主要用于雷达、通信和测量等领域。以下是光纤延迟线的基本原理和工作方式: 技术原理 光纤延迟线通过相位控制器和分束器来处理输入信号。具体来说,数据信号和参考信号同时输入分束器&#x…...
Altium Designer——规则设置
规则 间距规则: 线宽:6mil > x > 4mil 1.在菜单栏中选择 设计 ——》 规则 根据下图双击对应的Clearance规则,更改红圈中的数字为6mil,然后点击应用再点击确定。 这个间距是元素之间(走线、铺铜、元器件&#x…...
智谛达科技:以创新为翼,翱翔AI人形机器人蓝海
在科技创新的浩瀚星空中,智谛达科技集团犹如一颗璀璨的明星,以其独特的创新光芒,照亮了AI人形机器人的广阔蓝海。这家在AI领域深耕多年的企业,始终秉持着创新为翼的发展理念,不断突破技术瓶颈,拓展应用场景,以卓越的实力和前瞻性的思维,引领着人形机器人行业的未来发展。 智谛达…...
前后端接口参数详解与 Mock 配置指南【大模型总结】
前后端接口参数详解与 Mock 配置指南 一、前端请求参数类型及 Mock 处理 1.1 URL 路径参数 (Path Parameters) 场景示例: GET /api/users/{userId}/orders/{orderId}Mock.js 处理: Mock.mock(/\/api\/users\/(\d)\/orders\/(\d)/, get, (options) &g…...
RPC与其他通信技术的区别,以及RPC的底层原理
1、什么是 RPC? 远程过程调用(RPC) 是一种协议,它允许程序在不同计算机之间进行通信,让开发者可以像调用本地函数一样发起远程请求。 通过 RPC,开发者无需关注底层网络细节,能够更专注于业务逻…...
汽车售后ODX 和 OTX 详细分析
在汽车售后诊断领域,ODX 和 OTX 都是重要的标准,但它们的应用场景和特点有所不同,难以简单地评判哪个是绝对的主流。以下是对它们的详细分析。 ODX(Open Diagnostic data eXchange) 概述:ODX 是由 ASAM 制…...
深度学习天崩开局
李沐大神的d2l包导入, 这玩意需要python311版本,我现在版本已经313了,作为一个天生要强的男人,我是坚决不向低版本低头的。 然后我就研究啊,各种翻资料啊,然后deepseek加豆包都翻烂了, 最终所…...
面试算法高频04-分治与回溯
分治与回溯 分治和回溯算法,包括其概念、特性、代码模板,并结合具体题目进行讲解,旨在帮助学员理解和掌握这两种算法的应用。 分治与回溯的概念 分治(Divide & Conquer):本质上基于递归,先…...
整数编码 - 华为OD统一考试(A卷、C++)
题目描述 实现一种整数编码方法,使得待编码的数字越小,编码后所占用的字节数越小。 编码规则如下: 编码时7位一组,每个字节的低7位用于存储待编码数字的补码。字节的最高位表示后续是否还有字节,置1表示后面还有更多的字节&…...
对访问者模式的理解
对访问者模式的理解 一、场景二、不采用访问者模式1、代码2、特点 三、采用访问者模式1、代码2、特点 四、思考 一、场景 我们有一个图形系统,系统中有多种图形对象(如圆形、方形等),每种图形对象都有不同的属性和行为。现在需要对…...
第三次PID状态机
以下是 apply_params 函数的实现步骤和代码示例: 1. 定义参数结构体 在头文件中定义 PID_Params 结构体,包含需要动态调整的 PID 参数: // ms_hal_photo_sensor.h typedef struct {float Kp; // 比例系数float Ki; // …...
如何在大型项目中有效使用TypeScript进行类型定义?
嗨,大家好,我是莫循,Typescript是JavaScript的超集,现在已经广泛用于前端开发,那么在项目中如何用好类型定义呢?以下是一些可以提供参考的案例实践。 一、类型组织策略 1. 模块化类型定义 按功能/模块划分…...
C4D XP 粒子动画云端渲染指南
在 C4D 动画制作领域,XP 粒子特效因其复杂的动力学计算常成为渲染瓶颈。传统本地渲染不仅耗时漫长,还需持续占用高配置硬件。而借助专业云渲染平台,创作者可突破物理限制,高效完成 XP 粒子动画的最终输出。 以渲染 101 平台为例&a…...
mysql知识总结 基础篇
Mysql知识总结 1. 执行一条sql语句 期间发生了什么?1. 如何查看mysql服务被多少个客户端链接了2. 空闲链接会一直闲置嘛?3. mysql的链接数量有限制嘛?4. 我们如何知道mysql要使用哪个索引5. 什么是覆盖索引 2. MySQL 一行记录是怎么存储的&am…...
基于条码数据生成校验密码的C++实现方案
前言 在医疗试剂、工业产品等需要严格追踪管理的领域,条码系统常被用于标识产品信息。本文将详细介绍4种用C实现的条码密码生成算法,这些算法可以根据条码前11位数据生成2位校验密码(第9、10位),用于数据校验或简单防…...
前端工具方法整理
文章目录 1.在数组中找到匹配项,然后创建新对象2.对象转JSON字符串3.JSON字符串转JSON对象4.有个响应式对象,然后想清空所有属性5.判断参数不为空6.格式化字符串7.解析数组内容用逗号拼接 1.在数组中找到匹配项,然后创建新对象 const modifi…...
[数据结构]图krusakl算法实现
目录 Kruskal算法 Kruskal算法 我们要在连通图中去找生成树 连通图:在无向图中,若从顶点v1到顶点v2有路径,则称顶点v1与顶点v2是连通的。如果图中任意一对顶点都是连通的,则称此图为连通图。 生成树:一个连通图的最小…...
18-产品经理-跟踪进度
禅道是一个可以帮助产品经理跟踪研发进度的系统。通过禅道,产品经理可以从多个角度了解产品的研发状态。在仪表盘中,可以展示所有产品或单一产品的概况,包括需求、计划和发布数量,研发需求状态,Bug修复率和计划发布数。…...
华为机试—挑7
题目 你需要统计 1 到 n 之间与 7 有关的数字的个数。 与 7 有关的数字包括: 是 7 的倍数(如 7,14,21 等);包含数字 7(如 17,27,37,⋯ ,70,71,72,⋯等)。 示例 输入:20 输出:3 说…...
【区块链安全 | 第三十四篇】合约审计之重入漏洞
文章目录 概念漏洞代码代码审计攻击代码攻击过程总结示例修复建议审计思路 概念 以太坊的智能合约可以互相调用,也就是说,一个合约可以调用另一个合约的函数。除了外部账户,合约本身也可以持有以太币并进行转账。当合约接收到以太币时&#…...
Java虚拟机——JVM(Java Virtual Machine)解析一
1.JVM是什么? 1.1 JVM概念 Java Virtual Machine (JVM) 是JDK的核心组件之一,它使得 Java 程序能够在任何支持 JVM 的设备或操作系统上运行,而无需修改源代码 JDK是什么,JDK和JVM是什么关系?1.Java IDE(Integrated …...
【JVM】question
问题 JVM线程是用户态还是内核态 java线程在jdk1.2之前,是基于名为“绿色线程”的用户线程实现的,这导致绿色线程只能同主线程共享CPU分片,从而无法利用多核CPU的优势。 由于绿色线程和原生线程比起来在使用时有一些限制, jdk1.2…...
页面编辑器CodeMirror初始化不显示行号或文本内容
延迟刷新 本来想延迟100毫秒的,但是会出现样式向左偏移的情况,于是试了试500毫秒,发现就没有问题了,可能是样式什么是需要一个加载过程吧。 useEffect(() > {editorRef.current?.setValue(value || );setTimeout(() > {edi…...
顺序表——C语言实现
目录 一、线性表 二、顺序表 1.实现动态顺序表 SeqList.h SeqList.c Test.c 问题 经验:free 出问题,2种可能性 解决问题 (2)尾删 (3)头插,头删 (4)在 pos 位…...
OpenCV 图形API(21)逐像素操作
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在OpenCV的G-API模块中,逐像素操作指的是对图像中的每个像素单独进行处理的操作。这些操作可以通过G-API的计算图(Graph …...
车载联网终端4G汽车TBOX介绍定义与概述
汽车 TBOX(Telematics Box)是专为汽车设计的远程通信终端设备,属于车联网系统的关键组成部分。车联网系统一般包含主机、汽车 T - BOX、手机 APP 及后台系统。融合了车身网络和 4G 无线通信技术,为汽车提供丰富的 Telematics 服务…...
CentOS无法安装Vim文本编辑器问题以及解决方法
1.问题一:用户权限不够 解决方法一:切换到root用户 解决方法二:给本用户添加权限 2.问题二:镜像源问题:官方镜像源可能已经失效 解决方法: 1. 检查网络连接 2. 检查和配置 DNS 3. 更换镜像源&#…...
Kettle如何与应用集成
Kettle(Pentaho Data Integration,PDI)可以通过多种方式与应用程序集成,以下是7种主流方法及具体实现示例: 一、命令行调用(最基础) # 执行转换(Transformation) ./pan.…...
Pytorch torch.nn.utils.rnn.pad_sequence 介绍
torch.nn.utils.rnn.pad_sequence 是 PyTorch 中一个用于填充序列的实用函数,它主要用于处理长度不一的序列数据,将这些序列填充到相同的长度,以便能将它们组合成一个批量(batch)输入到神经网络中。以下是详细介绍&…...
4.7正则表达式
1.字符匹配 一般字符匹配自身. 匹配任意字符(换行符\n除外),一个点占一位\转义字符,使其后一个字符改变原来的意思(\.就是.)[......]字符集,对应的位置可以是字符集中的任意字符.字符集中的字符可以逐个列出,也可以给出范围如[abc]或[a-c] [^abc] 表示取反…...
CogPatInspectTool工具
CogPatInspectTool是康耐视中的一种模板比对的视觉检测工具,主要用于产品不良检测。其核心功能是通过将输入图像与预先训练好的模板进行对比,识别出两者之间的差异,并生成高亮差异图,从而判断产品是否存在缺陷。 效果图 CogPatIn…...
牛客周赛 + 洛谷刷题
秘藏 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 200010; ll a[N], b[N]; int n, k; ll dp[2][N];//dp[i][j]是在i界中取了j之前的最大值 int main(){ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> n >&…...
【数据结构】图论存储革新:十字链表双链设计高效解决有向图入度查询难题
十字链表 导读一、邻接表的优缺点二、十字链表2.1 结点结构2.2 原理解释2.2.1 顶点表2.2.2 边结点2.2.3 十字链表 三、存储结构四、算法评价4.1 时间复杂度4.2 空间复杂度 五、优势与劣势5.1 优势5.2 劣势5.3 特点 结语 导读 大家好,很高兴又和大家见面啦ÿ…...
【JavaScript】十五、事件对象与环境对象
文章目录 1、事件对象1.1 获取事件对象1.2 常用属性1.3 案例:回车发布评论 2、环境对象this3、回调函数4、案例:tab切换5、案例:全选文本框📖 1、事件对象 事件对象: 也是个对象,object,里面存…...
OJ--第N个泰波那契数列
1137. 第 N 个泰波那契数 - 力扣(LeetCode) 1 题干部分 2 拆解 1 状态表示:dp[i] 2 状态转移方程:dp[i]dp[i-1]dp[i-2]dp[i-3] 3 初始化:让dp[0]0,dp[1]dp[2]1 4 填表顺序:从dp[3]开始填从左往右填 5 返回值:dp[n]即为返回的…...
Python从入门到高手8.1节-元组类型详解
目录 8.1.1 理解元组类型 8.1.2 元组的类型名 8.1.3 元组的定义 8.1.4 元组的解包 8.1.5 元组是可迭代的 8.1.6 假期就这么结束了 8.1.1 理解元组类型 元组与列表有着相同的数据结构,区别在于,元组是不可变的数据类型,而列表是可变的数…...
使用 Qt 和 OBS 工具检测系统硬件编码器支持情况(NVENC、QSV、AMF)
在开发涉及视频处理的软件时,判断系统是否支持硬件加速编码器(如 NVIDIA NVENC、Intel QSV、AMD AMF)对于性能优化至关重要。本文将介绍如何结合 Qt 与 OBS Studio 附带的小工具程序,实现一个完整、异步且不会卡住 UI 的硬件加速检测模块。 一、背景与目标 硬件加速编码器…...
Python爬虫生成CSV文件的完整流程
引言 在当今数据驱动的时代,网络爬虫已成为获取互联网数据的重要工具。Python凭借其丰富的库生态系统和简洁的语法,成为了爬虫开发的首选语言。本文将详细介绍使用Python爬虫从网页抓取数据并生成CSV文件的完整流程,包括环境准备、网页请求、…...
图论:多源最短路
多源最短路 B3647 【模板】Floyd - 洛谷 #include<iostream> #include<cstring> using namespace std;const int N 110; int f[N][N]; int n, m;int main() {memset(f, 0x3f, sizeof(f));//对于重边的处理取较小值,所以要把全部都初始化成无穷大&…...
2024年已备案大模型发展趋势分析
2024年已备案大模型发展趋势分析 随着生成式人工智能技术的快速发展,其在各个领域的应用逐渐深入。为了规范和促进生成式人工智能服务的健康发展,国家互联网信息办公室发布了《生成式人工智能服务已备案信息》。本文将基于已备案信息,分析生成式人工智能服务的发展趋势,并…...
spring功能汇总
1.创建一个dao接口,实现类;service接口,实现类并且service里用new创建对象方式调用dao的方法 2.使用spring分别获取dao和service对象(IOC) 注意 2中的service里面获取dao的对象方式不用new的(DI) 运行测试: 使用1的方式创建servic…...
Transformer - Feed Forward前馈网络
一、数学原理 1. 前馈神经网络公式 2. Dropout公式 二、代码实现 import math import torchimport torch.nn as nnclass FeedForward(nn.Module):def __init__(self, d_model, dff, dropout):super().__init__()self.W1 nn.Linear(d_model, dff)self.W2 nn.Linear(dff, d_mo…...
Compose Multiplatform+Kotlin Multiplatfrom 第五弹跨平台 截图
截图功能 Compose MultiplatformKotlin Multiplatfrom下实现桌面端的截图功能,起码搞了两星期,最后终于做出来了,操作都很流畅,截取的文件大小也正常,可参考支持讨论! 功能效果 代码实现 //在jvmMain下创…...
算法题(119):高精度减法
审题: 本题高精度减法主要是要区分正负号,然后进行模拟 思路: 方法一:模拟法 首先本题需要我们利用字符串进行大数相减 第一步:区分s1和s2谁更大 先从数的位数进行判断,然后再从高到低的位数进行判断 第二步…...
使用成员函数指针数组简化C++类中的操作
使用成员函数指针数组简化C类中的操作 在C编程中,我们常常会遇到需要对一组相似的操作进行处理的情况。例如,在一个游戏引擎中,你可能希望角色能够执行一系列的动作,如行走、跳跃或攻击等。为了简化这些操作的管理和调用…...