人形机器人建模与控制(二) - 高级运动学和动态建模

L2: Advanced Kinematic and Dynamic Modeling

这里写目录标题

  • L2: Advanced Kinematic and Dynamic Modeling
    • 1. Introduction
    • 2. Kinematic Modeling
      • 运动学方程
      • 速度的雅可比矩阵
      • 雅可比矩阵的两种形式
        • 分析雅可比矩阵(Analytical Jacobian)
        • 几何雅可比矩阵(Geometric Jacobian)
      • 差分逆运动学
    • 3. Dynamic Modeling
      • 动力学基本方程
      • 拉格朗日力学
      • 动力学方程的特性
      • 功率关系
      • 动力学方程包含外力
    • 4. Floating Base (Underactuated) Robots
      • 动力学扩展
      • 扩展的力矩和外部力表示
      • 动力学方程
    • 5. Center of Mass Dynamics
    • 6. Constraints

1. Introduction

在第一篇博客中,我们介绍了人形机器人建模的基础概念,包括空间运动的平移和旋转。本篇博客将深入探讨机器人学的运动学和动力学建模方法,特别是针对人形机器人的具体应用。

2. Kinematic Modeling

运动学方程

对于一个 n n n自由度的机器人系统,其从基座到末端执行器的齐次变换矩阵可以表示为:

H n 0 = H 1 0 ⋅ H 2 1 ⋅ … ⋅ H n n − 1 = [ R n 0 t n 0 0 1 ] ∈ S E ( 3 ) H_{n}^{0} = H_{1}^{0} \cdot H_{2}^{1} \cdot \ldots \cdot H_{n}^{n-1} = \left[\begin{array}{cc} R_{n}^{0} & t_{n}^{0} \\ 0 & 1 \end{array}\right] \in \mathbf{SE}(3) Hn0=H10H21Hnn1=[Rn00tn01]SE(3)

其中, R n 0 R_{n}^{0} Rn0是旋转矩阵, t n 0 t_{n}^{0} tn0是平移向量,描述了末端执行器相对于基座的位姿。

速度的雅可比矩阵

机器人的末端执行器速度 x ˙ \dot{\mathbf{x}} x˙与关节速度 q ˙ \dot{\mathbf{q}} q˙之间的关系由雅可比矩阵 J ( q ) \mathbf{J}(\mathbf{q}) J(q)表示:

x ˙ = [ w v ] = J ( q ) q ˙ J ( q ) ∈ R 6 × n \dot{\mathbf{x}} = \left[\begin{array}{c} \mathbf{w} \\ \mathbf{v} \end{array}\right] = \mathbf{J}(\mathbf{q}) \dot{\mathbf{q}} \quad \mathbf{J}(\mathbf{q}) \in \mathbb{R}^{6 \times n} x˙=[wv]=J(q)q˙J(q)R6×n

其中, w \mathbf{w} w是角速度, v \mathbf{v} v是线速度, q \mathbf{q} q是关节角度。

雅可比矩阵的两种形式

分析雅可比矩阵(Analytical Jacobian)

计算与表示依赖的雅可比矩阵,通过偏微分获得:

X ˙ = [ v θ ˙ ] = J A q ˙ \dot{\mathcal{X}} = \left[\begin{array}{c} \mathbf{v} \\ \dot{\boldsymbol{\theta}} \end{array}\right] = \mathbf{J}_{A} \dot{\mathbf{q}} X˙=[vθ˙]=JAq˙

几何雅可比矩阵(Geometric Jacobian)

将关节速度映射到线速度和角速度:

X ˙ = [ v ω ] = J G q ˙ \dot{\boldsymbol{X}} = \left[\begin{array}{c} \mathbf{v} \\ \boldsymbol{\omega} \end{array}\right] = \mathbf{J}_{G} \dot{\mathbf{q}} X˙=[vω]=JGq˙

这两者之间存在映射关系: ω = E ( θ ) θ ˙ \boldsymbol{\omega} = E(\boldsymbol{\theta}) \dot{\boldsymbol{\theta}} ω=E(θ)θ˙

差分逆运动学

差分逆运动学通过求解雅可比矩阵的逆矩阵来计算关节角速度,使得末端执行器的速度尽可能接近期望速度:

