腿足机器人之六- 前向运动学

腿足机器人之六- 前向运动学

  • 刚体运动学基础
    • 坐标系定义
    • 旋转矩阵与欧拉角
    • 齐次变换矩阵(平移+旋转的统一表示)
  • 运动链建模
    • 串联运动链结构(从基座到末端的关节连接)
    • 标准Denavit-Hartenberg(D-H)参数法
    • 改进D-H参数法(针对复杂关节轴对齐问题)
  • 多腿协调与基座标系转换
    • 基座标系(机器人本体)到世界坐标系的变换
    • 多腿独立运动学链的全局坐标统一
  • 真实机器人中的挑战
  • 仿真工具推荐

想象一下,你正在控制一个四足机器人(比如波士顿动力的Spot)在复杂地形中行走。要让它的“脚”准确踩到目标位置,首先需要知道一个问题:
“如果机器人的关节转动某个角度,它的脚会移动到哪里?”
这就是**前向运动学(Forward Kinematics)**解决的问题。
它是机器人控制的基石,也是理解步态规划、避障等高级功能的第一步。

机器人在运动的时候,还需要根据未来的姿态动作,倒推计算关节的控制信息,这被称为逆运动学,下一篇博客揭晓,欢迎关注,前向运动学的基础是刚体变换和坐标系转换,这部分和普通机械臂类似(如成熟的工业机械臂),用到的核心知识是D-H参数,但腿足机器人的结构更加多变,比如关节的串联和并联以及多个自由度。

腿足机器人通常有两或四个腿,需要考虑基坐标系到每个腿的基座,再到脚端的位置,这里涉及多个运动链,比如四足机器人每条腿独立,但身体作为基座。需要确定每个连杆的坐标系,然后通过变换矩阵相乘得到末端位置。

在第二篇 腿足机器人之二- 运动控制概览我们提到前向运动学是中间层,运动的规划(步态规划)则是MPC/RL等算法实现,前向运动学主要是关注单腿的运动学,而不是步态规划。但前向运动学需要考虑基坐标系的变化,比如当机器人身体移动时,各腿末端的位置会相对世界坐标系变化,可能需要将身体坐标系到世界坐标系的转换也包括进去。

前向运动学知识点主要包括:刚体运动学基础(坐标系、旋转矩阵、齐次变换)、关节类型(旋转和移动关节)、运动链建模(串联结构)、正运动学公式推导(变换矩阵连乘)、多腿协调中的基座变换(比如身体移动对脚端位置的影响)、以及可能的并联机构(如果腿有并联结构的话)。

刚体运动学基础

在腿足机器人中,坐标系定义是运动学建模的核心,经典运动学中主要包括三种坐标系,分别是基坐标系,关节坐标系、末端坐标系,这是描述机器人运动控制、步态规划,注意和环境感知、定位导航的坐标系(如Camera传感器上的坐标、地图坐标等等)区别。

坐标系定义

在这里插入图片描述

基坐标系(base frame):通常固定在机器人躯干或髋关节处(如上图中间的圆圈位置,在髋关节的旋转中心),通常以髋关节的初始位置为原点,Z轴(Yaw)垂直于躯干平面(竖直方向,人体直立时从脚到头的连线),X轴(Roll)指向机器人前进方向(平行于地面),Y轴(Pitch,从左肩到右肩的连线)。
关节坐标系:每个关节的局部坐标系,用于描述相邻连杆的相对运

  • 髋关节坐标系:与基坐标系重合(初始状态),当髋关节偏航(Yaw)时,绕基坐标系的Z轴旋转。
  • 膝关节坐标系:位于大腿末端,绕髋关节俯仰轴(Y轴)旋转。
  • 踝关节坐标系:位于小腿末端,绕膝关节俯仰轴(Y轴)旋转。
  • 肩关节坐标系:位于肩部,提供三个方向运动。
  • 肘关节坐标系:位于手肘不,沿X轴(Roll)平移运动。
    末端坐标系:固定在足端或执行器(如足底、手掌)的坐标系。

