- 博客(164)
- 收藏
- 关注
原创 第九篇:Stabilize / Acro / AltHold 源码走读 — 从最简单的三个模式入门
这一讲,我们挑三个最简单的模式,逐行读它们的 `run()`。这三个模式都靠手飞,区别只在"油门和高度谁管",是理解所有自动模式的地基
2026-08-20 13:25:03
15
原创 第八篇:飞行模式架构与切换机制 — 多态如何驱动整架飞机
这一篇,我们往上走一层——飞行模式。它是 ArduPilot 里最优雅的设计:一个指针,切换出几十种完全不同的飞行行为
2026-08-20 13:23:50
20
原创 第七篇:电机混控与执行 — 从四个数字到每个电机的转速
控制器算出了 roll_out, pitch_out, yaw_out, throttle_out 四个数字。但你可能有 4 个、6 个、8 个电机。这四个数字怎么"翻译"成每个电机的 PWM 信号?这就是混控矩阵(Motor Mixer)的工作。
2026-08-20 13:20:55
9
原创 第六篇:AC_PID 控制器源码详解 — 飞控最核心的一行算法
这一篇,我们把最内层、也是被调用最频繁的那个算法——AC_PID,拆开看个透彻。理解了它,你就理解了整个飞控的"手感"是怎么来的
2026-08-20 13:19:42
13
原创 第五篇:串级控制详解 — 从目标位置到电机推力的完整链条
这篇是飞控的精华:四层 PID 如何层层嵌套,把"我想往东飞"翻译成"右前电机加 15% 转速"
2026-08-20 13:18:51
12
原创 第四篇:传感器与EKF — 无人机怎么“知道“自己在哪
陀螺仪、加速度计、GPS、气压计、罗盘——每个都有短板,EKF(扩展卡尔曼滤波)把它们融合在一起
2026-08-20 13:17:01
21
原创 第二篇:目录结构与文件功能详解 — 代码摆在哪里
这一篇把代码的"地图"完整展开——每个文件夹和文件是干什么的。当你需要在几十万行代码里快速定位某个功能时,这份文档就是你的地图。
2026-08-20 13:13:08
19
原创 第一篇:工程结构与入口点 — 从 main 到 init_ardupilot
让你从一个 C++ 文件都不会读,到能看懂 ArduPilot 的"第一口代码"
2026-08-20 13:10:30
11
原创 ArduPilot 旋翼无人机(Copter) 总览与代码运转逻辑梳理
本文档基于对 ArduPilot 源代码仓库的深度分析,从飞控工程师的视角抽丝剥茧,梳理代码的整体架构和核心运转逻辑。
2026-08-20 12:40:55
477
转载 常用地图结构和基础知识
1、Occupancy grid map 占用栅格图最稠密--每隔一个距离就要进行切分(当每个格子切的比较小也就是分辨率比较大的时候,内存非常大) 结构化 坐标索引查询,O(1)https://github.com/ANYbotics/grid_map2、Octo-map 八叉树地图环境中没有障碍物的地方,就用大的方块表示,当大方块里面有小部分有障碍物,就递归地切分下去,直到包含了障碍物为止。稀疏的 结构化 非直接索引查询https://octomap.github.io
2020-12-09 10:28:49
6679
1
转载 VIO-SLAM中的欧拉积分、中点积分与龙格-库塔积分
在 SLAM 系统中经常用到各种不同的数值积分方法,工程上最常见的有三种:欧拉积分(Euler method)、中点积分(Midpoint method)和龙格-库塔法积分(Runge–Kutta methods)。他们的区别就是如何用数值方法模拟一个斜率。这里简单总结如下:一、欧拉积分设有如下微分方程:y′(t)=f(t,y(t))y'(t)=f(t,y(t))y′(t)=f(t,y(t))并且 tnt_ntn 和 tn+1t_{n+1}tn+1 时刻的差为 tn+1−tn=Δtt_{
2020-08-25 22:28:33
3741
转载 视觉SLAM常见的矩阵分解方式求解最小二乘问题(OR、LTLD、Cholesky、SVD)
关于这个问题的内容比较多,也整理了相当一段时间,在写内容之前,我需要引用一些牛人的名人名言,以壮士气。(1)故不积跬步,无以至千里;不积小流,无以成江海-荀子(2)只收藏,不点赞的同学,人心都是肉长的。。。地主家也没有余粮啊。。。我想说的是。。。不赞不是好码农-马克.wangshuai(纯粹copy)内容一首先直接给出AX=B解的情况:(1)R(A)< r(A|B),方程组无解(2)r(A)=r(A|B)=n,方程组有唯一解(3)r(A)=r(A|B) < n,方程组有无穷解
2020-08-25 22:00:08
2528
转载 视觉惯性里程计VIO综述
参考:https://blog.youkuaiyun.com/xiaoxiaowenqiang/article/details/81192045目前主流的VIO开源方案主要有以下几类,按照相机与IMU的耦合方式可分为松耦合和紧耦合,按照后端优化方案又可分为滤波优化和非线性优化。崔华坤老师有做过总结,详情可见老师github:https://github.com/StevenCui/VIO-Doc更新:VI-ORB ——> ORB-SLAM3ROVIO ——> ROVIOLI、Maplab目录V
2020-08-25 20:39:15
12129
转载 ROS机器人总结
ROS 教程1 机器人操作系统 基础知识 节点 话题 消息 服务 行动 参数 日志 TF变换 目标结构 启动文件ROS 教程2 机器人雷达建图 蒙特卡洛定位 导航 路径规划 仿真ROS 教程3 机器人语音 语音识别理解合成控制 ASR NLU TTSROS 教程4 机器人视觉识别控制 OpenCV OpenNI2 PCL 2D 3D目标检测 目标跟踪object tracking人体跟踪person followin...
2020-08-25 15:05:11
633
原创 开源 VIO SLAM 算法解析
VINS-FusionVINS-FUSION源码框架及C++知识点总结MSCKF-VIOMSCKF-VIO源码框架及C++知识点总结
2020-08-24 14:45:46
1377
1
转载 MSCKF那些事-知乎转载
MSCKF那些事(一)MSCKF算法简介MSCKF那些事(二)S-MSCKF试用与源码解析MSCKF那些事(三)算法详解1:前端特征跟踪MSCKF那些事(四)算法详解2:数学基础MSCKF那些事(五)算法详解3:IMU PropagationMSCKF那些事(六)算法详解4:State AugmentationMSCKF那些事(七)算法详解5:Measurement UpdateMSCKF那些事(八)算法改进1:双目扩展与外参在线标定MSCKF那些事(九)算法改进2:时间同步与同步误差估计.
2020-08-22 10:02:33
756
转载 激光雷达和相机联合标定
相机内参标定相机内参标定工具:相机内参由autoware_camera_calibration脚本获得的,该脚本是官方ROS标定工具的一个分支(即ROS Camera Calibration Tools)。 这部分的理论知识和标定工具的使用方法可参考我之前写过的一篇博客,传送门(讲解了在ROS下进行相机内参标定和去畸变方法)。相机-LIDAR联合标定目前已知四种标定工具:分别为:Autoware,apollo,lidar_camera_calibration,but_velodyne详见激光
2020-08-21 17:59:01
1180
原创 kalibr正确安装(踩坑指南)
/home/ahundt/src/kalibr_ws/src/kalibr/Schweizer-Messer/numpy_eigen/include/numpy_eigen/NumpyEigenConverter.hpp:20:32: fatal error: numpy/arrayobject.h: No such file or directory ln -s /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy /usr/.
2020-08-15 12:35:27
2342
1
原创 pcl_conversions文件缺失问题
之前ubuntu kinetic环境下安装过pcl-1.7 ,后来因为项目需要重新卸载安装了pcl-1.8,主要卸载命令有:sudo rm -r /usr/include/pcl-1.7 /usr/share/pcl /usr/bin/pcl* /usr/lib/libpcl*sudo apt-get --purge remove libpcl-dev项目编译时发现学要pcl_ros 和pcl_conversions库,PCL1.7中应该是默认安装有的,主要在根目录/opt/ros/kinetic
2020-07-29 12:20:24
4329
1
原创 C++
参考:C++经典面试题(最全,面中率最高)delete和delete[]的用法?关于动态申请的内存,分两种情况:基本数据类型的分配和自定义数据类型的分配。两者不同。1、基本数据类型对于基本数据类型,假如有如下代码int *a = new int[10];…delete a; // 方式1delete [ ] a; //方式2肯定会不少人认为方式1存在内存泄露,然而事实上是不会!针对简单的基本数据类型,方式1和方式2均可正常工作,因为:基本的数据类型对象没有析构函数,并且ne
2020-06-23 13:24:13
282
转载 SLAM中的零空间问题
https://blog.youkuaiyun.com/fb_941219/article/details/100279527https://blog.youkuaiyun.com/wubaobao1993/article/details/105106301/
2020-06-22 15:29:05
534
转载 手写VIO课后习题
https://blog.youkuaiyun.com/weixin_42361804/category_9729018.html
2020-06-20 17:53:55
384
1
原创 C++重要知识点整理
参考:http://c.biancheng.net/view/2201.htmlhttps://www.runoob.com/cplusplus/cpp-interfaces.html文章目录一、从C语言到C++C++ inline内联函数C++ 重载运算符和重载函数二、类和对象C++构造函数C++ this指针C++ static静态成员变量C++ static静态成员函数C++ const成员变量和成员函数(常成员函数)C++友元函数和友元类(C++ friend关键字)C++ class和str
2020-06-20 13:17:22
1490
转载 C++11常用新特性快速一览
https://blog.youkuaiyun.com/jiange_zh/article/details/79356417
2020-06-19 22:34:07
293
原创 PL-SLAM
1、PL-VIOPL-VIO是在VINS-Mono的基础上,添加了线特征,并且取得了不错的效果.缺点是线特征的提取匹配所需要的时间比较长.github: https://github.com/HeYijia/PL-VIO论文:PL-VIO: Tightly-Coupled Monocular Visual-Inertial Odometry Using Point and Line Features.注释:https://www.cnblogs.com/feifanrensheng/articles
2020-06-18 22:11:37
998
原创 LSD直线提取算法
LSD(Line Segment Detector)直线提取算法http://www.mamicode.com/info-detail-2149883.html
2020-06-18 16:56:20
707
转载 map与unordered_map的区别
内部的原理实现:map:【头文件为#include】map内部是一颗红黑树(非严格平衡二叉树),红黑树有自动排序的功能,所以map内部的所有元素都是有序的,红黑树的每一个节点都代表这map的一个元素。因此对map进行插入、删除、查找等操作都是相当于对红黑树进行操作。最后根据树的中序遍历可以将键值按照大小顺序遍历出来。unordered_map:【头文件#include<unordered_map>】unordered_map内部是一个哈希表(散列表,把关健值映射到哈希表中的某一个位置,这样查
2020-06-11 10:56:47
384
转载 工业机器人的算法概述
工业机器人的算法分为感知算法和控制算法,更进一步细分为环境感知算法 ,路径规划和行为决策算法(ai),运动控制算法,后两个也可以统称为控制算法环境感知算法获取环境各种数据(机器人视觉和图像识别),定位机器人的方位(slam),对于固定工位的机器人来说,环境感知算法往往不是必须的,但是,对于另一类机器人来说,比如扫地机器人,基本就是一个slam算法,行为决策和运动控制算法及其简单可以忽略机器人自身的运动控制算法是机器人制造厂家的研发重点,主要就是提高机器人行动的精度,稳定性和速度,这个一半靠pid伺服电机
2020-06-07 10:10:31
3490
原创 PX4&GAAS
PX4源码:https://github.com/PX4/FirmwareQGroundControl安装教程:https://docs.qgroundcontrol.com/en/getting_started/download_and_install.htmlGASS:https://gaas.gitbook.io/guide/software-realization-build-your-own-autonomous-drone/gaas-zong-lan猪猪的博客:https://blo
2020-06-03 20:13:37
551
原创 PX4编译时容易出现的两个问题
一、在配置px4/Firmware时,编译make时报错:CMake Error: The following variables are used in this project, but they are set to NOTFOUND.Please set them or make sure they are set and tested correctly in the CMake files:GSTREAMER_LIBRARIES (ADVANCED) linked by targe
2020-06-03 12:16:34
5074
2
原创 PixHawk飞控和Mission Planner地面站安装调试
常用地面站软件主要有QGroundControl和MissionPlanner两种下面以mission planner来介绍如何使用地面站软件进行固件升级和传感器校准一、PixHawk飞控配置www.pixhawk.comPixHawk官网:http://www.pixhawk.com/1.1 硬件配置主处理器:32位STM32F427,主频168 MHz ,256 KB RAM,2 MB Flash备用处理器:独立供电32位STM32F103故障保护协处理器传感器:双 3轴加速度计(
2020-06-01 21:57:23
6342
1
原创 史上最浅显易懂的Git教程!
**史上最浅显易懂的Git教程!**摘自廖雪峰的官方网站为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指,就是简单得一笔带过,或者,只支离破碎地介绍Git的某几个命令,还有直接从Git手册粘贴帮助文档的,总之,初学者很难找到一个由浅入深,学完后能立刻上手的Git教程。既然号称史上最浅显易懂的Git教程,那这个教程有什么让你怦然心动的特点呢?首先,本教程绝对面向初学者,没有接触过版本控制概念的读者也可以轻
2020-05-28 01:30:47
294
转载 基于Doxygen的C/C++注释原则
基于Doxygen的C/C++注释原则文章目录总述1. 文件头的标注2.命名空间3. 类、结构、枚举标注4. 函数注释原则5. 变量注释6. 模块标注7. 分组标注总述//---------------------------------------------------------------------------// Platform Defines//--------------------------------------------------------------------
2020-05-27 12:21:09
305
原创 常见滤波汇总(KF、EKF、UKF和PF)
推荐给卡尔曼滤波还不太清楚的朋友们,配合着代码看完一定会有收获的无人驾驶技术入门(十三)| 手把手教你写卡尔曼滤波器无人驾驶技术入门(十八)| 手把手教你写扩展卡尔曼滤波器无人驾驶技术入门(十九)| 手把手教你实现多传感器融合技术无人驾驶技术入门(二十)| 手把手教你用粒子滤波实现无人车定位期间所有的代码:https://github.com/Super-Iron-Man/KalmanFilter...
2020-05-26 23:43:38
4256
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