q ˙ = J ( q ) − 1 x ˙ \dot{\mathbf{q}} = \mathbf{J}(\mathbf{q})^{-1} \dot{\mathbf{x}} q˙=J(q)1x˙

当雅可比矩阵不可逆时,可以使用伪逆(pseudo-inverse)来求解:

q ˙ = J + ( q ) x ˙ \dot{\mathbf{q}} = \mathbf{J}^{+}(\mathbf{q}) \dot{\mathbf{x}} q˙=J+(q)x˙

其中, J + ( q ) \mathbf{J}^{+}(\mathbf{q}) J+(q) 是雅可比矩阵的Moore-Penrose伪逆。

3. Dynamic Modeling

动力学基本方程

a) 线性运动

  • 动能: K = 1 2 m v 2 K = \frac{1}{2} m v^{2} K=21mv2
  • 势能: P = m g h P = m g h P=mgh
  • 运动方程: F = m x ¨ F = m \ddot{x} F=mx¨

b) 角运动

  • 动能: K = 1 2 I ω 2 = 1 2 m l 2 θ ˙ 2 K = \frac{1}{2} I \omega^{2} = \frac{1}{2} m l^{2} \dot{\theta}^{2} K=21Iω2=21ml2θ˙2
  • 运动方程: m l 2 θ ¨ = τ m l^{2} \ddot{\theta} = \tau ml2θ¨=τ

c) 弹簧系统

  • 势能: P = 1 2 k x 2 P = \frac{1}{2} k x^{2} P=21kx2
  • 运动方程: K x = F K x = F Kx=F

d) 阻尼系统

  • 能量损失: D = 1 2 β x ˙ 2 D = \frac{1}{2} \beta \dot{x}^{2} D=21βx˙2
  • 运动方程: β x ˙ = F \beta \dot{x} = F βx˙=F

拉格朗日力学

对于具有质心位置 p com \mathbf{p}_{\text{com}} pcom、质量 m m m、线速度 v \mathbf{v} v和角速度 ω \omega ω的物体,其动能、势能和拉格朗日量分别为:

  • 动能: K = 1 2 m v ⊤ v + 1 2 ω ⊤ Ψ ω K = \frac{1}{2} m \mathbf{v}^{\top} \mathbf{v} + \frac{1}{2} \omega^{\top} \boldsymbol{\Psi} \omega K=21mvv+21ωΨω
  • 势能: P = m g ⊤ p com P = m \mathbf{g}^{\top} \mathbf{p}_{\text{com}} P=mgpcom
  • 拉格朗日量: L = K − P L = K - P L=KP

系统的总动能和势能:

K T = ∑ i = 1 n K i = ∑ i = 1 n { 1 2 m i v com i 2 + 1 2 I i ω com i 2 } P T = ∑ i = 1 n P i = ∑ i = 1 n m i g T t 0 com i \begin{aligned} K_{T} &= \sum_{i=1}^{n} K_{i} = \sum_{i=1}^{n}\left\{\frac{1}{2} m_{i} v_{\text{com}_{i}}^{2} + \frac{1}{2} I_{i} \omega_{\text{com}_{i}}^{2}\right\} \\ P_{T} &= \sum_{i=1}^{n} P_{i} = \sum_{i=1}^{n} m_{i} g^{T} t_{0}^{\text{com}_{i}} \end{aligned} KTPT=i=1nKi=i=1n{21mivcomi2+21Iiωcomi2}=i=1nPi=i=1nmigTt0comi

拉格朗日方程:

L = K T − P T L = K_{T} - P_{T} L=KTPT

d d t ( ∂ L ∂ q ˙ i ) − ∂ L ∂ q i = τ i \frac{d}{\mathrm{dt}}\left(\frac{\partial L}{\partial \dot{q}_{i}}\right) - \frac{\partial L}{\partial q_{i}} = \tau_{i} dtd(q˙iL)qiL=τi

系统方程:

