
ardupilot
文章平均质量分 87
仗剑走代码
一看就会,一写就废
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Ardusub使用CAN控电机资料汇总
本文汇总了Ardupilot开发中与CAN总线相关的配置参数及协议说明,涵盖了DroneCAN/UAVCAN、ToshibaCAN、KDECAN等多种协议的适用场景与硬件匹配建议。详细解析了节点ID分配规则、波特率设置、舵机/电调控制信号传输方式等关键配置,并提供了SLCAN适配器的接口配置方法。适用于无人机开发者进行CAN总线设备连接与调试,包含硬件选择、参数联动设置及故障排查技巧等实用信息。原创 2025-05-28 11:21:40 · 552 阅读 · 0 评论 -
Ardusub中添加自定义控制器
将自定义控件变量的最大数量增加 1 ,在文件AC_CustomControl.h中,找不到就全局搜索一下;当前自定义控制器总共有:NONE,EMPTY,PID 共3中,但是从0开始,因此CUSTOMCONTROL_MAX_TYPES默认值为2,现在多增加了一种ADRC,所以要把CUSTOMCONTROL_MAX_TYPES定义为3,如:在AC_CustomControl文件夹下添加,我添加文件夹名为AC_ADRC,AC_ADRC文件下为AC_ADRC.h,AC_ADRC.cpp。原创 2024-11-07 10:00:57 · 1477 阅读 · 0 评论 -
ArduSub程序学习(11)--EKF实现逻辑⑤
状态更新和卡尔曼增益的计算我选择一个进行举例。原创 2024-09-30 16:01:44 · 1129 阅读 · 0 评论 -
ArduSub程序学习(11)--EKF实现逻辑④
UpdateStrapdownEquationsNED() 函数在 NavEKF2_core 类中扮演着关键角色,负责使用惯性测量单元(IMU)提供的增量角度和增量速度数据,更新滤波器的姿态、速度和位置状态。这一过程涉及从机体坐标系到导航坐标系(NED,北、东、地)的转换,并考虑地球旋转的影响原创 2024-09-30 09:00:00 · 877 阅读 · 0 评论 -
ArduSub程序学习(11)--EKF实现逻辑③
EKF的五大主要步骤状态预测(State Prediction)协方差预测(Covariance Prediction)卡尔曼增益计算(Kalman Gain Calculation)状态更新(State Update)协方差更新(Covariance Update)原创 2024-09-29 15:36:39 · 1425 阅读 · 0 评论 -
ArduSub程序学习(11)--EKF实现逻辑②
该函数不仅处理 EKF 的预测和状态更新,还管理多个 EKF 核心的选择和切换,以应对不健康或误差较大的核心。截止目前是卡尔曼的初始化,我们总结下:开始进行计算我们的飞控有几组IMU,根据IMU数,就创建多少用于进行EKF2处理的对象,然后根据创建的不同的IMU对象进行传感器初始化。这个函数的核心功能是设置并启动 EKF2 滤波器,包括内存分配、滤波器核心设置以及与惯性测量单元 (IMU) 的关联。:对所有可用的 IMU 核心进行初始化,检查是否每个核心都成功初始化。如果任意一个核心初始化失败,则返回。原创 2024-09-29 11:29:51 · 961 阅读 · 0 评论 -
ArduSub程序学习(11)--EKF实现逻辑①
更新DCM时,可以利用传感器(如加速度计、磁力计等)的测量值,计算与当前DCM表示的姿态之间的误差,并据此调整陀螺仪读数。通过这种方式,DCM能够起到校正漂移的作用,确保姿态估计的准确性。由于DCM计算效率高,姿态估计在短期内较为准确,EKF可以使用DCM的估计值作为其初始状态,逐渐根据传感器数据和预测模型进行更复杂的修正。更新DCM(方向余弦矩阵,Direction Cosine Matrix)的作用是保持和更新飞行器或自主车辆的姿态信息,使得其在三维空间中的朝向能够持续精确地被估计和修正。原创 2024-09-26 16:03:01 · 984 阅读 · 0 评论 -
ArduSub程序学习(10)--位置控制和导航
函数是一个航点导航更新函数,用于在航点导航过程中更新目标位置、速度以及控制输出。这个函数的主要功能是更新当前的导航状态,并通过调用相关控制器的方法来实现无人机或机器人的移动控制。这是飞控系统中的一个核心函数,负责根据航点导航任务调整姿态、速度和位置,确保飞行器安全稳定地向目标航点移动。,这段代码实现了 PID 控制算法的核心逻辑,能够根据目标和测量的输入动态调整控制信号。位置控制器的结构是:p位置 ~> pid 速度 ~> 加速度 ~>飞机倾角 的这样一种串联结构,控制器实例调用本身的。原创 2024-09-25 20:51:04 · 1331 阅读 · 0 评论 -
ArduSub程序学习(9)-电机控制
以bluerov2的6推进器为例,比如我现在要前进,通过计算每个电机对于俯仰,横滚,偏航的推力来分配每个电机,通过我保持前进的信号,分配到5电机和6电机不需要其他操作,只需要保持一定的推力保持机体的平衡就行,而3,4电机计算后的推力推动向前,1,2电机反向推力推动机体向前。位于AP_MotorsMulticopter.cpp中,电机控制模块,它负责根据当前飞行状态和传感器数据计算各电机的推力,并将推力转换为具体的电机控制信号(如 PWM 信号),最终输出给电机。原创 2024-09-23 19:54:48 · 1673 阅读 · 1 评论 -
ArduSub程序学习(5)--printf调试程序中变量的值
我用的是正点原子的串口调试助手ATK XCOM,连接板子后开启串口即可,记住不要选择十六进制显示。我这里以获取_ekf_type的值为例,用printf打印出来,在程序中添加如下代码。(例如,串口设备和波特率)。如果你使用的是 Windows 系统,串口设备可能是。串口打印出来了我们选中的参数_ekf_type值为2,也就是现在用的是EKF2。如果 MAVProxy 启动成功,你会看到类似的启动信息并连接到飞控系统。生成固件,下载板子后通过一下方式查看打印结果。并连接到你的飞控系统。原创 2024-08-27 19:16:57 · 543 阅读 · 0 评论 -
ArduSub程序学习(4)--添加自定义文件实现RGBled闪烁
自建一个文件夹,通过我们自建的文件夹实现RGBled闪烁,大家能动手实践的一定动手实践,创建自定义文件的过程大同小异,不论什么版本,基本思路都是差不多的。最后直到编译成功,自定义文件就添加成功了,后面就是在添加好的文件中My_AP_Notify.cpp等文件的操作了,和上一篇。接下来对我们所修改的文件里面的类名称进行修改,逐个修改,所有的文件里名称都要修改,我这里是在每个类前面加一个“My_”,,在对应的文件中添加上我们自定义的文件夹,如下所示:我用的是waf编译,所以只更改。原创 2024-07-31 22:06:06 · 1516 阅读 · 0 评论 -
ArduSub程序学习(3)--控制RGB LED的颜色
今天大家动手实践一下控制RGB LED的颜色,程序改起来比较简单,在更改程序之前先来学习一下有关这部分的程序,今天还是以sub4.1程序为例,网上有更改比较老版本的程序,应该是3.5版本的。关于控制RGB LED的颜色的程序主要在libraries/AP_Notify/RGBLed.cpp。原创 2024-07-30 19:40:52 · 1735 阅读 · 0 评论 -
ArduSub程序学习(2)--ArduSub主程序讲解
在。原创 2024-07-29 15:18:02 · 1346 阅读 · 1 评论 -
ardusub关于gazebo仿真补充
总体电路板方向相对于电路板类型的标准方向。这会旋转 IMU 和指南针读数,使电路板能够以任何 90 度或 45 度角在您的车辆中定向。此选项在下次启动时生效。更换后,您将需要重新调平您的车辆。关于在进行gazebo仿真时qgc地面站中roll反转的现象进行补充说明,在qgc参数设置中选择。参数进行修改roll为180即可实现roll反转的情况。如果出现没有合适的角度进行选择可以使。这三个参数的大小改变roll、pit、和yaw。参数说明:Board Orientation。,然后就可以自主改变。原创 2024-07-29 11:11:45 · 543 阅读 · 0 评论 -
ArduSub程序学习(1)——ardupilot框架整理
AP_HAL层(硬件抽象层)是我们制作 ArduPilot 的方式可移植到许多不同的平台。有一个顶级AP_HAL libraries/AP_HAL,用于定义代码其余部分的接口 有针对具体的板子特性,然后就有了AP_HAL_XXX 子目录,例如,AP_HAL_AVR 用于基于 AVR 的 开发板,AP_HAL_PX4用于 Pixhawk 开发板和 AP_HAL_Linux 基于 Linux 开发板。工具目录tools directories工具目录是杂项支持目录。原创 2024-07-26 21:17:59 · 2194 阅读 · 0 评论 -
配置ardusub编译环境,下载ardusub代码
/waf sub以上就是编译成功,即编译环境成功。附加问题解决方案:Ubuntu 64位系统,而上述arm-none-eabi是直接下载的编译好的32位,还需要安装一个东西可以检查arm-none-eabi 4.9是否安装成功,输入以下指令:就是这部分。其中sudo apt-get install lsb-core这一步安装的包,不一定好用,不能用就自己搜一下,安装一个包。原创 2024-07-24 20:33:18 · 2725 阅读 · 2 评论 -
ardusub使用gazebo仿真
在进行gazebo仿真的时候首先要验证软件在环能否仿真,如果软件在环或者编译环境不会的话去看我上一篇博客。如果在进行多次下载删除gazebo后可能在重新下载的时候会因为出现依赖项导致无法成功下载,这时候可以先一个个下载依赖项然后再进行下载,或者遇到文件冲突的时候可以进行强制覆盖等操作,例如可以使用dpkg命令的选项来实现。这样做将强制dpkg安装软件包,即使存在文件冲突也会覆盖已有文件。请注意,这种操作可能导致系统不稳定或引起其他软件功能的问题,因为它可能破坏了现有软件包的期望行为。原创 2024-07-24 19:59:26 · 3803 阅读 · 16 评论