旋转矩阵与欧拉角

在腿足机器人中,每个关节的旋转会改变后续连杆的方向,以髋关节的偏航 Y a w Yaw Yaw为例:
假设髋关节绕基坐标系的Z轴旋转角度为 θ \theta θ,则其旋转矩阵为:
R z ( θ ) = [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] R_z(\theta)=\begin{bmatrix} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(θ)= cosθsinθ0sinθcosθ0001

矩阵元素物理意义
R 11 = cos ⁡ θ R_{11}=\cos \theta R11=cosθ表示新坐标系Z轴在原坐标系X轴上的投影比例
R 12 = − sin ⁡ θ R_{12}=-\sin \theta R12=sinθ$表示新坐标系Y轴在原坐标系X轴上的投影比例(因旋转后Y轴向左偏移)
R 21 = sin ⁡ θ R_{21}=\sin \theta R21=sinθ表示新坐标系X轴在原坐标系Y轴上的投影比例(X轴向右前方倾斜)
R 22 = cos ⁡ θ R_{22}=\cos \theta R22=cosθ表示新坐标系Y轴在原坐标系Y轴上的投影比例
R 33 = 1 R_{33}=1 R33=1$表示新坐标系Z轴和原坐标系Z轴始终重合(绕Z轴旋转不影响竖直方向)

其他轴(X/Y)的旋转矩阵类似,需注意旋转顺序(如Z-Y-Z欧拉角)

齐次变换矩阵(平移+旋转的统一表示)

齐次变换矩阵用于描述从一个坐标系到另一个坐标系的平移和旋转,是串联关节运动的核心工具,还是以上面的髋关节俯仰(绕Y轴旋转)为例,其变换矩阵为:
将平移向量 p = [ x , y , z ] T \mathbf p=[x,y,z]^T p=[x,y,z]T和旋转矩阵 R R R合并为4x4矩阵:
T = [ R p 0 1 ] T=\begin{bmatrix} R & p \\ 0 & 1 \end{bmatrix} T=[R0p1]
用于统一描述刚体的位姿变换。

  • 髋关节偏航(Yaw)
    假设基座标系为( O 0 O_0 O0),髋关节旋转后的坐标系为 O 1 O_1 O1,则变换矩阵 T 1 0 T_1^0 T10包含绕Z轴(脚到头连线)旋转 θ 1 \theta_1 θ1,无平移(假设关节在原点):
    T 1 0 [ cos ⁡ θ 1 − sin ⁡ θ 1 0 0 sin ⁡ θ 1 cos ⁡ θ 1 0 0 0 0 1 0 0 0 0 1 ] T_1^0\begin{bmatrix} \cos \theta_1 & -\sin \theta_1 & 0 &0\\ \sin \theta_1 & \cos \theta_1 & 0 & 0\\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1\end{bmatrix} T10 cosθ1sinθ100sinθ1cosθ10000100001

  • 髋关节俯仰
    髋关节旋转后的坐标系为 O 1 O_1 O1,大腿末端的坐标系为 O 2 O_2 O2,绕Y轴(左肩到右肩连线)旋转 θ 2 \theta_2 θ2,并沿大腿长度方向(新
    的X轴)平移 L 1 L_1 L1(大腿长度):
    T 2 1 [ cos ⁡ θ 2 0 sin ⁡ θ 2 L 1 cos ⁡ θ 2 0 1 0 0 − sin ⁡ θ 2 0 cos ⁡ θ 2 − L 1 sin ⁡ θ 2 0 0 0 1 ] T_2^1\begin{bmatrix} \cos \theta_2 & 0 & \sin \theta_2 & L_1 \cos \theta_2 \\ 0 & 1& 0 & 0\\ - \sin \theta_2 & 0 & \cos \theta_2 & -L_1 \sin \theta_2 \\ 0 & 0 & 0 & 1\end{bmatrix} T21 cosθ20sinθ200100sinθ20cosθ20L1cosθ20L1sinθ21

  • 膝关节俯仰
    大腿末端的坐标系为 O 2 O_2 O2,小腿末端的坐标系为 O 3 O_3 O3,绕Y轴(左肩到右肩连线)旋转 θ 3 \theta_3 θ3,并沿小腿长度方向(新
    的X轴)平移 L 2 L_2 L2(大腿长度):
    T 3 2 [ cos ⁡ θ 3 0 sin ⁡ θ 3 L 2 cos ⁡ θ 3 0 1 0 0 − sin ⁡ θ 3 0 cos ⁡ θ 3 − L 2 sin ⁡ θ 3 0 0 0 1 ] T_3^2\begin{bmatrix} \cos \theta_3 & 0 & \sin \theta_3 & L_2 \cos \theta_3 \\ 0 & 1& 0 & 0\\ - \sin \theta_3 & 0 & \cos \theta_3 & -L_2 \sin \theta_3 \\ 0 & 0 & 0 & 1\end{bmatrix} T32 cosθ30sinθ300100sinθ30cosθ30L2cosθ30L2sinθ31

  • 全局变换矩阵
    足端在基座标系中的位置为:
    T 3 0 = T 1 0 ⋅ T 2 1 ⋅ T 3 2 T_3^0=T_1^0\cdot T_2^1 \cdot T_3^2 T30=T10T21T32
    足端坐标 P e n d = [ x , y , z ] T P_{end}=[x,y,z]^T Pend=[x,y,z]T T 3 0 T_3^0 T30的最后一列前三行给出。