d d t ( ∂ L ∂ q ˙ 1 ) − ∂ L ∂ q 1 = τ 1 d d t ( ∂ L ∂ q ˙ 2 ) − ∂ L ∂ q 2 = τ 2 ⋮ d d t ( ∂ L ∂ q ˙ n ) − ∂ L ∂ q n = τ n \begin{aligned} \frac{d}{\mathrm{dt}}\left(\frac{\partial L}{\partial \dot{q}_{1}}\right) - \frac{\partial L}{\partial q_{1}} &= \tau_{1} \\ \frac{d}{\mathrm{dt}}\left(\frac{\partial L}{\partial \dot{q}_{2}}\right) - \frac{\partial L}{\partial q_{2}} &= \tau_{2} \\ &\vdots \\ \frac{d}{\mathrm{dt}}\left(\frac{\partial L}{\partial \dot{q}_{n}}\right) - \frac{\partial L}{\partial q_{n}} = \tau_{n} \end{aligned} dtd(q˙1L)q1Ldtd(q˙2L)q2Ldtd(q˙nL)qnL=τn=τ1=τ2

矩阵形式:

M ( q ) q ¨ + C ( q , q ˙ ) q ˙ + G ( q ) = τ M(q) \ddot{q} + C(q, \dot{q}) \dot{q} + G(q) = \tau M(q)q¨+C(q,q˙)q˙+G(q)=τ

动力学方程的特性

a) 惯性矩阵 M ( q ) \mathbf{M}(q) M(q) 是有界对称正定矩阵:

M ( q ) + = M ( q ) + ⊤ 0 < ϵ 1 ≤ ∥ M ( q ) ∥ ≤ ϵ 2 < ∞ , ∀ q ∈ R n \mathbf{M}(q)_{+} = \mathbf{M}(q)_{+}^{\top} \quad 0 < \epsilon_{1} \leq \|\mathbf{M}(q)\| \leq \epsilon_{2} < \infty, \quad \forall q \in \mathbb{R}^{n} M(q)+=M(q)+0<ϵ1M(q)ϵ2<,qRn

b) 反对称性质:

N = M ˙ − 2 C Skew-symmetric N = − N T x T N x = 0 \begin{aligned} N &= \dot{M} - 2C \\ \text{Skew-symmetric} & \quad N = -N^{T} \\ & \quad x^{T} N x = 0 \end{aligned} NSkew-symmetric=M˙2CN=NTxTNx=0

c) 参数的线性关系:

M ( q ) q ¨ + C ( q , q ˙ ) q ˙ + G ( q ) = τ = : Y ( q , q ˙ , q ¨ ) Θ M(q) \ddot{q} + C(q, \dot{q}) \dot{q} + G(q) = \tau =: Y(q, \dot{q}, \ddot{q}) \Theta M(q)q¨+C(q,q˙)q˙+G(q)=τ=:Y(q,q˙,q¨)Θ

功率关系

功率与广义速度之间的关系:

τ ⊤ q ˙ = f ⊤ x ˙ τ = J ( q ) ⊤ f \begin{aligned} \tau^{\top} \dot{\mathbf{q}} &= \mathbf{f}^{\top} \dot{\mathbf{x}} \\ \tau &= \mathbf{J}(\mathbf{q})^{\top} \mathbf{f} \end{aligned} τq˙τ=fx˙=J(q)f

动力学方程包含外力

机器人动力学方程考虑外部力影响:

M ( q ) q ¨ + C ( q , q ˙ ) q ˙ + G ( q ) = τ + J ( q ) ⊤ f ext \mathbf{M}(\mathbf{q}) \ddot{\mathbf{q}} + \mathbf{C}(\mathbf{q}, \dot{\mathbf{q}}) \dot{\mathbf{q}} + \mathbf{G}(\mathbf{q}) = \tau + \mathbf{J}(\mathbf{q})^{\top} \mathbf{f}_{\text{ext}} M(q)q¨+C(q,q˙)q˙+G(q)=τ+J(q)fext

这个方程描述了机器人在外

部力作用下的动力学行为,其中 f ext \mathbf{f}_{\text{ext}} fext是作用在末端执行器上的外部力,通过雅可比矩阵 J ( q ) \mathbf{J}(\mathbf{q}) J(q)传递到关节力矩上。

4. Floating Base (Underactuated) Robots

