当前位置: 首页 > news >正文

panda机械臂的正逆运动学分析与仿真


文章目录

  • 前言
  • Panda机械臂的DH参数法建模
  • 正运动学
  • 逆运动学
    • 误差函数
    • 雅可比矩阵
    • 高斯-牛顿法(Gauss-Newton)
  • 参考
  • 代码获取

前言

机械臂的位置运动学分析是机器人控制与轨迹规划的核心基础,其研究内容主要分为正运动学(Forward Kinematics)和逆运动学(Inverse Kinematics)两大部分,二者构成运动学分析的完整闭环。

正运动学研究的是在已知机械臂各关节角度的条件下,通过数学模型计算末端执行器在三维空间中的位置(x, y, z坐标)和姿态(如欧拉角或四元数表示)。其本质是通过关节空间到笛卡尔空间的映射关系,建立末端位姿与关节变量的函数表达式。常用的建模方法包括几何分析法(适用于简单构型)、Denavit-Hartenberg(DH)参数法(标准DH法、改进DH方法)。改进DH法通过调整坐标系分配规则,更适用于具有平行关节或特殊拓扑结构的机械臂,本文即采用该方法构建运动学模型,其优势在于能减少奇异点并提高参数定义的规范性。

逆运动学则解决相反的问题:在给定末端执行器目标位姿的约束下,反推出机械臂各关节所需达到的角度值。这一过程具有更强的工程挑战性,主要体现在解的存在性(可达工作空间判断)、多解性(关节构型选择)以及求解算法的实时性等方面。常用的求解算法可分为两大类:

  • 解析法(封闭解):通过代数变换或几何分解直接推导关节角表达式。

  • 数值法(迭代解):采用雅可比矩阵迭代或优化算法逼近解,适用于通用构型但需处理收敛性问题。

正逆运动学的协同求解构成了机械臂轨迹生成与实时控制的理论基础,其中正运动学用于实际位姿反馈验证,逆运动学则服务于关节空间的目标规划,二者的精度与效率直接影响机械臂的整体性能。

Panda机械臂的DH参数法建模

坐标系定义和DH参数确定

在这里插入图片描述

  • α i \alpha_{i} αi:沿着 X ^ i − 1 \hat{X}_{i-1} X^i1方向看,从 Z ^ i − 1 \hat{Z}_{i-1} Z^i1转到 Z ^ i \hat{Z}_i Z^i的旋转角度
  • a i − 1 a_{i-1} ai1:沿着 X ^ i − 1 \hat{X}_{i-1} X^i1方向, Z ^ i − 1 \hat{Z}_{i-1} Z^i1 Z ^ i \hat{Z}_i Z^i间的距离( a i a_{i} ai>0)
  • θ i \theta_{i} θi:沿着 Z ^ i \hat{Z}_{i} Z^i方向看,从 X ^ i − 1 \hat{X}_{i-1} X^i1转到 X ^ i \hat{X}_i X^i的旋转角度
  • d i d_{i} di:沿着 Z ^ i \hat{Z}_{i} Z^i方向, X ^ i − 1 \hat{X}_{i-1} X^i1 X ^ i \hat{X}_i X^i间的距离( d i d_i di>0)

几何参数

在这里插入图片描述

DH参数

在这里插入图片描述

正运动学

转换公式:

