899 词
关于学习方法、效率工具和成长心得的一些记录。 高效学习建议费曼学习法 选择一个概念 尝试用最简单的语言教给别人 发现解释不清的地方 → 回去重新学习 简化和类比 “If you can’t explain it simply, you don’t understand it well enough.” 记笔记的原则 不要搬运:用自己的话重述,而不是复制粘贴 建立关联:把新知识和已有知识连接 定期回顾:间隔重复比一次性学完有效得多 工具推荐Markdown 折叠1234<details><summary>点击展开</summary>折叠的内容写在这里。</details> Git 工作流12345678# fork 后同步上游git remote add upstream <原仓库地址>git fetch upstreamgit merge upstream/main# 拉取别人的分支git fetch origin their_branchgit checkout -b my_branch origin/the...
1.5k 词
STM32 开发从环境搭建到 PCB 设计的入门指南。 环境搭建CubeMXSTM32CubeMX 是 ST 官方的图形化配置工具,用于引脚分配、时钟树配置和中间件设置。 选择 MCU 型号 配置引脚功能(GPIO、USART、CAN、PWM 等) 设置时钟树 生成初始化代码(支持 HAL 库和 LL 库) 开发工具链 Keil MDK:商用 IDE,STM32 官方推荐 STM32CubeIDE:基于 Eclipse,免费 VS Code + PlatformIO:开源方案 GPIO 基础123456// 初始化HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); // 输出高电平HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); // 输出低电平// 读取GPIO_PinState state = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1); 使用 GPIO 控制电机时注意:STM32 的 GPIO 输出电流有限,大功率设备需...
1.7k 词
用 SymPy 进行机器人动力学的符号推导,避免手工计算出错。覆盖分析力学基础、拉格朗日方程和约束处理。 环境安装1pip install sympy 验证: 1234import sympy as spsp.init_printing()x = sp.Symbol('x')sp.diff(sp.sin(x), x) # → cos(x) 从零学分析力学广义坐标描述系统位形所需的最少独立变量。n 个自由度 → n 个广义坐标 $q_1, q_2, …, q_n$。 约束 完整约束:$f(q_1, …, q_n, t) = 0$(如连杆长度恒定) 非完整约束:不可积分为完整约束的约束(如纯滚动条件) 虚功原理系统平衡时,所有主动力在虚位移上所做的虚功之和为零: $$\sum_i \mathbf{F}_i \cdot \delta \mathbf{r}_i = 0$$ 达朗贝尔原理将动力学问题转化为静力学问题: $$\sum_i (\mathbf{F}_i - m_i \ddot{\mathbf{r}}_i) \cdot \delta ...
2k 词
深入理解 Linux 内核内存管理:逻辑地址 → 线性地址 → 物理地址的完整转换过程。 地址类型总览 地址类型 说明 虚拟地址 由段选择符 + 段内偏移组成,不能直接访问物理内存 逻辑地址 程序产生的段内偏移地址 线性地址 虚拟地址经分段变换后的中间层,处理器可寻址 物理地址 最终的内存单元地址 转换流程:逻辑地址 → 分段(查段表)→ 线性地址 → 分页(查页表)→ 物理地址 分段机制段描述符每个段由一个 8 字节的段描述符表示,包含段的基址、限长、优先级等属性: 字段 描述 Base 段首字节线性地址 G 粒度标志(0=字节,1=4096 字节) Limit 段长度 S 描述符类型(0=系统段,1=数据/代码段) DPL 特权级(0=内核,3=用户) 门描述符存放指向过程入口点的指针: 任务门:任务切换 中断门:调用中断处理程序 陷阱门:调用异常处理程序 调用门:在不同特权级间实现受控的程序控制转移 段选择符8 字节长,由 index、TI(表...
893 词
SLAM 基础概念、KD 树加速搜索和视觉图像处理入门。 SLAM 基础SLAM(Simultaneous Localization and Mapping),同时定位与建图。 经典框架 传感器信息读取:相机/激光雷达数据采集与预处理 前端里程计:估算相邻帧之间的运动 后端优化:处理里程计误差和回环检测信息,优化全局地图 回环检测:判断是否到达过先前位置 建图:根据轨迹建立地图 传感器方案 传感器 优势 局限 单目相机 成本低、结构简单 缺少绝对尺度 双目相机 可通过基线计算深度 算力要求高 RGB-D 相机 直接获取深度 室外受阳光干扰 激光雷达 精度高、稳定 成本高、信息稀疏 FAST-LIO2 基于迭代卡尔曼滤波的 LiDAR-惯性里程计 融合 IMU 和激光雷达数据 实时性好,适用于无人机和移动机器人 三维空间刚体运动旋转表示 旋转矩阵 $R \in SO(3)$:$3\times3$ 正交矩阵,$\det R = 1$ 欧拉角:roll/pitch/yaw,直观但有万向锁 四元数:无奇异性,适合插值 ...
1k 词
模电和数电的关键知识点速查,涵盖二极管、三极管、运放和数制编码。 一、模拟电路二极管 单向导电性:正向导通,反向截止 PN 结:P 型半导体与 N 型半导体的接触面 正向压降:硅管约 0.7V,锗管约 0.3V 三极管(BJT) 三种工作状态:截止、放大、饱和 NPN 型:$I_C = \beta I_B$ 三个极:基极(B)、集电极(C)、发射极(E) 放大电路基本共射放大电路:信号从基极输入、集电极输出。 分析方法: 静态分析(直流):确定 Q 点($I_{BQ}, I_{CQ}, V_{CEQ}$) 动态分析(交流):计算 $A_v, R_i, R_o$ 多级放大电路级联方式:阻容耦合、直接耦合、变压器耦合 $$A_v = A_{v1} \times A_{v2} \times \cdots \times A_{vn}$$ 集成运放理想运放特性: 开环增益无穷大:$A_{od} \rightarrow \infty$ 输入阻抗无穷大:$R_{id} \rightarrow \infty$ 输出阻抗为零:$R_o \rightarrow 0$ ...
1.5k 词
来自实际机器人开发和调试的经验总结,涵盖常见问题排查、开发流程和实用技巧。 开发流程新车部署检查清单 网口配置:确认工控机与路由器/交换机 IP 在同一网段 CAN 通信:candump can0 确认能收到电机数据 IMU 校准:消除零偏 遥控器配对:DJI 遥控器校准 自启脚本:确保开机自动启动核心节点 常用自启方式12345678910111213# systemd service 示例[Unit]Description=Robot Core ServiceAfter=network.target[Service]Type=simpleUser=robotExecStart=/home/robot/start.shRestart=on-failure[Install]WantedBy=multi-user.target 电机调试PID 调参经验 先 P 后 I 最后 D Kp 从小往大调,直到出现轻微振荡再回退 Ki 消除静差,不宜过大 Kd 从零开始一点一点加 常见电机参数 GM6020:云台电机,内置驱动器,CAN 通信 最大力矩计算:$T_{max} ...
2.1k 词
CAN(Controller Area Network)是机器人中最常用的现场总线之一。本文涵盖 CAN 协议基础、SocketCAN 编程及常用调试工具。 CAN 总线基础特点 多主模式:任意节点可在总线空闲时发送 仲裁机制:ID 越小优先级越高(非破坏性仲裁) 差分信号:CAN_H 和 CAN_L,抗干扰强 错误检测:CRC 校验、位错误、填充错误等 帧格式 帧类型 用途 数据帧 发送数据(标准帧 11bit ID,扩展帧 29bit ID) 远程帧 请求数据 错误帧 检测到错误 过载帧 通知需要延时 CAN 命令速查123456789101112# 查看 CAN 接口ip link show# 设置波特率并启动sudo ip link set can0 type can bitrate 1000000sudo ip link set up can0# 发送数据cansend can0 123#11223344AABBCCDD# 接收数据candump can0 SocketCANLinux 内核提供的 CAN 编程接口,将 CAN 设备抽象为网...
1.4k 词
涵盖机器人常用传感器、编码器、以及现代控制方法(WBC、LQR、MPC)。 惯性传感器(IMU)IMU(Inertial Measurement Unit)测量物体的角速度和加速度,通过积分得到姿态、速度和位置。 组成 加速度计:测量线加速度(含重力分量) 陀螺仪:测量角速度 磁力计(部分 IMU 包含):测量地磁场,用于修正航向角 姿态解算从角速度积分得到姿态角(欧拉角/四元数),但纯积分存在漂移。通常使用互补滤波或卡尔曼滤波融合加速度计和陀螺仪数据。 编码器编码器测量电机转动角度和速度,分为: 增量式:输出脉冲信号,需要累计计数(断电后丢失位置) 绝对式:直接输出绝对角度值(断电不丢失) 编码器数据通过硬件接口(CAN/串口)读取,经过减速比换算得到关节实际角度。 传感器数据分析机器人系统中常见传感器数据处理: 低通滤波:去除高频噪声 移动平均滤波:平滑数据,减少毛刺 中值滤波:去除脉冲噪声 卡尔曼滤波:多传感器融合的最优估计 现代控制方法LQR(线性二次型调节器)适用于线性系统的最优控制。通过求解 Riccati 方程得到状态反馈增益矩阵 ...
1.5k 词
从正逆运动学到拉格朗日动力学,再到常见底盘轮系分析。 正逆运动学坐标系建立(DH 参数法)机器人关节一般为转动关节或平动关节。基座为惯性坐标系,末端为工具坐标系。 关节命名规则(i, i+1, i+2): Z 轴:以平动/转动方向为 Z 轴 X 轴:两条 Z 轴共同垂直的直线为 X 轴 四个 DH 参数: αᵢ:将 Zᵢ₊₁ 沿 Xᵢ 平移至与 Zᵢ 相交的角度 aᵢ:Zᵢ 轴到 Zᵢ₊₁ 轴的距离 θᵢ:将 Xᵢ₊₁ 沿 Zᵢ₊₁ 平移至与 Xᵢ 相交的角度 dᵢ:Xᵢ 轴到 Xᵢ₊₁ 轴的距离 正运动学给定各关节角度,求末端位姿: $$T_n^0 = A_1 A_2 \cdots A_n$$ 其中 $A_i$ 是相邻连杆的齐次变换矩阵。 逆运动学给定末端位姿,求各关节角度。通常比正运动学复杂,存在多解/无解的情况。 拉格朗日动力学拉格朗日法从能量角度建立动力学方程,避免了牛顿-欧拉法中复杂的力分析。 拉格朗日函数$$L = K - P$$ K:系统动能 P:系统势能 拉格朗日方程$$\frac{d}{dt}\frac{\pa...