在浮动基准(欠驱动)机器人中,我们引入了一些新的符号和表示:

x = [ x b q ] ∈ R n + 6 ν = [ v b q ˙ ] ∈ R n + 6 ν ˙ = [ v ˙ b q ¨ ] ∈ R n + 6 \begin{array}{l} \mathbf{x}=\left[\begin{array}{c} \mathbf{x}_{b} \\ \mathbf{q} \end{array}\right] \in \mathbb{R}^{n+6} \\ \nu=\left[\begin{array}{c} \mathbf{v}_{b} \\ \dot{\mathbf{q}} \end{array}\right] \in \mathbb{R}^{n+6} \\ \dot{\nu}=\left[\begin{array}{c} \dot{\mathbf{v}}_{b} \\ \ddot{\mathbf{q}} \end{array}\right] \in \mathbb{R}^{n+6} \end{array} x=[xbq]Rn+6ν=[vbq˙]Rn+6ν˙=[v˙bq¨]Rn+6

需要注意的是:
x b ≠ v b \mathbf{x}_{b} \not ={ \mathbf{v}_{b}} xb=vb

在浮动基准机器人中:

  • x \mathbf{x} x 表示机器人的状态向量,包括浮动基准(floating base)的位姿 x b \mathbf{x}_{b} xb 和广义坐标 q \mathbf{q} q
  • ν \nu ν 表示机器人的速度向量,包括浮动基准的速度 v b \mathbf{v}_{b} vb 和广义速度 q ˙ \dot{\mathbf{q}} q˙
  • ν ˙ \dot{\nu} ν˙ 表示机器人的加速度向量,包括浮动基准的加速度 v ˙ b \dot{\mathbf{v}}_{b} v˙b 和广义加速度 q ¨ \ddot{\mathbf{q}} q¨

通过引入浮动基准,这些表示允许我们处理那些具有移动底座和不完全受控(欠驱动)的机器人系统。在浮动基准机器人中,浮动基准的位姿和速度是重要的,因为它们涉及机器人的整体运动和控制。广义坐标和广义速度则描述了机器人的内部自由度和关节运动。

动力学扩展

在浮动基准机器人的动力学建模中,惯性矩阵、科里奥利斯和离心力项以及重力项需要扩展:

G ( q ) → G ( x ) ∈ R n + 6 C ( q , q ˙ ) → C ( x , ν ) ∈ R ( n + 6 ) × ( n + 6 ) \begin{aligned} \mathbf{G}(\mathbf{q}) & \rightarrow \mathbf{G}(\mathbf{x}) \in \mathbb{R}^{n+6} \\ \mathbf{C}(\mathbf{q}, \dot{\mathbf{q}}) & \rightarrow \mathbf{C}(\mathbf{x}, \nu) \in \mathbb{R}^{(n+6) \times(n+6)} \end{aligned} G(q)C(q,q˙)G(x)Rn+6C(x,ν)R(n+6)×(n+6)

M ( q ) → M ( x ) = [ M x ( x ) M x q ( x ) M q x ( x ) M q ( x ) ] ∈ R ( n + 6 ) × ( n + 6 ) \mathbf{M}(\mathbf{q}) \rightarrow \mathbf{M}(\mathbf{x})=\left[\begin{array}{cc} \mathbf{M}_{x}(\mathbf{x}) & \mathbf{M}_{x q}(\mathbf{x}) \\ \mathbf{M}_{q x}(\mathbf{x}) & \mathbf{M}_{q}(\mathbf{x}) \end{array}\right] \in \mathbb{R}^{(n+6) \times(n+6)} M(q)M(x)=[Mx(x)Mqx(x)Mxq(x)Mq(x)]R(n+6)×(n+6)

在上述方程中:

  • G ( q ) \mathbf{G}(\mathbf{q}) G(q) 描述了机器人系统中的重力效应。对于浮动基准机器人,扩展为 G ( x ) \mathbf{G}(\mathbf{x}) G(x)
  • C ( q , q ˙ ) \mathbf{C}(\mathbf{q}, \dot{\mathbf{q}}) C(q,q˙) 表示科里奥利斯和离心力项,扩展为 C ( x , ν ) \mathbf{C}(\mathbf{x}, \nu) C(x,ν)
  • M ( q ) \mathbf{M}(\mathbf{q}) M(q) 表示惯性矩阵,扩展为 M ( x ) \mathbf{M}(\mathbf{x}) M(x)

