当前位置: 首页 > 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;是两种…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...