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

腿足机器人之七- 逆运动学

腿足机器人之七- 逆运动学

  • 基本概念
  • 腿部运动的数学表示
    • 坐标系定义以及自由度说明
    • 正运动学模型
  • 逆运动学求解
    • 几何解法
    • 数值迭代法
      • 雅可比矩阵法基础
      • 双足机器人步态规划中的雅可比法应用
  • 工程挑战与解决方案
    • 实际应用中的工具和算法
    • 多解问题
    • 高自由度机器人(如Atlas的28自由度)

基本概念

机器人运动控制的本质是将高层指令(“向前走”,“右侧走移动”)转化为关节电机的转动角度,上一篇的正运动学是从关节角度推导出机器人的末端位置,而逆运动学(Inverse Kinematics,IK)是已知机器人末端(如足端)的位置和姿态,反推各关节角度的过程。
腿部自由度越多,解算难度指数级上升(以人类腿部7自由度 vs 工业机械臂6自由度为例),步态规划中需要考虑支撑相和摆动相的切换,以及如何协调双腿的运动。
在这里插入图片描述

腿部运动的数学表示

这部分包括世界坐标系、髋关节坐标系以及足端坐标系,此外还涉及D-H参数以及从D-H参数到齐次变换矩阵,在上一篇博客《腿足机器人之六- 前向运动学》已经介绍,这里简略展示计算过程,不清楚可以参考上一篇博客。

坐标系定义以及自由度说明

双足人形机器人髋关节的三个自由度对应绕基座标系的三个轴的旋转:

  • 偏航(Yaw):绕Z轴旋转,角度记为 ψ \psi ψ
  • 俯仰(Pitch):绕Y轴旋转,角度记为 θ \theta θ
  • 横滚(Roll):绕X轴旋转,角度记为 ϕ \phi ϕ

基座标系(O₀) 设在髋关节中心,X轴向前,Y轴向左,Z轴向上。旋转顺序为ZYX,对应的旋转矩阵为:

R h i p = R z ( ψ ) ⋅ R y ( θ ) ⋅ R x ( ϕ ) R_{hip}=R_z(\psi) \cdot R_y(\theta) \cdot R_x(\phi) Rhip=Rz(ψ)Ry(θ)Rx(ϕ)

正运动学模型

假设大腿长度为 l 1 l_1 l1,小腿长度为 l 2 l_2 l2,膝关节俯仰角为 θ k \theta_k θk,脚的位置 P P P在基座标系中的坐标为:
P = R h i p ⋅ ( [ 0 , 0 , l 1 ] + R y ( θ k ) ⋅ [ 0 , 0 , l 2 ] ) P=R_{hip}\cdot ([0,0,l_1]+R_y(\theta_k) \cdot[0,0,l_2]) P=Rhip([0,0,l1]+Ry(θk)[0,0,l2])
其中:

  • R z ( ψ ) = [ cos ⁡ ψ − sin ⁡ ψ 0 sin ⁡ ψ cos ⁡ ψ 0 0 0 1 ] R_z(\psi)=\begin{bmatrix} \cos \psi & -\sin \psi & 0 \\ \sin \psi & \cos \psi & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(ψ)= cosψsinψ0sinψcosψ0001
  • R y ( θ ) = [ cos ⁡ θ 0 sin ⁡ θ 0 1 0 − sin ⁡ θ 0 cos ⁡ θ ] R_y(\theta)=\begin{bmatrix} \cos \theta & 0 & \sin \theta \\ 0 & 1 & 0 \\ -\sin \theta & 0 & \cos \theta \end{bmatrix} Ry(θ)= cosθ0sinθ010sinθ0cosθ
  • R x ( ϕ ) = [ 1 0 0 0 cos ⁡ ϕ − sin ⁡ ϕ 0 sin ⁡ ϕ cos ⁡ ϕ ] R_x(\phi)=\begin{bmatrix} 1& 0& 0 \\ 0 & \cos \phi & -\sin \phi \\ 0 & \sin \phi & \cos \phi \end{bmatrix} Rx(ϕ)= 1000cosϕsinϕ0sinϕcosϕ
    上式本质上是坐标系变换的级联过程,包含如下关键步骤:
  • 1.大腿的固定长度:髋关节到膝关节的位移 [ 0 , 0 , l 1 ] [0,0,l_1] [0,0,l1];
  • 2.膝关节的旋转:绕膝关节局部Y轴的旋转 R y ( θ k ) R_y(\theta_k) Ry(θk),影响小腿的延伸方向
  • 髋关节的整体旋转:将整个腿部(大腿+小腿)的姿态通过 R h i p R_{hip} Rhip转换到基座标系。