扩展的力矩和外部力表示

τ ∈ R n → R n + 6 Q = [ 0 6 × n I n × n ] Q τ ∈ R n + 6 \begin{array}{c} \tau \in \mathbb{R}^{n} \rightarrow \mathbb{R}^{n+6} \\ \mathbf{Q}=\left[\begin{array}{c} \mathbf{0}_{6 \times n} \\ \mathbf{I}_{n \times n} \end{array}\right] \quad \mathbf{Q} \tau \in \mathbb{R}^{n+6} \end{array} τRnRn+6Q=[06×nIn×n]QτRn+6

  • τ \tau τ 是维度为 R n \mathbb{R}^n Rn 的力矩向量。通过选择矩阵 Q \mathbf{Q} Q 扩展到 R n + 6 \mathbb{R}^{n+6} Rn+6

J ( q ) ⊤ f e x t ∈ R n J ^ = [ J b ( q ) ⊤ J ( q ) ⊤ ] J ^ ( x ) = [ J b ( x b ) J ( q ) ] J ^ ( x ) ⊤ f e x t ∈ R n + 6 \begin{array}{l} \mathbf{J}(\mathbf{q})^{\top} \mathbf{f}_{e x t} \in \mathbb{R}^{n} \\ \widehat{\mathbf{J}}=\left[\begin{array}{c} \mathbf{J}_{b}(\mathbf{q})^{\top} \\ \mathbf{J}(\mathbf{q})^{\top} \end{array}\right] \\ \widehat{\mathbf{J}}(\mathbf{x})=\left[\mathbf{J}_{b}\left(\mathbf{x}_{b}\right) \ \mathbf{J}(\mathbf{q})\right] \\ \widehat{\mathbf{J}}(\mathbf{x})^{\top} \mathbf{f}_{e x t} \in \mathbb{R}^{n+6} \end{array} J(q)fextRnJ =[Jb(q)J(q)]J (x)=[Jb(xb) J(q)]J (x)fextRn+6

  • J ( q ) ⊤ f ext \mathbf{J}(\mathbf{q})^{\top} \mathbf{f}_{\text{ext}} J(q)fext 表示外部力通过雅可比矩阵传递到广义坐标上的力。扩展为 J ^ ( x ) \widehat{\mathbf{J}}(\mathbf{x}) J (x)

动力学方程

M ( x ) ν ˙ + C ( x , ν ) ν + G ( x ) = Q τ + J ^ ( x ) ⊤ f ext \mathbf{M}(\mathbf{x}) \dot{\nu} + \mathbf{C}(\mathbf{x}, \nu) \nu + \mathbf{G}(\mathbf{x}) = \mathbf{Q} \tau + \widehat{\mathbf{J}}(\mathbf{x})^{\top} \mathbf{f}_{\text{ext}} M(x)ν˙+C(x,ν)ν+G(x)=Qτ+J (x)fext

这个方程是浮动基准机器人的动力学方程,考虑了惯性、科里奥利斯力、重力、外部力和力矩的影响。

对于具有平板脚的机器人,动力学方程可以表示为:

M ν ˙ + C ν + G = Q τ + J ^ l ⊤ f l + J ^ r ⊤ f r \mathbf{M} \dot{\nu} + \mathbf{C} \nu + \mathbf{G} = \mathbf{Q} \tau + \widehat{\mathbf{J}}_{l}^{\top} \mathbf{f}_{l} + \widehat{\mathbf{J}}_{r}^{\top} \mathbf{f}_{r} Mν˙+Cν+G=Qτ+J lfl+J rfr

其中, f l , f r ∈ R 6 \mathbf{f}_{l}, \mathbf{f}_{r} \in \mathbb{R}^{6} fl,frR6 表示左脚和右脚的外部力。

5. Center of Mass Dynamics

在中心质量动力学中,我们引入了一些新的符号和表示:

O b ∥ O c O_{b} \| O_{c} ObOc

