7.8k 词
本文基于我的《从零学分析力学》《约束和拉格朗日方程》《机器人动力学—拉格朗日法》系列笔记。不满足于”会用 LagrangesMethod 出个方程”,而是把为什么是 L=T−V → 广义坐标怎么消掉约束力 → M/C/G 三个矩阵从哪来 → 电机减速器惯量折算 → 线性化与辨识这条链路用 SymPy 完整走一遍,所有代码均可在 SymPy 1.14 下直接运行验证。 为什么机器人动力学要符号推导手工推导 3 自由度以上的动力学方程几乎必错——我笔记里二连杆推到最后一行写的是”太难了不会”。这不是能力问题:拉格朗日法要求对动能 T 和势能 V 求一堆偏导再对时间求导,n 自由度的中间项以 $O(n^4)$ 增长,6 自由度机械臂的 M 矩阵展开后有几百项,人肉推导必然漏项。 机器人动力学的标准形式(也是控制里天天用的形式): $$M(q)\ddot{q} + C(q,\dot{q})\dot{q} + G(q) = \tau$$ $M(q)$:惯性矩阵,对称正定,只与位形有关; $C(q,\dot{q})\dot{q}$:科氏力 + 离...
6.9k 词
这份笔记本来是期末复习用的(同济版六章),重写时每条定理都补上”为什么”和机器人工程落点。因为学完线代你马上会撞上:旋转矩阵、雅可比、惯性张量、最小二乘标定、SVD、李雅普诺夫稳定性——全是线代。所有 numpy 代码可直接运行。 这门课在机器人里到底用在哪 线代概念 机器人落点 矩阵乘法 坐标变换复合:$T_{AC} = T_{AB}T_{BC}$ 正交矩阵 旋转矩阵 $R$,$R^TR = I$ 秩 雅可比矩阵降秩 = 奇异位形,IK 失效 特征值 线性系统稳定性、模态分析 二次型/正定 惯性张量主轴、李雅普诺夫函数 $V = x^TPx$ SVD/伪逆 最小二乘标定、阻尼最小二乘 IK 基变换 坐标系之间的坐标转换 第一章 行列式:面积、体积与”为什么不用克拉默”定义回顾:$n$ 阶行列式是所有排列的带符号乘积之和(逆序数定号),按行展开(代数余子式)是递归计算。几何意义:二阶行列式是平行四边形的有向面积,三阶是有向体积——这是理解”行列式为 0 ⇔ 退化”的关键:面积&#...
6.7k 词
速查表只能应付考试,工程上要的是”能算、能选型、能排障“。本文把模电/数电的关键概念全部落到可计算的层面:PN 结为什么是 0.7V → 续流二极管怎么选型(算一次感性关断尖峰你就懂了)→ 三极管开关的基极电阻怎么算 → 运放虚短虚断从环路增益推导 → 12 位 ADC 的量化误差与抗混叠滤波 → LDO 为什么烫手 → 补码与 Q 定点格式。所有算例都来自 RoboMaster 主控/电调这类真实硬件场景。 一、二极管:从 PN 结到续流保护PN 结:0.7V 是从哪来的P 区空穴多、N 区电子多,接触后载流子扩散形成内建电场,电场又驱动载流子漂移回去,动态平衡后留下一个没有自由载流子的耗尽层,两端出现内建电势 $V_{bi}$(硅约 0.7V)。外加正向电压抵消内建电场,耗尽层变薄,电流开始指数增长。 二极管电流服从 Shockley 方程: $$I = I_S\left(e^{V/(nV_T)} - 1\right), \quad V_T = \frac{kT}{q} \approx 26,\text{mV (300K)...
6.2k 词
教科书讲的是”逻辑地址 → 线性地址 → 物理地址”的完整链路,工程上你真正要回答的是另外四个问题:malloc 之后物理内存真的分配了吗(没有,要等到写)→ 我的机器人节点为什么被 OOM killer 杀了 → 为什么同样的代码第一次跑得慢第二次快 → 实时控制程序怎么避免缺页抖动。本文保留地址转换的内核主线,但把重点放在页表 walk、TLB、缺页、overcommit/OOM、page cache、多核缓存一致性这些你能直接观测和调优的地方,全部配可执行的命令和代码。 一、地址转换:分段的历史包袱四类地址与转换链 地址类型 说明 逻辑地址 段选择符 + 段内偏移(程序视角) 线性/虚拟地址 分段后的中间层,x86-64 下就是 48 位虚拟地址 物理地址 最终落到内存条上的地址 转换链:逻辑地址 →(分段,查 GDT/LDT)→ 虚拟地址 →(分页,查页表)→ 物理地址。 Linux 为什么”没有分段”x86-64 下段机制基本被废弃(只剩 FS/GS 用于线程局部存储),Linux 把所有段的基址设为 0...
ROS
9.5k 词
照着模板拼 URDF 只能得到”能显示”的模型;工程上你要的是”仿真行为可信“的模型。本文把建模背后被跳过的数学补上:joint origin 的 rpy 到底是什么旋转顺序 → 惯量张量怎么算、Fusion360 的数值为什么是错的(单位陷阱)→ transmission 减速比的力矩/速度换算 → xacro 参数化几何推导 → Gazebo 摩擦与阻尼调参 → 验证工具链。最后是 RoboMaster 云台/麦轮车这类实战模型的建模要点。 一、坐标变换:URDF 就是一棵 TF 树树形结构的本质URDF 里每个 <joint> 声明”child link 坐标系在 parent link 坐标系中的位姿“: 123456<joint name="yaw_joint" type="revolute"> <origin xyz="0 0 0.12" rpy="0 0 0"/> <!-- child 系原点在 parent 系中的...
6.3k 词
CAN 在汽车和机器人领域统治了三十年,靠的不是”快”,而是多主、非破坏性仲裁、强抗干扰、自愈错误处理这四个特性。本文从物理层讲起,把”为什么”讲透:差分信号为什么抗干扰 → 仲裁为什么是非破坏的 → 错误状态机怎么自愈 → SocketCAN 生产级代码 → RoboMaster M3508/C620 协议逐字节解析 → 1kHz 全车控制的带宽预算。读完你能自己算总线负载、自己写驱动、自己排故障。 物理层:差分信号与位时序为什么差分信号抗干扰CAN 用两根线 CAN_H / CAN_L 传输差分信号: 显性位(dominant,逻辑 0):CAN_H ≈ 3.5V,CAN_L ≈ 1.5V,差分 ≈ 2V 隐性位(recessive,逻辑 1):两线都 ≈ 2.5V,差分 ≈ 0V 显性覆盖隐性——这是仲裁机制的物理基础 接收端只关心 $V_{diff} = V_{CAN_H} - V_{CAN_L}$。外部电磁干扰(电机大电流、功率线)通常以共模方式同时叠加到两根线上,差分相减后抵消。这就是 CAN 敢跟功率线一起走线、在电机旁边跑 1...
6.8k 词
本文把”传感器 → 状态估计 → 现代控制”这条链路讲透:IMU 为什么纯积分必漂移 → 互补滤波本质是两个一阶滤波器的叠加 → 卡尔曼滤波为什么”最优” → LQR 为什么最后落到 Riccati 方程 → MPC 为什么能处理约束 → WBC 的零空间投影在干什么。全程结合 RoboMaster(M3508/C620、云台)与 rm_pid_tuner 自动调参系统的实战数据。不满足于”知道有这些方法”,而是让你拿到每个方法能写进代码、能解释现象的版本。 传感器链路:一切控制的地基IMU:为什么纯积分必漂移陀螺仪输出角速度 $\omega$,姿态角理论上就是积分: $$\theta(t) = \theta(0) + \int_0^t \omega(\tau),d\tau$$ 问题出在误差模型。MEMS 陀螺的输出近似: $$\tilde{\omega} = \omega + b + n$$ 其中 $b$ 是零偏(bias),$n$ 是白噪声。积分后: $$\theta_{est}(t) = \theta(t) + \underbra...
5.8k 词
调车不是玄学,是数据驱动的闭环:先记录 → 再分析 → 只改一个变量 → 复测。本文把 RoboMaster 步兵/哨兵从新车部署到赛前调参的完整流程讲透,结合 rm_pid_tuner(ROS 自动调参系统)的实际架构:部署检查清单每条为什么 → 电机/云台调试方法论(阶跃响应、扫频)→ 自动调参状态机 → rosbag 回放驱动的安全调车 → 故障排查路径 → 工程化保障(看门狗、日志、参数管理)。 调试方法论:三条铁律铁律 1:数据先行,先记录再分析调车前先问自己:这次改动要观察哪个指标? 没有记录就调参 = 凭感觉。正确姿势: 1234# 调车前录一段基线,调车后再录一段,对比才有意义rosbag record /chassis/cmd /chassis/state /gimbal/state -O before.bag --duration 15# 改参数、跑动作rosbag record /chassis/cmd /chassis/state /gimbal/state -O after.bag --duration 15 对比指标...
ROS
11k 词
从”照着教程搭出能动的车”升级为”理解每个环节为什么这么配、出问题怎么查”。URDF 的物理正确性、Gazebo 仿真与真实的差距、ros_control 硬件接口的实时语义、TF 时间同步、以及 ROS 主控与 STM32 的串口协议设计——每个环节都给出工程级写法和真实踩坑。 一、URDF 建模:物理正确性优先link 的三件套:visual / collision / inertial一个 link 有三个几何描述,用途完全不同,不能偷懒共用一个: 123456789101112131415<link name="base_link"> <!-- visual:显示用,可以用精细的 STL 网格 --> <visual> <geometry><mesh filename="package://my_pkg/meshes/base.stl"/></geometry> </visual> <!-- collisi...
ROS
8.5k 词
本文从”背概念”升级为”理解设计”。ROS 的每个核心概念(话题/服务/动作、命名空间、参数、时间、spin)背后都对应一个工程问题:为什么要设计成三种通信原语?queue size 到底是什么?为什么回调里不能 sleep?结合 rm_pid_tuner(ROS Noetic PID 自动调参系统)的实际开发经验,讲透这些机制在真实机器人上的行为与坑。 三种通信原语:数据流语义决定选型ROS 提供 Topic / Service / Action 三种通信方式,不是功能重复,而是三种截然不同的数据流语义: Topic 话题 Service 服务 Action 动作 模式 发布/订阅 请求/响应 请求/响应 + 反馈 同步性 异步,发布者不等订阅者 同步阻塞(有超时) 异步,可抢占 数据流 连续流(雷达、里程计、图像) 一次性事务(拍照、设置参数) 长时任务(导航到点、执行轨迹) 拓扑 多对多 一对多(一个 server) 一对多 失败语义 丢帧(订阅者慢就丢) 超时/...