注:若踝关节存在,需在公式末尾添加踝关节的旋转和平移,例如:
P = R h i p ⋅ ( [ 0 , 0 , l 1 ] + R y ( θ k ) ⋅ [ 0 , 0 , l 2 ] ) + R a n k l e ⋅ △ p P=R_{hip}\cdot ([0,0,l_1]+R_y(\theta_k) \cdot[0,0,l_2]) +R_{ankle} \cdot \triangle p P=Rhip([0,0,l1]+Ry(θk)[0,0,l2])+Ranklep

逆运动学求解

腿部逆运动学主要有三大解法

方法原理优点缺点
几何解析法利用三角函数分解几何关系计算速度快仅适用于简单结构,如平面式机器人
代数法求解非线性方程组精确解可能无解或多解
数值迭代法雅可比矩阵+梯度下降通用性强计算量大,需防发散

几何解法

1.确定脚的目标位置和方向
设目标位置为 P = [ x , y , z ] P=[x,y,z] P=[x,y,z],其单位方向向量为:
u = P ∣ ∣ P ∣ ∣ = [ u x , u y , u z ] u=\frac{P}{||P||}=[u_x, u_y, u_z] u=∣∣P∣∣P=[ux,uy,uz]

2.分解髋关节旋转矩阵
根据正运动学,旋转后的z轴应对齐于 u u u,即:
R h i p ⋅ [ 0 , 0 , 1 ] T = u R_{hip} \cdot [0,0,1]^T = u Rhip[0,0,1]T=u
展开后得到三个方程:
{ cos ⁡ ψ sin ⁡ θ cos ⁡ ϕ + sin ⁡ ψ sin ⁡ ϕ = u x sin ⁡ ψ sin ⁡ θ cos ⁡ ϕ − cos ⁡ ψ sin ⁡ ϕ = u y cos ⁡ θ cos ⁡ ϕ = u z \left\{ \begin{aligned} \cos \psi \sin \theta \cos \phi + \sin \psi \sin \phi & = & u_x \\ \sin \psi \sin \theta \cos \phi - \cos \psi \sin \phi & = & u_y \\ \cos \theta \cos \phi & = & u_z \end{aligned} \right. cosψsinθcosϕ+sinψsinϕsinψsinθcosϕcosψsinϕcosθcosϕ===uxuyuz

3.计算俯仰角 θ \theta θ和横滚脚 ϕ \phi ϕ
从第三个方程:
cos ⁡ θ cos ⁡ ϕ = u z ⇒ ϕ = arccos ⁡ ( u z cos ⁡ θ ) \cos \theta \cos \phi= u_z \Rightarrow \phi=\arccos(\frac{u_z}{\cos \theta}) cosθcosϕ=uzϕ=arccos(cosθuz)
代入前两个方程,结合几何约束求解 θ \theta θ ϕ \phi ϕ,例如当 ϕ = 0 \phi = 0 ϕ=0时,简化为:
θ = arccos ⁡ ( u z ) , ψ = arctan ⁡ 2 ( u y , x ) \theta = \arccos(u_z), \psi=\arctan2(u_y,_x) θ=arccos(uz),ψ=arctan2(uy,x)

4.计算膝关节角度 θ k \theta_k θk
根据余弦定理,解算膝关节角度:
θ k = arccos ⁡ ( ∣ ∣ p ∣ ∣ 2 − l 1 2 − l 2 2 2 l 1 l 2 ) \theta_k=\arccos(\frac{||p||^2-l_1^2-l_2^2}{2l_1l_2}) θk=arccos(2l1l2∣∣p2l12l22)

注意事项

  • 多解性:可能存在多组解,需根据关节限制选择。
  • 奇异点:当大腿与目标方向共线时,需特殊处理。
  • 姿态调整:踝关节需进一步调整以满足脚的朝向。

数值迭代法

雅可比矩阵在机器人学中用于描述末端执行器速度与关节速度之间的关系。逆运动学问题中,雅可比矩阵的逆或伪逆被用来迭代调整关节角度,使末端执行器逐步接近目标位置。对于双足机器人来说,特别是在动态运动如小跑和走路时,雅可比方法能处理实时调整的需求,因为步态需要连续更新关节角度以保持平衡和步态周期。

步态规划中需要考虑支撑相和摆动相的切换,以及如何协调双腿的运动。可能需要结合具体的数学模型,例如线性倒立摆模型(LIPM)或零力矩点(ZMP)准则来确保动态稳定性。雅可比方法在这里可能用于实时调整关节角度以满足ZMP的要求。

雅可比矩阵法基础

1.雅可比矩定义
雅可比矩阵描述了机器人末端执行器速度(线速度 p ˙ \dot {\boldsymbol p} p˙和角速度 w \boldsymbol w w)与关节速度 q ˙ \dot {\boldsymbol q} q˙之间的关系:
[ p ˙ w ] = J ( q ) ⋅ q ˙ \begin{bmatrix} \dot {\boldsymbol p} \\ \boldsymbol w \end{bmatrix}=\boldsymbol J(\boldsymbol q) \cdot \dot {\boldsymbol q} [p˙w]=J(q)q˙
其中, J \boldsymbol J J是6 x n的雅可比矩阵(n为关节数)。

2.逆运动学迭代求解
目标是通过末端位置误差 e = p t a r g e t − p c u r r e n t \boldsymbol e=\boldsymbol p_{target}-\boldsymbol p_{current} e=ptargetpcurrent,调整关节角度 q \boldsymbol q q:
△ q = J + ⋅ e \triangle \boldsymbol q= \boldsymbol J^{+} \cdot \boldsymbol e q=J+e
其中 J + \boldsymbol J^+ J+是雅可比矩阵的伪逆(Moore-Penrose 逆),计算为:
J + = J ⊤ ( J J ⊤ ) − 1 ( 当 J 行满秩时 ) \boldsymbol J^+=\boldsymbol J^\top(\boldsymbol J \boldsymbol J^\top)^{-1} (当\boldsymbol J行满秩时) J+=JJJ1(J行满秩时)
或使用阻尼最小二乘法避免奇异:
J + = J ⊤ ( J J ⊤ + λ 2 I ) − 1 \boldsymbol J^+=\boldsymbol J^\top(\boldsymbol J \boldsymbol J^\top + \lambda^2 \boldsymbol I)^{-1} J+=JJJ+λ2I1
λ \lambda λ为代入阻尼因子,通常取0.001~0.1。

3.迭代步骤
a.初始化:设定初始关节角度 q 0 \boldsymbol q_0 q0,容差 ϵ \epsilon ϵ,步长 α \alpha α
b.计算误差: e i = p t a r g e t − f k i n ( q i ) \boldsymbol e_i = \boldsymbol p_{target} - f_{kin}(\boldsymbol q_i) ei=ptargetfkin(qi),其中 f k i n f_{kin} fkin为正运动学函数。
c.更新关节角:
q i + 1 = q i + α ⋅ J + ( q i ) ⋅ e i \boldsymbol q_{i+1}=\boldsymbol q_i + \alpha \cdot \boldsymbol J^{+}(\boldsymbol q_i) \cdot \boldsymbol e_i qi+1=qi+αJ+(qi)ei
d.终止条件:当 ∣ ∣ e i ∣ ∣ < ϵ ||e_i|| < \epsilon ∣∣ei∣∣<ϵ或达到最大迭代次数时停止。

双足机器人步态规划中的雅可比法应用

对于多足机器人,涉及到多个腿的并行运动,需要对步态进行规划,基于周期性步态(如四足机器人的对角步态)或非周期性步态(如动态奔跑),结合时间参数生成关节轨迹,常用方法包括零力矩点(ZMP)理论:用于双足机器人,确保质心投影在支撑多边形内和贝塞尔曲线或样条插值:生成平滑的足端轨迹。

  1. 步态特征
  • 步行(Walking):交替支撑相(单腿支撑)和摆动相,重心轨迹平滑,ZMP(零力矩点)始终在支撑多边形内。
  • 小跑(Trot):对角腿同步运动,动态平衡需求更高,存在双支撑相和腾空相。
  1. 单腿逆运动学模型
    以右腿为例,关节配置为髋关节(横滚 ϕ \phi ϕ、俯仰 θ \theta θ、偏航 ψ \psi ψ)和膝关节 θ k \theta_k θk,踝关节 θ a \theta_a θa
    构造雅可比矩阵:
    对于腿部位置 p = [ x , y , z ] T \boldsymbol p=[x,y,z]^T p=[x,y,z]T,雅可比矩阵的列为各关节对末端速度的贡献:
    J = [ ∂ x ∂ ϕ ∂ x ∂ θ ∂ x ∂ ψ ∂ x ∂ θ k ∂ y ∂ ϕ ∂ y ∂ θ ∂ y ∂ ψ ∂ y ∂ θ k ∂ z ∂ ϕ ∂ z ∂ θ ∂ z ∂ ψ ∂ z ∂ θ k ] \boldsymbol J = \begin{bmatrix} \frac{\partial x}{\partial \phi} & \frac{\partial x}{\partial \theta} & \frac{\partial x}{\partial \psi} & \frac{\partial x}{\partial \theta_k} \\ \frac{\partial y}{\partial \phi} & \frac{\partial y}{\partial \theta} & \frac{\partial y}{\partial \psi} & \frac{\partial y}{\partial \theta_k} \\ \frac{\partial z}{\partial \phi} & \frac{\partial z}{\partial \theta} & \frac{\partial z}{\partial \psi} & \frac{\partial z}{\partial \theta_k} \end{bmatrix} J= ϕxϕyϕzθxθyθzψxψyψzθkxθkyθkz

偏导数计算示例(髋关节俯仰角 θ \theta θ):
∂ p ∂ θ = R z ( ψ ) ⋅ ( ∂ R y ( θ ) ∂ θ ) ⋅ R x ( ϕ ) ⋅ p l i n k \frac{\partial \boldsymbol p}{\partial \theta} = R_z(\psi) \cdot(\frac{\partial \boldsymbol R_y(\theta)}{\partial \theta}) \cdot \boldsymbol R_x(\phi) \cdot \boldsymbol p_{link} θp=Rz(ψ)(θRy(θ))Rx(ϕ)plink

  1. 步行步态求解
    支撑相(以右腿支撑为例):
  • 目标:调整左腿摆动轨迹,同时保持躯干平衡。
  • 躯干控制:通过髋关节角度补偿重心偏移,雅可比矩阵需包含躯干姿态的影响。
  • 迭代过程:
    1. 规划左脚摆动轨迹 p f o o t ( t ) \boldsymbol p_{foot}(t) pfoot(t)
    2. 计算当前左脚位置误差 e = p f o o t ( t ) − p c u r r e n t ( t ) e=\boldsymbol p_{foot}(t) - \boldsymbol p_{current}(t) e=pfoot(t)pcurrent(t)
    3. 用雅可比逆矩阵更新左腿关节角 △ q = J + ⋅ e \triangle q=\boldsymbol J^+ \cdot \boldsymbol e q=J+e
    4. 同步调整右腿髋关节横滚 ϕ \phi ϕ以维持 ZMP 在右脚支撑区内

摆动相轨迹规划:
常用三次多项式插值,设摆动时间 T T T,起点 p 0 \boldsymbol p_0 p0,终点 p f \boldsymbol p_f pf,则:
p ( t ) = p 0 + ( 3 ( t T ) 2 − 2 ( t T ) 3 ) ( p f − p 0 ) \boldsymbol p(t) = \boldsymbol p_0 + (3(\frac{t}{T})^2 - 2(\frac{t}{T})^3)(\boldsymbol p_f - \boldsymbol p_0) p(t)=p0+(3(Tt)22(Tt)3)(pfp0)

4.小跑步态求解
动态特性:双足腾空相存在,需控制落地冲击。

  • 腾空相:腿部收缩以减少转动惯量。
  • 支撑相:对角腿(如右腿和左腿)同步支撑,雅可比矩阵需同时处理双腿的耦合运动。

协调控制步骤:

  1. 规划躯干质心(CoM)轨迹,使其符合倒立摆动力学。
  2. 对角腿的脚部轨迹 p f o o t , l e f t ( t ) \boldsymbol p_{foot,left}(t) pfoot,left(t) p f o o t , r i g h t ( t ) \boldsymbol p_{foot,right}(t) pfoot,right(t)相位差 18 0 o 180^{o} 180o
  3. 对每条腿独立应用雅可比逆矩阵法,但需引入耦合项确保躯干平衡:
    △ q l e f t = J l e f t + ⋅ e l e f t + K ⋅ ( q r i g h t − q n o m i n a l ) \triangle \boldsymbol q_{left} = \boldsymbol J_{left}^{+} \cdot \boldsymbol e_{left} + K \cdot (\boldsymbol q_{right}-\boldsymbol q_{nominal}) qleft=Jleft+eleft+K(qrightqnominal)

K为细条增益矩阵。

5.关键问题与优化

  • 奇异性处理,当腿完全伸展 θ k = 0 \theta_k =0 θk=0时雅可比矩阵秩亏,需增加阻尼项或约束关节速度。
  • 多目标优化
    同时优化脚部位置、躯干姿态和关节限制:
    min ⁡ △ q ( ∣ ∣ J △ q − e ∣ ∣ 2 + λ ∣ ∣ △ q ∣ ∣ 2 ) \mathop{\min}_{\triangle q} (||\boldsymbol J \triangle \boldsymbol q - e||^2 + \lambda|| \triangle \boldsymbol q||^2) minq(∣∣Jqe2+λ∣∣△q2)
    其解为:
    △ q = ( J ⊤ J + λ I ) − 1 J ⊤ e \triangle \boldsymbol q =(\boldsymbol J^{\top} \boldsymbol J + \lambda \boldsymbol I)^{-1}\boldsymbol J^{\top} \boldsymbol e q=(JJ+λI)1Je
  • 实时性保障预计算常见步态的雅可比矩阵,或使用高效数值库(如 Eigen, ROS可调用eigen)进行伪逆计算。

工程挑战与解决方案

实际应用中的工具和算法

IKFast(OpenRAVE)

  • 原理:自动生成解析解代码,适用于固定结构的机器人。

FABRIK(Forward and Backward Reaching IK)

  • 特点:基于几何的迭代算法,高效且无需矩阵运算。

ROS中的IK求解器(如TRAC-IK、KDL)

  • 功能:提供数值解接口,支持关节限制和实时计算。

多解问题

选择最优解:根据关节限位、能耗或平滑性选择解。
多解选择策略
能量最优原则:选择关节移动总距离最小的解
避障约束:排除导致机械干涉的解
硬件限制:关节角度限位、速度饱和(示例:舵机最大转角180°)

高自由度机器人(如Atlas的28自由度)

雅可比典型问题与解决方案
奇异位形崩溃:当腿部完全伸直时雅可比矩阵不可逆
解决方案:在轨迹规划阶段避开危险区域
动态扰动影响:奔跑时地面反作用力导致解算失效
应对措施:结合IMU数据实时修正期望位姿

相关文章:

腿足机器人之七- 逆运动学

腿足机器人之七- 逆运动学 基本概念腿部运动的数学表示坐标系定义以及自由度说明正运动学模型 逆运动学求解几何解法数值迭代法雅可比矩阵法基础双足机器人步态规划中的雅可比法应用 工程挑战与解决方案实际应用中的工具和算法多解问题高自由度机器人&#xff08;如Atlas的28自…...

快速点位排查问题的方法

一、核心思路&#xff1a;缩小问题范围 1. 分治法&#xff08;Divide and Conquer&#xff09; 原理&#xff1a;将复杂系统拆分为独立模块&#xff0c;逐层验证。示例&#xff1a; 网络问题&#xff1a;检查客户端 → 本地网络 → 服务器 → 数据库。代码问题&#xff1a;注…...

【前端】Vue组件库之Element: 一个现代化的 UI 组件库

文章目录 前言一、官网1、官网主页2、设计原则3、导航4、组件 二、核心功能&#xff1a;开箱即用的组件生态1、丰富的组件体系2、特色功能亮点 三、快速上手&#xff1a;三步开启组件化开发1、安装&#xff08;使用Vue 3&#xff09;2、全局引入3、按需导入&#xff08;推荐&am…...

一文搞懂Android应用元素查看器(Appium+Appium-inspector)——定位微信布局元素

Appium和Appium Inspector是怎么协作的呢?Appium 与 Appium Inspector 的版本匹配Appium安装启动appium服务安装Appium inspector客户端查看安卓真机指定app布局元素(这里以微信为例,需要保持与模拟器或真机一直连接)【QA】解决顶部工具栏上Refresh Source & Screensho…...

matlab质子磁力仪传感器线圈参数绘图

1、内容简介 matlab134-质子磁力仪传感器线圈参数绘图 可以交流、咨询、答疑 2、内容说明 略 线圈是质子磁力仪传感器的核心&#xff0c;其品质直接影响着仪器的测量精度 。 结合反向串联圆柱体线圈模型&#xff0c;对约束设计 的因素进行分析; 建立约束参数与设计参数之间…...

WPF快速创建DeepSeek本地自己的客户端-基础思路版本

开发工具&#xff1a;VS 2015 开发环境&#xff1a;.Net 4.0 使用技术&#xff1a;WPF 本篇文章内容&#xff1a; 本地部署DeepSeek以后一般使用网页工具&#xff08;如Chatbox&#xff09;或者DOS窗口与其对话。本篇文章使用WPF创建一个基础版的对话工具。 一、搭建本地DeepS…...

FreeRTOS第12篇:系统的“绿色通道”——中断管理与临界区

文/指尖动听知识库-星愿 文章为付费内容,商业行为,禁止私自转载及抄袭,违者必究!!! 文章专栏:深入FreeRTOS内核:从原理到实战的嵌入式开发指南 引言:嵌入式系统的“紧急电话” 想象你正在主持一场重要会议:大部分时间按议程推进(任务执行),但偶尔会有紧急来电(硬…...

SpringBoot+Vue+数据可视化的动漫妆造服务平台(程序+论文+讲解+安装+调试+售后等)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在当今数字化高速发展的时代&#xff0c;动漫产业迎来了前所未有的繁荣&#xff0c;动漫…...

CentOS 7超详细安装教程(含镜像)

1. 安装前准备 1.1 CentOS简介 CentOS&#xff08;Community Enterprise Operating System&#xff0c;中文意思是&#xff1a;社区企业操作系统&#xff09;是一种基于 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;源代码构建的免费开源操作系统。它在稳定性、安全…...

一种棋牌网游的玩法

起因 俺是个记性不好的人&#xff0c;经常记不住牌&#xff0c;所以很少能赢。于是俺就写了个程序来记录出过的牌。 开始 因为是网游&#xff0c;所以就开始监听网络包。因为不需要改网络包&#xff0c;所以俺就选择了cap_ip。cap_ip是一个通过设置网卡混乱模式来监听网络包…...

9.综合调试|输入不能存在空格|desc存在None|输出权值和ID|函数重名|修改文件名|权值和实际关键词出现次数(C++)

输入不能存在空格 目前输入的关键词时每隔一空格内容分别进行搜索&#xff0c;大部分时候我们都是将一串包含空格的内容直接进行搜索&#xff0c;需要将代码改进。 将cin换为fgets #include "searcher.hpp" #include <iostream> #include <cstdio> #in…...

使用SHOW PROCESSLIST和SHOW ENGINE INNODB STATUS排查mysql锁等待问题

现象&#xff1a; mysql 查某表一直不能结束&#xff0c;查别的表没有问题。已知之前刚刚alter此表想把它的一个字段长度增长&#xff0c;但是这个操作一直没有结束。现在应该怎么办? 方案: 使用 SHOW PROCESSLIST; 查看当前所有活动的SQL线程&#xff0c;找出是否有长时间…...

ElasticSearch映射分词

目录 弃用Type why 映射 查询 mapping of index 创建 index with mapping 添加 field with mapping 数据迁移 1.新建 一个 index with correct mapping 2.数据迁移 reindex data into that index 分词 POST _analyze 自定义词库 ik分词器 circuit_breaking_excep…...

JVM——堆的回收:引用计数发和可达性分析法、五种对象引用

目录 引用计数法和可达性分析法 引用计数法&#xff1a; 可达性分析算法&#xff1a; 五种对象引用 软引用&#xff1a; 弱引用&#xff1a; 引用计数法和可达性分析法 引用计数法&#xff1a; 引用计数法会为每个对象维护一个引用计数器&#xff0c;当对象被引用时加1&…...

PosgreSQL比MySQL更优秀吗?

一日&#xff0c;一群开发者对PosgreSQL是不是比MySQL更优秀进行了激烈的辩论&#xff0c;双方吵的都要打起来了 正方有以下理由&#xff1a; PostgreSQL严格遵循SQL标准规范&#xff0c;相较MySQL在语法兼容性和功能完整性方面展现出更强的体系化设计&#xff0c;尤其在事务处…...

冒险岛079 V8 整合版源码搭建教程+IDEA启动

今天教大家来部署下一款超级怀旧游戏冒险岛&#xff0c;冒险岛源码是开源的&#xff0c;但是开源的代码会有各种&#xff0c;本人进行了加工整合&#xff0c;并且用idea进行了启动测试&#xff0c;经过修改后没有任何问题。 启动截图 后端控制台 前端游戏界面 声明 冒险岛源码…...

基于Python的Flask微博话题舆情分析可视化系统

2024数据 ✅️标价源码 远程部署加 20 ✅️爬虫可用 有六月数据 ✅️修复bug不会突然打不开网页 系统稳定 系统的功能如下: 1.数据的爬取 2.用户的登录注册 3.热词统计&#xff0c;舆情统计 4.文章统计分析 5.发布地址统计 6.评论统计 7.情感分类统计 编程语言&#xff1a;py…...

ms-swift3 序列分类训练

目录 引言 一、数据集准备 二、训练/推理代码 2.1 训练 2.2 推理 三、性能验证 引言 swift 3.x支持了序列分类Command Line Parameters — swift 3.2.0.dev0 documentation 想尝试一下用多模态&#xff08;图像&#xff09;的序列分类与普通的图像分类任务有啥区别 一、…...

VSCode 实用快捷键

前文 VSCode 作为文本编辑神器, 熟练使用其快捷键更是效率翻倍, 本文介绍 VSCode 常用的实用的快捷键 实用快捷键 涉及到文本操作, 搜索定位, 多光标, 面板打开等快捷键 功能快捷键复制光标当前行 (不需要鼠标选中) Ctrl C 剪切光标当前行 (不需要鼠标选中) Ctrl X 当前行下…...

MVC模式和MVVM模式

目录 一、MVC模式和MVVM模式 1. MVC模式 2. MVVM 模式 3.在Qt中的应用示例 4.总结 二、MVC与MVVM模式的共同点和区别 1.共同点 2.区别 3.交互流程 4.总结 MVC&#xff08;Model-View-Controller&#xff09;和MVVM&#xff08;Model-View-ViewModel&#xff09;是两种…...

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

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

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...