O c O_{c} Oc 是质心所在的坐标系,定义了质心动量矩阵:

A ( x ) = m J c o m ( x ) \mathbf{A}(\mathbf{x})=m \mathbf{J}_{c o m}(\mathbf{x}) A(x)=mJcom(x)

其中:

  • O b O_b Ob 表示浮动基准的原点。
  • O c O_c Oc 表示质心的位置。
  • J c o m ( x ) \mathbf{J}_{com}(\mathbf{x}) Jcom(x) 是质心雅可比矩阵, m m m 是机器人的总质量。

质心雅可比矩阵定义如下:

w x ˙ c = J c ν J c = ∑ k = 0 n − 1 m k J c k ∑ k = 0 n − 1 m k \begin{array}{c} { }^{w} \dot{x}_{c} = \mathbf{J}_{c} \nu \\ \mathbf{J}_{c} = \frac{\sum_{k=0}^{n-1} m_{k} \mathbf{J}_{c_{k}}}{\sum_{k=0}^{n-1} m_{k}} \end{array} wx˙c=JcνJc=k=0n1mkk=0n1mkJck

6. Constraints

在给定地面固定的情况下,考虑极限情况,其中外部力 f e x t \mathbf{f}_{ext} fext 和接触约束力 f l , f r \mathbf{f}_{l}, \mathbf{f}_{r} fl,fr 趋向于无穷大。

在这种情况下,动力学方程简化为:

M ν ˙ + C ν + G = 0 \mathbf{M} \dot{\nu} + \mathbf{C} \nu + \mathbf{G} = 0 Mν˙+Cν+G=0

这表示机器人在极限条件下的平衡关系。

约束力的表达:

A ( x ) ν = 0 \mathbf{A}(\mathbf{x}) \nu = 0 A(x)ν=0

约束矩阵 A ( x ) \mathbf{A}(\mathbf{x}) A(x) 的维度为 R n + 6 − k \mathbb{R}^{n+6-k} Rn+6k,其中 k k k 是约束的自由度数目。

约束力的能量守恒性质:

P = Γ ⊤ ν = 0 Γ = A ( x ) ⊤ λ d d t ∂ L ( q , q ˙ ) ∂ q ˙ − ∂ L ( q , q ˙ ) ∂ q + A ( q ) ⊤ λ = τ M ν ˙ + C ν + G + A ⊤ λ = Q τ \begin{array}{l} \mathbf{P} = \Gamma^{\top} \nu = 0 \\ \Gamma = \mathbf{A}(\mathbf{x})^{\top} \lambda \\ \frac{d}{dt} \frac{\partial L(q, \dot{q})}{\partial \dot{q}} - \frac{\partial L(q, \dot{q})}{\partial q} + \mathbf{A}(q)^{\top} \lambda = \tau \\ \mathbf{M} \dot{\nu} + \mathbf{C} \nu + \mathbf{G} + \mathbf{A}^{\top} \lambda = \mathbf{Q} \tau \end{array} P=Γν=0Γ=A(x)λdtdq˙L(q,q˙)qL(q,q˙)+A(q)λ=τMν˙+Cν+G+Aλ=Qτ

最终,约束力显式依赖于作用力矩:

M ν ˙ + C ν + G + A ⊤ λ = Q τ A ν = 0 A ν ˙ + A ˙ ν = 0 λ = ( A M − 1 A ⊤ ) − 1 ( A M − 1 ( Q τ − C ν − G ) + A ˙ ν ) \begin{array}{l} \mathbf{M} \dot{\nu} + \mathbf{C} \nu + \mathbf{G} + \mathbf{A}^{\top} \lambda = \mathbf{Q} \tau \\ \mathbf{A} \nu = 0 \\ \mathbf{A} \dot{\nu} + \dot{\mathbf{A}} \nu = 0 \\ \lambda = \left(\mathbf{A M}^{-1} \mathbf{A}^{\top}\right)^{-1}\left(\mathbf{A} \mathbf{M}^{-1}(\mathbf{Q} \tau - \mathbf{C} \nu - \mathbf{G}) + \dot{\mathbf{A}} \nu\right) \end{array} Mν˙+Cν+G+Aλ=QτAν=0Aν˙+A˙ν=0λ=(AM1A)1(AM1(QτCνG)+A˙ν)