注意事项:

  • 旋转顺序的影响:若关节旋转顺序不同(如先俯仰后偏航),结果会完全不同。
  • 实际机器人的校准:需测量真实的 L 1 L_1 L1 L 2 L_2 L2(可能因装配误差而偏离设计值)。
  • 姿态计算:足端的姿态(如是否水平着地)由旋转矩阵部分决定,需额外分析。
  • 实际的机器人还有踝关节,即图中的(Ankle),因为和膝关节类似,自由度是俯仰方向,且计算方法也类似,所以这里并没有列出。

运动链建模

串联运动链结构(从基座到末端的关节连接)

标准Denavit-Hartenberg(D-H)参数法

D-H参数(Denavit-Hartenberg参数) 是一种用于描述机器人连杆和关节几何关系的标准化方法,由 Jacques Denavit 和 Richard S. Hartenberg 于1955年提出。它是机器人运动学建模的基础工具,尤其适用于串联式机械臂或腿足机器人的运动学分析。

D-H参数的核心思想是机器人每个关节的运动(旋转或平移)会影响末端的位置和姿态,因此D-H参数通过定义相邻连杆之间的相对位姿关系,将复杂的多关节运动分解为一系列简单的坐标系变换,最终通过矩阵乘法得到末端位姿。

D-H参数法
每个关节需要定义 4个参数,用于描述相邻两个连杆之间的几何关系:

参数符号意义
连杆长度 a i a_i ai从关节 i i i i + 1 i+1 i+1沿 X i X_i Xi轴的距离
连杆转角 α i \alpha_i αi X i X_i Xi轴从 Z i Z_i Zi旋转到 Z i + 1 Z_{i+1} Zi+1的角度
连杆偏距 d i d_i di沿 Z i Z_i Zi轴从 X i − 1 X_{i-1} Xi1 X i X_i Xi的距离
关节角度 θ i \theta_i θi Z i Z_i Zi轴从 X i − 1 X_{i-1} Xi1 X i X_i Xi的旋转角