i i − 1 T = T X ^ i − 1 ( α i − 1 ) T X ^ R ( a i − 1 ) T Z ^ Q ( θ i ) T Z ^ P ( d i ) = [ c θ i − s θ i 0 a i − 1 s θ i c α i − 1 c θ i c α i − 1 − s α i − 1 − s α i − 1 d i s θ i s α i − 1 c θ i s α i − 1 c α i − 1 c α i − 1 d i 0 0 0 1 ] \begin{aligned} { }_{i}^{i-1} T & =T_{\hat{X}_{i-1}}\left(\alpha_{i-1}\right) T_{\hat{X}_{R}}\left(a_{i-1}\right) T_{\hat{Z}_{Q}}\left(\theta_{i}\right) T_{\hat{Z}_{P}}\left(d_{i}\right) \\ & =\left[\begin{array}{cccc} c \theta_{i} & -s \theta_{i} & 0 & a_{i-1} \\ s \theta_{i} c \alpha_{i-1} & c \theta_{i} c \alpha_{i-1} & -s \alpha_{i-1} & -s \alpha_{i-1} d_{i} \\ s \theta_{i} s \alpha_{i-1} & c \theta_{i} s \alpha_{i-1} & c \alpha_{i-1} & c \alpha_{i-1} d_{i} \\ 0 & 0 & 0 & 1 \end{array}\right] \end{aligned} ii1T=TX^i1(αi1)TX^R(ai1)TZ^Q(θi)TZ^P(di)= cθisθicαi1sθisαi10sθicθicαi1cθisαi100sαi1cαi10ai1sαi1dicαi1di1

注意: c θ i c\theta_{i} cθi表示 c o s ( θ i ) cos(\theta_{i}) cos(θi) s θ i s\theta_{i} sθi表示 s i n ( θ i ) sin(\theta_{i}) sin(θi),其他同理。

则:

1 0 T = [ c θ 1 − s θ 1 0 0 s θ 1 c θ 1 0 0 0 0 1 0.333 0 0 0 1 ] \begin{aligned} { }_{1}^{0} T & =\left[\begin{array}{cccc} c \theta_{1} & -s \theta_{1} & 0 & 0 \\ s \theta_{1} & c \theta_{1} & 0 & 0 \\ 0 & 0 & 1 & 0.333 \\ 0 & 0 & 0 & 1 \end{array}\right] \end{aligned} 10T= cθ1sθ100sθ1cθ1000010000.3331

其中, a 0 = 0 a_{0}=0 a0=0 d 1 = 0.333 d_{1}=0.333 d1=0.333 α 0 = 0 \alpha_{0}=0 α0=0

2 1 T = [ c θ 2 − s θ 2 0 0 0 0 1 0 − s θ 2 − c θ 2 0 0 0 0 0 1 ] \begin{aligned} { }_{2}^{1} T & =\left[\begin{array}{cccc} c \theta_{2} & -s \theta_{2} & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -s \theta_{2} & -c \theta_{2} & 0 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right] \end{aligned} 21T= cθ20sθ20sθ20cθ2001000001

其中, a 1 = 0 a_{1}=0 a1=0 d 2 = 0 d_{2}=0 d2=0 α 1 = − π / 2 \alpha_{1}=-\pi/2 α1=π/2

⋮ \vdots

7 6 T = [ c θ 7 − s θ 7 0 0.088 0 0 − 1 0 s θ 7 c θ 7 0 0 0 0 0 1 ] \begin{aligned} { }_{7}^{6} T & =\left[\begin{array}{cccc} c \theta_{7} & -s \theta_{7} & 0 & 0.088 \\ 0 & 0 & -1 & 0 \\ s \theta_{7} & c \theta_{7} & 0 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right] \end{aligned} 76T= cθ70sθ70sθ70cθ7001000.088001

其中, a 6 = 0.088 a_{6}=0.088 a6=0.088 d 7 = 0 d_{7}=0 d7=0 α 6 = π / 2 \alpha_{6}=\pi/2 α6=π/2

最终末端执行器相对于基座坐标系的变换矩阵为:

7 0 T = 0 1 T 1 2 T 2 3 T 3 4 T 4 5 T 5 6 T 6 7 T \begin{aligned} { }_{7}^{0} T & ={ }_{0}^{1} T { }_{1}^{2} T { }_{2}^{3} T { }_{3}^{4} T { }_{4}^{5} T { }_{5}^{6} T { }_{6}^{7} T \end{aligned} 70T=01T12T23T34T45T56T67T

仿真分析

在这里插入图片描述

逆运动学

这里介绍一下通过数值法来逆向求解机械臂的关节角度。

误差函数

首先定义一个误差函数 E E E ,它衡量末端执行器的实际位置和姿态与目标位置的差异:

E = ∥ 7 0 T − 7 0 T ∗ ∥ E = \left\| { }_{7}^{0} T - { }_{7}^{0} T^* \right\| E= 70T70T

其中 7 0 T ∗ { }_{7}^{0} T^* 70T 是目标的位置和姿态的变换矩阵, ∥ ∥ \| \| ∥∥ 表示的是范数(norm)。

雅可比矩阵

雅可比矩阵(Jacobian matrix)是求解逆运动学问题的关键工具。它是一个偏导数矩阵,表示末端执行器在基座坐标系下的位移分量对每个关节变量的变化率。

在这里插入图片描述

在这里插入图片描述

高斯-牛顿法(Gauss-Newton)

高斯-牛顿法是一种常用的数值优化方法,用于求解非线性最小二乘问题。在逆运动学中,我们可以将误差函数 E E E 视为关于关节变量的非线性函数,并使用高斯-牛顿法来迭代地更新关节变量,以减小误差函数的值。

具体步骤如下:

  1. 初始化:选择一组初始的关节角度作为起点。
  2. 计算雅可比矩阵和误差向量:根据当前的关节角度,计算出末端执行器的位置和姿态(即变换矩阵),然后计算雅可比矩阵和误差向量。
  3. 构建增广正规方程:构造一个增广的正则化方程组,其中包括了雅可比矩阵的转置乘以雅可比矩阵加上一个正则项 λ I \lambda I λI (其中 I I I 是单位矩阵, λ > 0 \lambda > 0 λ>0)。这个正则项是为了防止奇异性的出现,特别是在某些关节接近极限时。
  4. 解算增量:通过解上述增广正规方程组,得到关节角度的增量。
  5. 更新关节角度:用得到的增量更新关节角度。
  6. 重复以上步骤:直到满足一定的收敛条件(例如,误差函数的值小于某个阈值,或者增量的大小足够小)。
  7. 返回最终的关节角度。

其中的关键步骤为:

❇️创建一个6x6的单位矩阵W,用于在求解增广正规方程时乘以雅可比矩阵的转置和雅可比矩阵。

