Datawhale 算法笔记 AI硬件与机器人大模型 (一)
具身智能(Embodied AI),指的是能够通过物理身体(如机器人、自动驾驶汽车等)在真实世界中进行感知、交互和学习的智能系统。它强调智能体必须拥有一个“身体”(Body),并通过这个身体与环境互动,从而获得对世界更深层次、更符合物理规律的理解。
本文是用llm在我的笔记上进行润色的
学习内容与主题
-
具身智能基础与机器人控制
-
具身智能概述与发展
-
PID 控制算法实现
-
机器人运动学基础
第一章:学习收获与总结
问题一:什么是“具身智能”(Embodied AI),它与“非具身”的人工智能有何区别?
-
课程定义 具身智能(Embodied AI),指的是能够通过物理身体(如机器人、自动驾驶汽车等)在真实世界中进行感知、交互和学习的智能系统。它强调智能体必须拥有一个“身体”(Body),并通过这个身体与环境互动,从而获得对世界更深层次、更符合物理规律的理解。
-
个人理解 我认为其核心在于:智能体必须拥有一个能够影响物理世界的实体,并且能够通过与环境的持续交互来提升自身智能。
问题二:PID 控制器的三个参数(Kp, Ki, Kd)分别起到什么作用?
课程以经典的 “倒立摆”(CartPole) 问题为例,其动力学模型在 OpenAI Gym 的 CartPole-v1
环境中得到了标准化实现。这个模型基于牛顿力学,旨在精确描述施加一个力之后,系统(小车和摆杆)的动态变化。
-
控制目标 同时控制两个变量:保持杆子竖直(角度 θ 趋近于 0)并且小车稳定在轨道中心(位置 x 趋近于 0)。
-
系统状态与输入
-
系统输入 (Input): 施加在小车上的水平力 F。这是我们唯一可用的控制手段。
-
系统状态 (State): 系统的状态是一个包含四个变量的向量:[x,x˙,θ,θ˙],分别代表小车位置、小车速度、摆杆角度和摆杆角速度。控制器的目标就是根据当前状态计算出合适的力 F,使系统最终稳定在 [0,0,0,0] 的平衡状态。
-
-
PID 控制器代码分析 课程中的代码实际上将倒立摆的控制任务分解为两个独立的 PD 控制器:一个用于控制小车的位置 x,另一个用于控制摆杆的角度 θ。最终施加在小车上的力是这两个 PD 控制器输出的线性叠加。其核心是计算当前偏差 (bias) 和偏差的变化率 (d_bias)。
Python# 控制小车位置的 PD 控制器 def pid_cart(self, position): bias = position d_bias = bias - self.bias_cart_1 balance = self.kp_cart * bias + self.kd_cart * d_bias self.bias_cart_1 = bias return balance # 控制摆杆角度的 PD 控制器 def pid_pole(self, angle): bias = angle d_bias = bias - self.bias_pole_1 balance = -self.kp_pole * bias - self.kd_pole * d_bias self.bias_pole_1 = bias return balance
实验结果: PID 控制器成功地完成了任务,但相比于 LQR 和 MPC 等更复杂的控制器,小车的振荡和超调现象更明显。
-
PID 各参数作用详解
PID 控制器通过综合考量当前误差、历史累计误差以及未来误差的趋势,计算出一个最优的控制输出,驱动系统状态尽快达到并稳定在期望值。
误差 (Error) = 目标值 (Setpoint) - 当前值 (Process Variable)
-
P (Proportional) - 比例项:关注现在 P 部分是 PID 的核心,其输出与当前误差成正比,是产生控制作用的主要驱动力。例如,当摆杆向右倾斜(θ0),P 控制器会产生一个反向(向左)的力,试图将其推回垂直位置。倾斜角度越大,施加的力就越大。
-
D (Derivative) - 微分项:预测未来 D 部分关注的是误差的变化率,即误差变化的速度。它通过预测误差的未来趋势来提前做出反应,可以理解为系统的“阻尼器”或“稳定器”。
-
如果误差正在快速增大,D 项会施加一个强大的阻力,抑制其增长。
-
如果误差正在减小(系统正朝目标靠近),D 项会适时“踩刹车”,以防止系统冲过目标值,即抑制超调。
-
-
I (Integral) - 积分项:回顾过去 I 部分关注的是误差随时间的累积。它会累加过去所有时刻的误差。其主要作用是消除稳态误差。
-
在某些仅有 PD 控制的系统中,系统可能最终稳定在一个有微小、持续误差的位置上(例如小车偏离中心 1cm),因为此时 PD 的输出刚好与系统受到的阻力平衡。
-
而 I 控制器会因为这持续存在的 1cm 误差不断累积其输出,直到产生的力足以彻底消除这点误差,让小车精确地回到中心。
-
-
关于本次代码中积分项 (I) 的缺失: 在倒立摆控制代码中并未使用积分项(I)。这是因为倒立摆是一个开环不稳定系统,如果长时间无法达到目标状态,积分项的累积误差可能会导致输出过大(积分饱和),反而会破坏系统的稳定性。
-
机器人运动学基础(复习)
1. 手眼标定 (Hand-Eye Calibration)
-
定义: 求解机器人末端执行器(“手”)与相机(“眼”)之间的相对位姿关系。其目标是获得一个齐次变换矩阵 X,从而统一视觉坐标系与机器人坐标系,实现“手眼协同”。
-
分类: 根据相机安装位置,分为“眼在手上 (Eye-in-Hand)”和“眼在手外 (Eye-to-Hand)”。
-
标定原理:AX=XB 该方程是手眼标定的核心。
-
A:机器人末端(手)在两次不同位姿之间的相对运动变换矩阵。
-
B:相机(眼)观察到的标定板在相应两次位姿之间的变换矩阵。
-
X:待求解的“手眼变换矩阵”,即相机坐标系相对于末端执行器坐标系的变换。
-
-
求解方法: 求解该方程的经典方法是“两步法”(如 Park 和 Martin 的方法),即先求解旋转部分,再求解平移部分。其中,旋转矩阵的求解是难点,通常需要利用李群的伴随性质将其转换为更易于求解的线性方程。OpenCV 中已经内置了相应的手眼标定函数。
2. 正/逆运动学
(这部分内容在课程中未详细展开,作为个人知识复习)
-
正运动学 (Forward Kinematics): 已知机器人各个关节的角度,计算末端执行器的位姿(位置和姿态)。
-
逆运动学 (Inverse Kinematics): 已知末端执行器的期望位姿,反向求解机器人各个关节需要达到的角度。
-
雅可比矩阵 (Jacobian Matrix): 雅可比矩阵建立了关节空间速度与笛卡尔空间末端执行器速度之间的线性映射关系,是机器人速度控制和力控制中的核心概念。
更多推荐
所有评论(0)