从坐标系 i − 1 i-1 i1 i i i的齐次变换矩阵 T i − 1 i T_{i-1}^i Ti1i由一下四个参数计算得到:
T i − 1 i [ cos ⁡ θ i − sin ⁡ θ i cos ⁡ α i sin ⁡ θ i sin ⁡ α i a i cos ⁡ θ i sin ⁡ θ i cos ⁡ θ i cos ⁡ α i − cos ⁡ θ i sin ⁡ α i a i sin ⁡ θ i 0 sin ⁡ α i cos ⁡ α i d i 0 0 0 1 ] T_{i-1}^i\begin{bmatrix} \cos \theta_i & -\sin \theta_i \cos \alpha_i & \sin \theta_i \sin \alpha_i & a_i \cos \theta_i \\ \sin \theta_i & \cos \theta_i \cos \alpha_i& -\cos \theta_i \sin \alpha_i & a_i \sin \theta_i\\ 0 & \sin \alpha_i & \cos \alpha_i & d_i \\ 0 & 0 & 0 & 1\end{bmatrix} Ti1i cosθisinθi00sinθicosαicosθicosαisinαi0sinθisinαicosθisinαicosαi0aicosθiaisinθidi1

其中:
1.绕 Z i − 1 Z_{i-1} Zi1旋转 θ i \theta_i θi:修正关节角度
2.沿 Z i − 1 Z_{i-1} Zi1平移 d i d_i di:处理滑动关节的偏移
3.沿 X i X_i Xi平移 a i a_i ai:定义连杆长度
4.绕 X i X_i Xi旋转 α i \alpha_i αi:修正连杆的扭转角度。

这样从基座到末端的全局变换矩阵为各局部变换矩阵的连乘:
T e n d b a s e = T 1 ⋅ T 2 ⋅ . . . ⋅ T n T_{end}^{base}=T_1 \cdot T_2 \cdot... \cdot T_n Tendbase=T1T2...Tn
其中 T i T_i Ti是第i个关节的变换矩阵,如上例的 T 3 0 T_3^0 T30所求解示例。

改进D-H参数法(针对复杂关节轴对齐问题)

标准的D-H参数法坐标系建立在连杆的远端,而改进的D-H参数法,将坐标系建立在连杆的近端,主要是为了更加适应树状结构机器人。

D-H参数法统一了运动学建模的流程,通过链式矩阵乘法即可得到末端位置,适用于大多数串联式机器人(尤其是成熟的机械臂工业机器人),但是对并联或者闭链结构不友好。

多腿协调与基座标系转换

上面的例子都是单腿,但是对于韧性的双足或者机器狗的四足,在步态的运动中,就涉及到两足或者四足之间的协调,以实现动态环境下的步态规划,其中一个重要点是通过将各腿运动学链与基座变换结合实现全局坐标统一,在此基础上更容易规划步态。

基座标系(机器人本体)到世界坐标系的变换