这些方程描述了浮动基准机器人在约束条件下的动力学行为,明确了约束力对作用力矩的依赖性。这对于理解和控制受约束机器人的运动和稳定性非常重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841900.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【波点音乐看广告】

import uiautomator2 as u2 import time from datetime import datetime import xml.etree.ElementTree as ET import re import os 连接设备 d u2.connect() os.system(‘adb shell chmod 775 /data/local/tmp/atx-agent’) os.system(‘adb shell /data/local/tmp/atx-age…

2024年5月系统架构设计师综合知识真题

1.操作系统:先来先服务调度算法 2.操作系统:多道程序设计&#xff0c;利用率 3.操作系统:状态流转错误的&#xff0c;等待态到运行态 4.数据库:2NF 每一个非主属性完全依赖主键 5.数据库:笛卡尔积m*n 6.数据库:不属于事务的特点&#xff0c;并发性 7.数据库:交集表达式:R-(R-S)…

linux设置不记录历史命令

我们知道Linux历史命令是被保存在内存和各用户家目录下.bash_history文件中&#xff0c;当退出或者登录shell时&#xff0c;其会自动保存或读取。 [rootlogstash ~]# cat .bash_history | tail -n 10 man read touch read.sh chmod 755 read.sh clear vi read.sh sh read.sh…

shell脚本开发基础

shell脚本开发基础 什么是linux内置命令&#xff1f;什么是外置命令 内置命令&#xff1a;在系统启动时就加载入内存&#xff0c;常驻内存&#xff0c;执行效率更高&#xff0c;但是占用资源&#xff0c;cd 外置命令&#xff1a;系统需要从硬盘中读取程序文件&#xff0c;再读…

Fortran: fypp预处理工具

Fortran fypp预处理工具 Fypp基于Python的预处理器工具&#xff0c;不限于语言。利用Python语言&#xff0c;可以批量生成源码 示例 M_logger.fpp module M_loggeruse stdlib_loggeruse stdlib_error contains#:for x,y in [(info,log_information),(debug,log_debug),(warn…

第八篇【传奇开心果系列】Python微项目技术点案例示例:以微项目开发为案例,深度解读Dearpygui 编写图形化界面桌面程序的优势

传奇开心果博文系列 系列博文目录Python微项目技术点案例示例系列 博文目录前言一、开发图形化界面桌面程序的优势介绍二、跨平台特性示例代码和解析三、高性能特性示例代码和解析四、简单易用特性示例代码和解析五、扩展性强示例代码和解析六、现代化设计示例代码和解析七、知…

什么是云渗透测试?

推荐阅读&#xff1a; 什么是安全态势&#xff1f; 什么是人肉搜索 什么是恶意软件&#xff1f; 什么是数字取证&#xff1f; 什么是语音网络钓鱼&#xff1f; 什么是网络安全中的社会工程&#xff1f; 什么是网络安全中的威胁情报&#xff1f; 什么是端点检测和响应 (…

linux 阿里云服务器安装ImageMagick和php扩展imagick

操作系统版本 Alibaba Cloud Linux 3.2104 LTS 64位 # 1.安装ImageMagick yum install -y ImageMagick ImageMagick-devel # 没有pecl要先安装pecl 和头文件 sudo yum install php-devel # 2.pecl 安装扩展 pecl install imagick #寻找所有php.ini文件 find / -name php.…

临时存储和永久存储的区别

大家都知道&#xff0c;我们一般在页面传参的时候一般会用到两种方式&#xff01;一种是路径拼接页面传参&#xff0c;还有一种呢&#xff01;就是我们比较常用的存储&#xff0c;通过接口返回过来的数据&#xff0c;我们将它存起来&#xff0c;到其他页面在取出来是很方便的。…

静态随机存储器(SRAM)

目录 介绍 基本的 SRAM 存储单元阵列 1. SRAM 存储单元 2. SRAM 阵列 3. SRAM 阵列的读写操作 4. SRAM 阵列的扩展 5. SRAM 阵列的应用 6. SRAM 阵列的优缺点 基本的 SRAM 逻辑结构 1. 存储单元 2. 存储单元阵列 3. 译码器 4. 读写电路 5. 控制逻辑 6. SRAM 逻辑…

【前端之ES6语法】

前端之ES6语法 1. ES6简介2. ES6新特性3.ES6不支持&#xff0c;使用babel3.1 参考文献 4.let和const命令5. 模版字符串6.函数之默认值、剩余参数7. 函数之扩展运算符、箭头函数8.箭头函数this指向和注意事项9.解构赋值10.对象扩展11.Symbol类型12.Set集合类型13.Map数据类型14.…

保存ssh的资讯,快速访问linux server的sshpass

安装 sudo apt-get install -y openssh-server sudo apt-get install -y sshpass 假设server的user和密码都是hao&#xff0c;然后server的ip是192.168.0.106 在.bashrc里写入 alias sshnano"sshpass -p hao ssh hao192.168.0.106" #第一次要先运行 ssh hao192…

React自定义Componment和State深层次理解-07

本节主要从底层原理上分析下React开发相关的内容和注意事项&#xff0c;本节会围绕使用展开&#xff0c;而非源码讲解。 Componment详解 什么是组件 在 MVVM架构出现之前&#xff0c;组件主要分为两种。 狭义上的组件&#xff0c;又称为 UI 组件&#xff0c;比如 Tabs 组件、…

Java计算日期相差天数的几种方法

Java计算日期相差天数的几种方法 &#x1f5d3;️ Java计算日期相差天数的几种方法摘要引言一、使用java.util.Date和java.util.Calendar&#x1f4c5;1. 使用java.util.Date示例代码 2. 使用java.util.Calendar示例代码 二、使用java.time.LocalDate&#x1f4c6;示例代码 三、…

微信小程序文本框输入显示已经输入的字数

我们遇到这样的需求&#xff0c;就是微信小程序的输入框下面需要显示输入的字数&#xff1a; 我们通常会使用bindinput事件&#xff0c;让显示的字数等于value的长度&#xff0c;看下面的图&#xff1a; 但在实践中&#xff0c;真机测试中&#xff0c;我们会发现以下问题: 这个…

Java Leyden可3倍提高JVM启动和预热时间

Leyden 存储库的目的是对 Java 程序的启动时间、达到峰值性能的时间和占用空间进行原型改进 。 Leyden 原型包含许多优化&#xff0c;将工作从运行时转移到早期阶段&#xff0c;这些阶段称为_训练运行_。在训练运行中&#xff0c;我们根据对应用程序实际行为的观察&#xff0c…

IP编址、进制转换、IP地址分类、变长子网掩码VLSM、无类域间路由CIDR

前言 网络层位于数据链路层与传输层之间。网络层中包含了许多协议&#xff0c;其中最为重要的协议就是IP协议。网络层提供了IP路由功能。理解IP路由除了要熟悉IP协议的工作机制之外&#xff0c;还必须理解IP编址以及如何合理地使用IP地址来设计网络。 IP编址 每个网段上都有两…

Java的类路径究竟是什么?

回答 问了chatgpt这个问题&#xff0c;首先类路径的定义是&#xff1a; 是指一组路径&#xff0c;这些路径告诉Java虚拟机&#xff08;JVM&#xff09;和类加载器在哪里可以找到应用程序所需的类和资源文件。说白了就是在运行java程序的时候需要先将java源代码编译成class文件…

网络七层模型与云计算中的网络服务

网络七层模型&#xff0c;也称为OSI&#xff08;Open System Interconnection&#xff09;模型&#xff0c;是由国际标准化组织&#xff08;ISO&#xff09;制定的一个概念性框架&#xff0c;用于描述网络通信过程中信息是如何被封装、传输和解封装的。这一模型将复杂的网络通信…

动态规划常见算法题讲解

爬楼梯问题 爬楼梯问题是经典的动态规划问题&#xff0c;通常问题描述如下&#xff1a; 问题描述&#xff1a;一个人站在楼梯的底部&#xff0c;需要到达楼梯的顶部。总共有 n 级台阶&#xff0c;每次可以向上走一阶或两阶。问有多少种不同的方法可以到达楼梯的顶部。 解决方…