W = [ 1 0 ⋯ 0 0 1 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ 1 ] 6 × 6 \begin{aligned} W = \begin{bmatrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{bmatrix}_{6 \times 6} \end{aligned} W= 100010001 6×6

❇️迭代求解

  • 计算误差

通过正运动学求解当前的机械臂末端位姿矩阵: T current = fkine ⁡ ( q ) \mathbf{T}_{\text{current}}=\operatorname{fkine}(\mathbf{q}) Tcurrent=fkine(q)

E = tr2delta ⁡ ( T current , T target  ) \mathbf{E}=\operatorname{tr2delta}\left(\mathbf{T}_{\text{current}}, \mathbf{T}_{\text {target }}\right) E=tr2delta(Tcurrent,Ttarget )

当误差小于容差时终止循环: ∥ W ∗ E ∥ < t o l \text{当误差小于容差时终止循环:} \left \| W*E \right \| < tol 当误差小于容差时终止循环:WE<tol

  • 计算雅可比矩阵

J = jocobi ( q ) \mathbf{J} = \text{jocobi} (\mathbf{q}) J=jocobi(q)

  • 更新关节角

Δ q = ( J ⊤ W J + ( λ + λ min ⁡ ) I ) − 1 J ⊤ W E \Delta\mathbf{q}=\left(\mathbf{J}^\top\mathbf{W}\mathbf{J}+(\lambda+\lambda_{\min})\mathbf{I}\right)^{-1}\mathbf{J}^\top\mathbf{W}\mathbf{E} Δq=(JWJ+(λ+λmin)I)1JWE

q n e w = q + Δ q ⊤ \mathbf{q}_{\mathrm{new}}=\mathbf{q}+\Delta\mathbf{q}^\top qnew=q+Δq

参考

代码获取

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

关注👇👇,发送:DockerRos2UnityArm,获取仿真代码。

相关文章:

panda机械臂的正逆运动学分析与仿真

文章目录 前言Panda机械臂的DH参数法建模正运动学逆运动学误差函数雅可比矩阵高斯-牛顿法&#xff08;Gauss-Newton&#xff09; 参考代码获取 前言 机械臂的位置运动学分析是机器人控制与轨迹规划的核心基础&#xff0c;其研究内容主要分为正运动学&#xff08;Forward Kinem…...

网络切片:给用户体验做“私人定制”的秘密武器

网络切片:给用户体验做“私人定制”的秘密武器 咱们平时用手机上网、看视频、玩游戏,网络体验好不好,一半都靠运营商给的网络质量。可你有没有想过,为什么同一张网络,有的人能流畅刷视频,有的人却卡得要命?这其实就是网络资源分配的问题——不同应用、不同用户的需求差异…...

HarmonyOS NEXT~鸿蒙应用上架指南:HarmonyOS应用发布全流程解析

HarmonyOS NEXT&#xff5e;鸿蒙应用上架指南&#xff1a;HarmonyOS应用发布全流程解析 引言 随着华为鸿蒙操作系统(HarmonyOS)生态的快速发展&#xff0c;越来越多的开发者希望将自己的应用上架到鸿蒙应用市场。本文将详细介绍鸿蒙应用上架的全流程&#xff0c;帮助开发者顺…...

大模型在腰椎间盘突出症预测与治疗方案制定中的应用研究

目录 一、引言 1.1 研究背景 1.2 研究目的与意义 二、腰椎间盘突出症概述 2.1 定义与病因 2.2 症状与诊断方法 2.3 治疗方法概述 三、大模型技术原理与应用基础 3.1 大模型的基本原理 3.2 大模型在医疗领域的应用现状 3.3 用于腰椎间盘突出症预测的可行性分析 四、…...

【漫话机器学习系列】264.内距(又称四分位差)Interquartile Range

深入理解内距&#xff08;Interquartile Range&#xff0c;IQR&#xff09;——数据分析中的异常值利器 在日常的数据分析中&#xff0c;我们经常需要识别和处理异常值&#xff08;Outliers&#xff09;&#xff0c;而内距&#xff08;Interquartile Range&#xff0c;简称 IQR…...

高并发内存池|定长内存池的设计

二、定长内存池的设计 设计一个定长的内存池&#xff0c;这个内存池的定长在于&#xff0c;当剩余空间使用完毕后&#xff0c;总是开辟相同长度的新空间来使用。我们会使用到一个指针来切割划分大空间为小空间。大空间是内存池向系统申请的内存大小&#xff0c;而小空间是程序…...

STM32外设DA实战-DAC + DMA 输出正弦波

STM32外设DA实战-DAC DMA 输出正弦波模板 一&#xff0c;方法思路二&#xff0c;CubeMX配置三&#xff0c;代码实现1&#xff0c;生成正弦波查找表2&#xff0c;代码实现 一&#xff0c;方法思路 DAC 的一个常见应用是产生任意波形&#xff0c;比如平滑的正弦波。如果让 CPU …...

【React Fiber 架构详解】

React Fiber 架构详解 React Fiber 是 React 16 引入的核心协调算法重构,旨在解决传统同步渲染的性能瓶颈,提升用户体验。其核心在于将渲染任务拆解为可中断、优先级可控的增量单元,并通过链表数据结构优化调度流程。以下是其核心原理与工作机制的详细解析: 一、Fiber 的起…...

UDP的单播组播与广播

UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是一种无连接的、基于IP的传输层协议&#xff0c;它提供了简单的、不可靠的数据报服务。UDP支持三种主要的通信方式&#xff1a;单播、组播和广播。 1. UDP 单播&#xff08;Unicast&#xff09;…...

上集:一个前端的血泪复仇记 —— 静态部署的胜利

“我只是想部署一个小项目&#xff0c;结果干翻了Spring Security、Next.js 和 AI —— 三个加起来至少值我两天命。” 话说有一天&#xff0c;我朋友搭了一个小系统&#xff0c;前后端分离&#xff0c;说大不大&#xff0c;说小不小。后端Spring Boot 3.4.5&#xff0c;前端Ne…...

网络流量分析 | Zeek(上)

介绍 Zeek 是一个开源且商用的网络监控和流量分析工具&#xff0c;许多的运维人员将 Zeek 作为网络安全监控器&#xff08;Network Security Monitor&#xff0c;NSM&#xff09;&#xff0c;以支持可疑或恶意活动的调查。在安全领域之外&#xff0c;Zeek 还可被用于各种流量分…...

Unity3D仿星露谷物语开发44之收集农作物

1、目标 在土地中挖掘后&#xff0c;洒下种子后逐渐成长&#xff0c;然后使用篮子收集成熟后的农作物&#xff0c;工具栏中也会相应地增加该农作物。 2、修改CropStandard的参数 Assets -> Prefabs -> Crop下的CropStandard&#xff0c;修改其Box Collider 2D的Size(Y…...

AUTOSAR图解==>AUTOSAR_SRS_WatchdogDriver

AUTOSAR 看门狗驱动 (Watchdog Driver) 详解 AUTOSAR基础软件模块之看门狗驱动技术分析 目录 概述 1.1 看门狗驱动的作用 1.2 适用范围架构设计 2.1 总体架构 2.2 内部结构 2.3 接口设计功能实现 3.1 初始化和模式切换 3.2 状态管理 3.3 外部看门狗支持配置参数 4.1 核心配置项…...

Fidder基本操作

1.抓取https请求 Fidder默认不能抓取https请求&#xff0c;我们必须通过相应的设置才能抓取https请求 1.选择tools下的option 2.选择https选项&#xff0c;并且勾选下面的选项 3.点击Actions导出信任证书到桌面(expert root certificate to desktop) 4.在浏览器中添加对应的证…...

在线教育本地化分发:代理IP实现区域访问控制与内容适配

在在线教育本地化分发场景中&#xff0c;代理IP通过地理精准识别、动态内容适配与合规访问控制&#xff0c;成为突破区域限制、提升用户体验的核心技术工具。以下是基于2025年技术实践的解决方案&#xff1a; 一、区域访问控制的核心机制 地理IP库匹配与白名单策略 通过代理IP的…...

JAVA的常见API文档(上)

游戏打包 注意API文档中的方法不需要记忆&#xff01;&#xff01; 了解之后如果需要可以查询API文档 对Math的方法总结&#xff1a; 运用刚学的Math方法加快代码的运行效率 可以减少循环次数 找规律&#xff1a; 发现因子有规律&#xff1a; 必定一个大于平方根&#xff0c;…...

【数据结构】_二叉树

1.二叉树链式结构的实现 1.1 前置说明 在学习二叉树的基本操作前&#xff0c;需先要创建一棵二叉树&#xff0c;然后才能学习其相关的基本操作。由于现在大家对二叉树结构掌握还不够深入&#xff0c;为了降低大家学习成本&#xff0c;此处手动快速创建一棵简单的二叉树&#x…...

ALIENTEK精英STM32F103开发板 实验0测试程序详解

#include "sys.h" #include "usart.h" #include "delay.h" //ALIENTEK精英STM32F103开发板 实验0 //新建工程 实验 //技术支持&#xff1a;www.openedv.com //广州市星翼电子科技有限公司 int main(void) { u8 t0; //见注释1 St…...

LeetCode 33. 搜索旋转排序数组:二分查找的边界艺术

文章目录 问题描述解决思路代码实现关键点解析1. 为什么用 nums[left] < nums[mid]&#xff1f;2. 示例分析案例 1&#xff1a;数组 [3, 1]&#xff0c;目标值 1案例 2&#xff1a;数组 [5]&#xff0c;目标值 5 边界条件处理1. 单元素数组2. 完全有序数组3. 严格递增与重复…...

Rust 学习笔记:关于 HashMap 的练习题

Rust 学习笔记&#xff1a;关于 HashMap 的练习题 Rust 学习笔记&#xff1a;关于 HashMap 的练习题以下代码能否通过编译&#xff1f;若能&#xff0c;输出是&#xff1f;以下代码能否通过编译&#xff1f;若能&#xff0c;输出是&#xff1f; Rust 学习笔记&#xff1a;关于 …...

(头歌作业)—6.1 葡萄酒评论分析报告(project)

第1关&#xff1a;葡萄酒评论分析报告——国家列表和平均分 任务描述 本关任务&#xff1a;编写程序&#xff0c;多维度分析葡萄酒数据。 相关知识 葡萄酒评论分析报告描述 winemag-data.csv 文件 winemag-data.csv 包含 编号、国家、描述、评分、价格、省份 等 6列 和12974…...

下集:一条打包到底的静态部署之路

说完坑&#xff0c;再来讲正经操作。 这次我决定写得明明白白&#xff0c;清清楚楚&#xff0c;把那条“Spring Boot 扛着 Next.js 上线”的路子掰碎了揉细了告诉你。 无废话、无迷信、无AI幻觉。 第一步&#xff1a;Next.js 静态导出 项目根目录下的 next.config.js 要写得…...

多商户商城系统源码解析:开发直播电商APP的技术底层实战详解

随着直播电商的火爆&#xff0c;越来越多的创业者和企业都在寻求打造自己的多商户商城系统&#xff0c;以实现“人、货、场”三者的深度融合。然而&#xff0c;从一个简单的电商平台到一个功能完善的直播电商APP&#xff0c;其技术底层架构和实现过程并非一蹴而就。本文将从架构…...

每日Prompt:生成自拍照

提示词 帮我生成一张图片&#xff1a;图片风格为「人像摄影」&#xff0c;请你画一张及其平凡无奇的iPhone对镜自拍照&#xff0c;主角是穿着JK风格cos服的可爱女孩&#xff0c;在自己精心布置的可按风格的房间内的落地镜前用后置摄像头随手一拍的快照。照片开启了闪光灯&…...

LeetCode 热题 100_寻找重复数(100_287_中等_C++)(技巧)(暴力解法;哈希集合;二分查找)

LeetCode 热题 100_寻找重复数&#xff08;100_287_中等_C&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;暴力解法&#xff09;&#xff1a;思路二&#xff08;哈希集合&#xff09;&#xff1a;思路三&am…...

多模态学习(三)—— ROPE位置编码:从理论到实践

ROPE位置编码&#xff1a;从理论到LLaMA的实践 一、前言 ROPE&#xff08;Rotary Positional Embedding&#xff0c;旋转位置编码&#xff09;是一种通过旋转矩阵将位置信息融入Token Embedding的编码方法。相比传统Transformer的绝对位置编码&#xff0c;ROPE能更灵活地建模…...

Redis——过期删除策略和内存

过期删除策略 Redis可以对key设置过期时间&#xff0c;因此需要有相应的机制将已过期的键值对删除 设置了过期时间的key会存放在过期字典中&#xff0c;可以用presist命令取消key过期时间 过期字典存储在redisDb结构中&#xff1a; typedef struct redisDb {dict *dict; …...

Selenium无法定位元素的几种解决方案详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、frame/iframe表单嵌套 WebDriver只能在一个页面上对元素识别与定位&#xff0c;对于frame/iframe表单内嵌的页面元素无法直接定位。 解决方法&#xff1a; …...

开源项目实战学习之YOLO11:12.3 ultralytics-models-sam-encoders.py源码分析

👉 点击关注不迷路 👉 点击关注不迷路 👉 另外,前些天发现了一个巨牛的AI人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。感兴趣的可以点击相关跳转链接。 点击跳转到网站。 ultralytics-models-sam 1.sam-modules-encoders.pyblocks.py: 定义模型中的各…...

Bitmap原理及Hive去重方式对比

1. 什么是 Bitmap&#xff1f; Bitmap&#xff08;位图&#xff09;是一种用位&#xff08;bit&#xff09;来表示数据集合的数据结构。每个位代表一个元素是否存在&#xff0c;比如&#xff1a; 一个长度为N的bitmap&#xff0c;每一位对应一个元素的状态&#xff08;0或1&a…...

力扣-比特位计数(统计一个数二进制下1的个数)

下面是题面 1.用c的内置函数__builtin_popcount&#xff08;&#xff09; 语法&#xff1a;__builtin_popcount&#xff08;int x&#xff09;&#xff0c;函数会返回一个二进制下x所含的1的个数 2.直接数位枚举 这是最慢也是暴力做法&#xff0c;写法也很简单 用一个while循环…...

开源项目实战学习之YOLO11:12.2 ultralytics-models-sam-decoders.py源码分析

👉 点击关注不迷路 👉 点击关注不迷路 👉 另外,前些天发现了一个巨牛的AI人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。感兴趣的可以点击相关跳转链接。 点击跳转到网站。 ultralytics-models-sam 1.sam-modules-decoders.pyblocks.py: 定义模型中的各…...

Python训练营打卡Day28

浙大疏锦行 DAY 28 类的定义和方法 知识点回顾&#xff1a; 1.类的定义 2.pass占位语句 3.类的初始化方法 4.类的普通方法 5.类的继承&#xff1a;属性的继承、方法的继承 作业 题目1&#xff1a;定义圆&#xff08;Circle&#xff09;类 要求&#xff1a; 1.包含属性&#x…...

【前端基础】HTML元素隐藏的四个方法(display设置为none、visibikity设置为hidden、rgba设置颜色、opacity设置透明度)

HTML元素隐藏的四个方法 1、display设置为none 元素不显示出来。不占位置&#xff0c;也没有任何空间。就不存在一样。 2、visibility设置为hidden 默认&#xff1a;visible。元素可见设置为hidden&#xff1a;元素不可见&#xff0c;但是会占据这个元素应该占用的空间。 3、…...

STM32中的DMA

DMA介绍 什么是DMA? DMA&#xff08;Direct Memory Access&#xff0c;直接存储器访问&#xff09;提供在外设与内存、存储器和存储器之间的高速数据传输使用。它允许不同速度的硬件装置来沟通&#xff0c;而不需要依赖于CPU&#xff0c;在这个时间中&#xff0c;CPU对于内存…...

小型气象站应用之鱼塘养殖方案

概述 "看天吃饭"&#xff0c;在农村经常听到这句话&#xff0c;鱼塘也不例外。天气的急剧变化&#xff0c;或连续的不利天气都有可能造成鱼类"浮头"&#xff0c;甚至"翻肚子"&#xff0c;更甚至"翻塘"&#xff0c;一年白忙活了。 鱼塘…...

Makefile变量冲突与包含关系解析

Nuttx makefile每层独立&#xff0c;除非显示的通过include的方式包含。 Makefile调试技巧 打印变量 $(info CSRCS$(CSRCS))查看变量赋值过程 make --debugv在 Makefile 中&#xff0c;变量的作用域和可见性取决于 包含关系&#xff08;include&#xff09; 和 递归调用&…...

2025/517学习

对离群值怎么操作。这个就是拟合操作的。用更弯曲的曲线去拟合&#xff0c;如常见函数log 多元回归和单元回归 如题&#xff0c;如果我有多个自变量&#xff0c;来对一个因变量进行OLS回归&#xff0c;有没有operator可以做到&#xff1f;(ts_regression似乎只支持一个…...

浅谈前端架构设计与工程化

引言 在当今快速发展的Web开发领域&#xff0c;前端已经从简单的页面展示演变为复杂的应用程序开发。随着项目规模的扩大和团队协作的需求增加&#xff0c;良好的前端架构设计和工程化实践变得至关重要。本文将探讨如何构建可维护、可扩展的前端架构&#xff0c;并介绍现代前端…...

JMeter 教程:编写 POST 请求脚本访问百度

目录 ✅ 教程目的 &#x1f6e0;️ 环境要求 &#x1f4c4; 实操步骤 第一步&#xff1a;启动 JMeter 第二步&#xff1a;添加测试计划和线程组 1.右键左侧 Test Plan&#xff08;测试计划&#xff09; 2.选择 Add → Threads (Users) → Thread Group&#xff08;线程组…...

Typescript学习教程,从入门到精通,TypeScript 函数语法知识点及案例代码(5)

TypeScript 函数语法知识点及案例代码 TypeScript 提供了丰富的函数语法特性&#xff0c;使得函数定义更加灵活和强大。以下将详细介绍 TypeScript 中函数的相关语法&#xff0c;包括函数定义、可选参数、默认参数、剩余参数、重载函数、递归函数、匿名函数、箭头函数以及回调…...

【51单片机定时器/计数器】

目录 简介 定时器配置流程 1.配置定时器工作方式寄存器TMOD 2.配置中断寄存器TCON 3.定时时间计算公式 4.配置中断允许寄存器IE 5.使用中断函数完成中断 简介 定时器/计数器本质都是对脉冲信号进行计数&#xff0c;区别在于作为定时器时的脉冲信号来自于晶振12分频&…...

Oracle 的 ASSM 表空间

Oracle 的 ASSM&#xff08;Automatic Segment Space Management&#xff09;表空间 是一种自动管理段空间的技术&#xff0c;通过位图&#xff08;Bitmap&#xff09;机制跟踪数据块的使用情况&#xff0c;替代传统的手动管理&#xff08;MSSM&#xff0c;即 Freelist 管理&am…...

C++学习:六个月从基础到就业——C++11/14:auto类型推导

C学习&#xff1a;六个月从基础到就业——C11/14&#xff1a;auto类型推导 本文是我C学习之旅系列的第四十一篇技术文章&#xff0c;也是第三阶段"现代C特性"的第三篇&#xff0c;主要介绍C11/14中的auto类型推导机制。查看完整系列目录了解更多内容。 引言 在现代C…...

select语句的书写顺序

一.MySQL SELECT语句的执行顺序 MySQL中SELECT语句的执行顺序与SQL语句的书写顺序不同&#xff0c;理解这个执行顺序对于编写高效查询非常重要。 1.标准SELECT语句的执行顺序 FROM子句&#xff08;包括JOIN操作&#xff09; 首先确定数据来源表执行表连接操作 WHERE子句 对F…...

OpenWebUI新突破,MCPO框架解锁MCP工具新玩法

大家好&#xff0c;Open WebUI 迎来重要更新&#xff0c;现已正式支持 MCP 工具服务器&#xff0c;但 MCP 工具服务器需由兼容 OpenAPI 的代理作为前端。mcpo 是一款实用代理&#xff0c;经测试&#xff0c;它能让开发者使用 MCP 服务器命令和标准 OpenAPI 服务器工具&#xff…...

【Day28】

总结&#xff1a; Python 通过缩进来定义代码块的结构。当解释器遇到像 def, class, if, for 这样的语句&#xff0c;并且后面跟着冒号 : 时&#xff0c;它就期望接下来会有一个或多个缩进的语句来构成这个代码块。如果它没有找到任何缩进的语句&#xff08;即代码块是空的&am…...

STM32 | FreeRTOS 消息队列

01 一、概述 队列又称消息队列&#xff0c;是一种常用于任务间通信的数据结构&#xff0c;队列可以在任务与任务间、中断和任务间传递信息&#xff0c;实现了任务接收来自其他任务或中断的不固定长度的消息&#xff0c;任务能够从队列里面读取消息&#xff0c;当队列中的消…...

Vue-事件修饰符

事件修饰符 prevent &#xff08;阻止默认事件&#xff09; 超链接 点击事件 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>事件修饰符</title><!-- 引入Vue --><script …...

c++函数调用运算符及类型转换运算符重载

author: hjjdebug date: 2025年 05月 17日 星期六 14:44:48 CST descrip: c函数调用运算符及类型转换运算符重载 文章目录 0. 前言. 运算符包括以下运算符.1. 运算符重载语句一般格式:2. 函数调用运算符&#xff1a;3. 类型转换运算符&#xff1a; 例如 int(); double(); bool(…...