若机器人躯干(基座)在三维空间世界中运动,坐标系中运动(平移 T b = [ x b , y b , z b ] T T_b=[x_b, y_b, z_b]^T Tb=[xb,yb,zb]T和旋转 R b ∈ S O ( 3 ) R_b \in SO(3) RbSO(3)描述,则腿末端(足端)在基座标系位置为 T e n d b a s e T_{end}^{base} Tendbase,则其在世界坐标系(全局坐标系)为:
T e n d w o r l d = T b w o r l d + R b ⋅ T e n d b a s e T_{end}^{world}=T_{b}^{world} + R_b \cdot T_{end}^{base} Tendworld=Tbworld+RbTendbase
其中:

  • T b T_b Tb是基座原点在世界坐标系中的位置。表示从世界坐标系原点(如地面上的固定点)到机器人基座中心的位移。 x b x_b xb是沿世界坐标系x轴的位移(前后方向,可参考一开始的图)。
    假设机器人的足端在基座标系中的位置为 P b a s e = [ 1 , 0 , 0 ] T P_{base}=[1,0,0]^T Pbase=[1,0,0]T,若基座向右移动了2米,即 T b = [ 0 , 2 , 0 ] T T_b=[0,2,0]^T Tb=[0,2,0]T,则足端的世界坐标为:
    P w o r l d = T b + P b a s e = [ 1 , 2 , 0 ] T P_{world}=T_b+P_{base}=[1,2,0]^T Pworld=Tb+Pbase=[1,2,0]T

  • R b R_b Rb是基座姿态的旋转矩阵,由欧拉角(横滚 ϕ \phi ϕ,俯仰 θ \theta θ和偏航 ψ \psi ψ)定义:
    R b = R z ( ψ ) ⋅ R y ( θ ) ⋅ R x ( ϕ ) R_b=R_z(\psi)\cdot R_y(\theta) \cdot R_x(\phi) Rb=Rz(ψ)Ry(θ)Rx(ϕ)
    R x R_x Rx R y R_y Ry R z R_z Rz是绕各轴的旋转矩阵。

  • SO(3) 是 特殊正交群(Special Orthogonal Group) 的缩写,表示所有三维旋转矩阵的集合。满足正交性(即旋转不改变向量长度和夹角, R T R = I R^TR=I RTR=I)和纯旋转,无镜像反射(即 d e t ( R ) = 1 det(R)=1 det(R)=1)。SO(3)中的矩阵除了能唯一描述物理上可能的旋转,还方便了逆向计算( R − 1 = R T R^{-1}=R^T R1=RT)。

基座到世界坐标系的齐次变换矩阵为:
H b w o r l d = = [ R b T b 0 1 ] H_b^{world}==\begin{bmatrix} R_b & T_b \\ 0 & 1 \end{bmatrix} Hbworld==[Rb0Tb1]

足端位置变换为:
[ P e n d w o r l d 1 ] = H b w o r l d ⋅ [ P b a s e w o r l d 1 ] \begin{bmatrix} P_{end}^{world} \\ 1 \end{bmatrix}=H_b^{world} \cdot \begin{bmatrix} P_{base}^{world} \\ 1 \end{bmatrix} [Pendworld1]=Hbworld[Pbaseworld1]

在动态步态中,基座位姿随时间变化(如行走时躯干起伏),需实时更新 T b T_b Tb R b R_b Rb,可通过IMU测量姿态角,编码器或视觉里程计估计位置,通常要求更新频率 ≥ 100Hz(如ROS(机器人操作系统)中的tf库)。

如控制右前腿在摆动相中沿抛物线轨迹运动,同时基座移动,支撑腿左腿需调整关节角度以保持足端静止(全局坐标),这可以用逆运动学(下一篇博客)计算基座运动导致的足端位移,调整关节角度抵消。

多腿独立运动学链的全局坐标统一

在多腿运动学模型中,每条腿为串联结构(如3自由度),使用D-H参数建模,所有腿共享同一基座坐标系,但运动独立(并联驱动),当基座运动时,各腿的末端全局位置需统一到世界坐标系,以协调步态。

全局坐标统一步骤主要分为三步:
1.单腿前向运动学:计算每条腿末端在基座标系中的位置 T e n d b a s e T_{end}^{base} Tendbase(基于关节角度);
2.坐标变换到世界系:应用基座标系的 H b w o r l d H_b^{world} Hbworld变换,得到全局坐标系;
3.步态协调:根据全局坐标规划各腿的摆动/支撑相位,保持机器人平衡,这部分放到后面MPC/RL部分内容展开。

  • 基座标系变换 是多腿协调的核心,需实时融合传感器数据更新位姿。
  • 全局坐标统一 通过将各腿运动学链与基座变换结合,实现动态环境下的步态规划。
  • 实际挑战 包括实时性保障、多解协调和动态补偿,需结合控制理论与工程优化。
  • 当各退独立求解时可能导致冲突(如跳跃时双腿同时摆动),可以通过状态机控制各腿的摆动/支撑相位和基于ZMP(零力矩点)调整基座位姿和各腿力分配。

真实机器人中的挑战

  • 误差校准:实际关节存在齿轮间隙、制造公差(实际连杆长度与理论值偏差)、电机误差、连杆柔性变形。
  • 传感器反馈:使用IMU、编码器实时修正位置。
  • 制动态控制:前向运动学是静态模型,实际需结合动力学(如惯性、摩擦力)。
  • 多腿协调运动控制

仿真工具推荐

  • PyBullet:轻量级物理引擎,适合验证运动学算法。
  • ROS + Gazebo:工业级机器人仿真平台。
  • Webots:用户友好的多机器人仿真环境。
  • ROS MoveIt、Robotics Toolbox for Python.

工程上如果只是使用运动学和动力学,而不深究和改进其实现,那么ROS机器人操作系统是个不错的入手环境,该操作系统集成了运动学和动力学计算工具orocos-kdl -, 这个工具还集成了bullet3D物理引擎,用于模拟碰撞检测、刚体和软体动力学。

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

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

相关文章

uni-app发起网络请求的三种方式

uni.request(OBJECT) 发起网络请求 具体参数可查看官方文档uni-app data:请求的参数; header:设置请求的 header,header 中不能设置 Referer; method:请求方法; timeout:超时时间,单位 ms&a…

【linux】更换ollama的deepseek模型默认安装路径

【linux】更换ollama的deepseek模型默认安装路径 文章目录 【linux】更换ollama的deepseek模型默认安装路径Ollama 默认安装路径及模型存储路径迁移ollama模型到新的路径1.创建新的模型存储目录2.停止ollama3.迁移现有模型4.修改 Ollama 服务配置5.重启ollama6.验证迁移是否成功…

「软件设计模式」装饰者模式(Decorator)

深入解析装饰者模式:动态扩展功能的艺术(C实现) 一、模式思想与应用场景 1.1 模式定义 装饰者模式(Decorator Pattern)是一种结构型设计模式,它通过将对象放入包含行为的特殊封装对象中,动态地…

java项目打包成docker镜像步骤

java项目打包成docker镜像步骤 1.使用maven把java文件打包成可执行的jar包2. 打包成Dockerfile3. 把jar包和DockerFile两个文件上传到服务器上。4. 制作镜像5.启动容器 1.使用maven把java文件打包成可执行的jar包 2. 打包成Dockerfile # 先从dockerhub找到对应版本的openjdk的…

后台管理系统-项目初始化

认识vue-admin **核心交付:** 为什么要基于现成架子二次开发 什么是二次开发:基于已有的代码(项目工程,脚手架)开进行新功能的开发 所以看懂已有的框架中的既有代码,变得很重要了 1. 背景知识 后台管理系统是一种最常见的应用模式,不同的管理系统之间有很多相似的地方…

【Scrapy】Scrapy教程6——提取数据

前一小节我们拿到了页面的数据,那页面中那么多内容,我们想要其中的部分内容,该如何获取呢?这就需要对我们下载到的数据进行解析,提取出来想要的数据,这节就讲讲如何提取数据。 引入 我们编辑保存下来的shouye.html文件看下,发现这是什么鬼,全是如下图的代码。 没错…

RabbitMQ 的工作模式

目录 工作模式 Simple(简单模式) Work Queue(工作队列) Publish/Subscribe(发布/订阅) Exchange(交换机)? Routing(路由模式) Topics(通配…

Copilot Next Edit Suggestions(预览版)

作者:Brigit Murtaugh,Burke Holland 排版:Alan Wang 我们很高兴向你介绍在本次 Visual Studio Code 发布中,关于 GitHub Copilot 的三个预览功能: Next Edit Suggestions(NES)Copilot Edits 的…

[qt5学习笔记]Application Example示例程序源码解析

开发环境问题 vs2022下直接打开ui、ts文件失败 解决办法如下图, 设置designer独立运行。估计是嵌入运行存在些许bug。 同理,ts编辑工具linguist也存在这个问题。 qrc rc的编辑嵌入编辑都正常,但分离式更稳定可靠。 qt creator编译失败 原…

RabbitMQ介绍以及基本使用

文章目录 一、什么是消息队列? 二、消息队列的作用(优点) 1、解耦 2、流量削峰 3、异步 4、顺序性 三、RabbitMQ基本结构 四、RabbitMQ队列模式 1、简单队列模式 2、工作队列模式 3、发布/订阅模式 4、路由模式 5、主题模式 6、…

【数据可视化-17】基于pyecharts的印度犯罪数据可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

基于SpringBoot+Vue的在线电影购票系统的设计与实现

获取源码:SpringBootVue的在线电影购票系统: 用户:登录、注册、忘记密码、主页、猜你想看、电影详情、选座购票、正在热映、即将上映、影院、排行榜、影视快报、平台公告、个人中心、我的收藏、想看、改签、评论、排行等功能管理员:登录、首页…

LabVIEW无刷电机控制器检测系统

开发了一种基于LabVIEW的无刷电机控制器检测系统。由于无刷电机具有高效率、低能耗等优点,在电动领域有取代传统电机的趋势,而无刷电机的核心部件无刷电机控制器产量也在不断增长。然而,无刷电机控制器的出厂检测仍处于半自动化状态&#xff…

C#功能测试

List 内部元素为引用 src[0]为"11" List<Source> src new List<Source>(); src.Add(new Source() { Name "1", Age 1, Description "1" }); src.Add(new Source() { Name "2", Age 2, Description "2"…

八种单例模式详解

亲爱的朋友们&#xff0c;大家好&#xff01; 今天是 CSDN博客之星 投票的开始日&#xff01;非常感谢你们在过去的时间里给予我无私的支持和鼓励&#xff0c;这一路走来&#xff0c;正是因为有你们的帮助&#xff0c;我才能不断进步&#xff0c;走得更远。 目前&#xff0c;…

STM32 PWM脉冲宽度调制介绍

目录 背景 PWM 模式 影子寄存器和预装载寄存器 PWM对齐模式 PWM 边沿对齐模式 向上计数配置 向下计数的配置 PWM 中央对齐模式 程序 第一步、使能GPIOB组、AFIO、TIM3外设时钟 第二步、输出通道端口配置​编辑 第三步、定时器配置产生频率 第四步、PWM输出配置 第…

Java面试第二山!《计算机网络》!

在 Java 面试里&#xff0c;计算机网络知识是高频考点&#xff0c;今天就来盘点那些最容易被问到的计算机网络面试题&#xff0c;帮你轻松应对面试&#xff0c;也方便和朋友们一起探讨学习。 一、HTTP 和 HTTPS 的区别 1. 面试题呈现 HTTP 和 HTTPS 有什么区别&#xff1f;在…

deepseek-v3在阿里云和腾讯云的使用中的差异

随着deepseek在各大云商上线&#xff0c;试用了下阿里云和腾讯云的deepseek服务&#xff0c;在回答经典数学问题9.9和9.11谁大时&#xff0c;发现还是有差异的。将相关的问题记录如下。 1、问题表现 笔者使用的openai的官方sdk go-openai。 因本文中测验主要使用阿里云和腾讯…

蓝桥杯单片机基础部分——单片机介绍部分

前言 这个部分是额外的&#xff0c;我看我有的学弟学妹基础比较差&#xff0c;对板子上面的模块不太熟悉&#xff0c;这里简单的介绍一下 蓝桥杯单片机 这个就是蓝桥杯单片机的板子&#xff0c;它的主控芯片是&#xff08;IAP15F2K61S2&#xff09;&#xff0c;这里就对他常用…

百度搜索和文心智能体接入DeepSeek满血版——AI搜索的新纪元

在当今数字化时代&#xff0c;搜索引擎作为互联网信息获取的核心工具&#xff0c;正经历着前所未有的变革。据悉&#xff0c;2025年2月16日&#xff0c;百度搜索和文心智能体平台宣布全面接入DeepSeek和文心大模型的最新深度搜索功能&#xff0c;搜索用户可免费使用DeepSeek和文…