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

2024-05-27 09:12

本文主要是介绍人形机器人建模与控制(二) - 高级运动学和动态建模,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.chinasem.cn/article/1007056

相关文章

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

Java研学-RBAC权限控制(八)

九 登录登出 1 登录作用   判断员工是否有权限访问,首先得知道现在操作的人是谁,所以必须先实现登录功能 2 登录流程   ① 提供登录页面,可输入用户名与密码信息,并添加执行登录的按钮。(登录页面不能被拦截)   ② 给按钮绑定点击事件(异步操作,POST请求)   ③ 事件中发送登录请求,使用 AJAX 方式提交。(使用 AJAX 原因:用户体验更好,既可保留用户刚输入的用户名和密码

【杂记-浅谈DHCP动态主机配置协议】

DHCP动态主机配置协议 一、DHCP概述1、定义2、作用3、报文类型 二、DHCP的工作原理三、DHCP服务器的配置和管理 一、DHCP概述 1、定义 DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种网络协议,主要用于在IP网络中自动分配和管理IP地址以及其他网络配置参数。 2、作用 DHCP允许计算机和其他设备通

青龙面板2.9之Cdle傻妞机器人编译教程

看到有的朋友对傻妞机器人感兴趣,这里写一下傻妞机器人的编译教程。 第一步,这里以linux amd64为例,去官网下载安装go语言安装包: 第二步,输入下方指令 cd /usr/local && wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz -O go1.16.7.linux-amd64.tar.gz

JavaWeb系列六: 动态WEB开发核心(Servlet) 上

韩老师学生 官网文档为什么会出现Servlet什么是ServletServlet在JavaWeb项目位置Servlet基本使用Servlet开发方式说明快速入门- 手动开发 servlet浏览器请求Servlet UML分析Servlet生命周期GET和POST请求分发处理通过继承HttpServlet开发ServletIDEA配置ServletServlet注意事项和细节 Servlet注

YTK的高级使用

YTKUrlFilterProtocol 接口 YTKUrlFilterProtocol 接口用于实现对网络请求URL或参数的重写,例如可以统一为网络请求加上一些参数,或者修改一些路径。 例如:在猿题库中,我们需要为每个网络请求加上客户端的版本号作为参数。所以我们实现了如下一个YTKUrlArgumentsFilter 类,实现了 YTKUrlFilterProtocol 接口: //

ROS2从入门到精通4-4:局部控制插件开发案例(以PID算法为例)

目录 0 专栏介绍1 控制插件编写模板1.1 构造控制插件类1.2 注册并导出插件1.3 编译与使用插件 2 基于PID的路径跟踪原理3 控制插件开发案例(PID算法)常见问题 0 专栏介绍 本专栏旨在通过对ROS2的系统学习,掌握ROS2底层基本分布式原理,并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。 🚀详情:《ROS2从入门到精通》 1 控制插

OSG学习:LOD、数据分页、动态调度

LOD(level of detail):是指根据物体模型的结点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。在OSG的场景结点组织结构中,专门提供了场景结点osg::LOD来表达不同的细节层次模型。其中,osg::LOD结点作为父节点,每个子节点作为一个细节层次,设置不同的视域,在不同的视域下显示相应的子节点。 数据分页:在城市

MQTT之CONNECT控制报文详解

目录 1.  MQTT协议规范 2.  名词解释 3.  CONNECT控制报文详解 3.1  固定报头 Fixed header 3.2  可变报头 Variable header 3.2.1  协议名 Protocol Name 3.2.2  协议级别 Protocol Level 3.2.3  连接标志 Connect Flags 3.2.4  保持连接 Keep

redis高级用法

redis 慢日志查询 配置参数 slowlog-log-slower-than 10000 #单位微秒 slowlog-max-len 选项指定服务器最多保存多少条慢查询日志 redis-cli slowlog get #获取慢日志1) 1) (integer) 4 # 日志的唯一标识符(uid)2) (integer) 1378781447 # 命令执