关于实现四轴无人机的姿态解算

飞控姿态解算算法解析 这样做的好处是,如果在嵌入式环境下进行大量的调参时,非常繁琐,不方便以及不直观。由于线性模型的关系,在只有一个轴向运动的时候,效果还不错,简单来说,比如一个运动同时包含了两个轴,这时候得到的结果就不准确了,上述的一些跟踪不好的地方就是因为此时yaw有运动,所以计算的结果受到了影响。作为状态估计常用的算法,卡尔曼滤波的卡尔曼增益是动态调整的,所以这一点比固定权重的线性互补滤波要好,此外要注意的是卡尔曼的效果好坏与所选用的状态变量,建立的模型有很大关系,不可一概而论卡尔曼就一定很好,具体情况具体分析。 阅读详情

1.无人机起飞基础所需

我这个四轴无人机是基于STM32所设计的,陀螺仪使用的MPU6050,远程控制通信用的NRF24L01。想要让自己的无人机能起飞,还要再空中保持稳定,所需要有什么呢。
我这边总结了一下:

1.1硬件设计:

整体架构,飞控、电池、电机、螺旋桨等选择。

1.2软件设计:

陀螺仪姿态解算,能随时掌握无人机的状态,辅助电机操控保持无人机平稳。
PID计算控制电机,调整电机输出让无人机按照自己的指令飞行。
此篇也主要是讲解无人机飞行中的软件设计部分,这边也只会讲解STM32联动MPU6050如何控制电机。

2.软件设计

该部分中关于头文件、引用这些都没有写进去,只写了主体部分,记得自己加一下。有计算的部分也记得“include一下math.h和string.h文件。

2.1姿态解算

对于陀螺仪的姿态解算,计算量小、代码简单、实时性强的二阶互补滤波再将加速度分量转化为弧度/秒后采用的如下公式:


但二阶互补滤波是属于单轴独立运算,欧拉角存在万向锁(俯仰接近±90°失效) ,二阶结构抑制漂移并不是非常稳定。所以对于无人机的姿态解算我这边就采用了精度更高、更稳定的滤波。卡尔曼滤波、Madgwick滤波还有Mahony滤波就在我的考虑范围了。这边我采用的是Mahony四元互补滤波,主要是讲软件设计,所以对于该滤波方式只会大概讲一下。主要是通过四元数在三维空间的向量计算方式,来掌握无人机的姿态,简单理解,就是四元函数基于复数的形式在三维空间把它的运动向量的结果计算出来。我的理解是先定义一个轴,然后将物体在三维空间三个旋转的自由度进行计算。如果想要详细了解,可以去小破站搜索一下别人的讲解视频。那么也不多说,直接上软件代码。
首先先看一下MPU6050的配置部分:

void MPU6050_Init(void)
{
    MyI2C_Init();
    MPU6050_WriteReg(MPU6050_PWR_MGMT_1, 0x80);  // 软复位
    Delay_ms(100);
    MPU6050_WriteReg(MPU6050_PWR_MGMT_1, 0x00);  // 唤醒
    Delay_ms(100);
    
    MPU6050_WriteReg(MPU6050_PWR_MGMT_2, 0x00);
    MPU6050_WriteReg(MPU6050_SMPLRT_DIV, 0x07);
    MPU6050_WriteReg(MPU6050_CONFIG, 0x00); //调整陀螺仪自带的滤波器,关闭低通滤波降低延迟
    MPU6050_WriteReg(MPU6050_GYRO_CONFIG, 0x18);//±2000°/S
    MPU6050_WriteReg(MPU6050_ACCEL_CONFIG, 0x18);//±16g
}

MPU6050_WriteReg(MPU6050_CONFIG, 0x00); //调整陀螺仪自带的滤波器,关闭低通滤波降低延迟我这里是关闭了陀螺仪自带的低通滤波的,但是关闭之后陀螺仪会因为数据毛刺过多,姿态解算误差频繁跳动,导致PID输出抖动,从而影响飞行。那么,关于陀螺仪本身的滤波怎么选择呢,这里有三档选择:
DLPF_CFG=0  0x00  8000 Hz 0.64 ms 关闭滤波,无延迟、噪声最大 
DLPF_CFG=1  0x01  188 Hz 2.0 ms 高速机动、特技飞行,延迟很小 
DLPF_CFG=2  0x02  98 Hz 3.0 ms 通用均衡档(首推),降噪+响应兼顾 
DLPF_CFG=3  0x03  42 Hz 4.9 ms 悬停、航拍、震动大的机架,降噪强

这边我就修改为(0X02)了。
然后还有MPU6050_WriteReg(MPU6050_SMPLRT_DIV, 0x07);这个寄存器配置,先看一下手册,我这是翻译后的部分:

消费级小四轴(8520空心杯、室内穿越机):
 陀螺仪推荐采样:200~500Hz,PID控制周期尽量和陀螺仪采样同步,做到闭环同步控制。
 常规航拍无人机、中型机架:
 主流配置:500~1000Hz,是兼顾算力与稳定性的黄金区间。
 专业竞速穿越机:
 最高常用1kHz、2kHz,搭配高性能主控、硬件滤波,依靠高采样实现极致操控跟手性。
因此我选择500HZ的采样率,改为MPU6050_WriteReg(MPU6050_SMPLRT_DIV, 0x01);
还有呢MPU6050_WriteReg(MPU6050_ACCEL_CONFIG, 0x18);//±16g。这个位置,我修改为0x00对应±2g。因为使用0x18的±16g分辨率太小了,2g精度更高,所以就改为2g(0x00)。
因此修改后总体为:

void MPU6050_Init(void)
{
    MyI2C_Init();
    MPU6050_WriteReg(MPU6050_PWR_MGMT_1, 0x80);  // 软复位
    Delay_ms(100);
    MPU6050_WriteReg(MPU6050_PWR_MGMT_1, 0x00);  // 唤醒
    Delay_ms(100);
    
    MPU6050_WriteReg(MPU6050_PWR_MGMT_2, 0x00);
    MPU6050_WriteReg(MPU6050_SMPLRT_DIV, 0x01);//在使能陀螺仪滤波器时,陀螺仪输出频率为1KHZ.最后采样率:1000/(1+1)=500hz
    MPU6050_WriteReg(MPU6050_CONFIG, 0x02); //调整陀螺仪自带的滤波器,42HZ,输出延迟4.8ms
    MPU6050_WriteReg(MPU6050_GYRO_CONFIG, 0x18);//±2000°/S
    MPU6050_WriteReg(MPU6050_ACCEL_CONFIG, 0x00);//±2g
}

配置完MPU6050之后,再编写姿态解算部分,Mahony姿态解算的公式网上讲解的很多,也不需要太过于深入理解,直接套公式拿过来用就行,我这边是先进行了一个MPU6050的校准,所以在程序一开始记得调用一下,然后姿态解算可以在中断调用就行:

//先宏定义需要的参数
#define Gyro_Gr 0.001065f   // rad/LSB 姿态解算使用    2000/32768*Π/180
#define Gyro_G  0.061035f   // °/LSB 角速度、Yaw积分使用  2000/32768
#define RAD_TO_ANG   57.2958f    // 弧度转角度,180/Π
#define LOOP_DT      0.002f      // 匹配2ms定时中断,与陀螺仪采样率对应
//定义一下姿态解算所需要的结构体成员
typedef struct {
    float x;
    float y;
    float z;
}Vector3f;

typedef volatile struct {
    float q0;
    float q1;
    float q2;
    float q3;
} Quaternion;

static Quaternion NumQ = {1,0,0,0};
static Vector3f GyroIntegError={0};
// Mahony 姿态融合参数
static float KpDef = 0.45f;  //值越大响应越快
static float KiDef = 0.00012f;

// ==================== MPU6050零偏校准 ====================
void MPU_Calibrate_Gyro(void)
{
    Delay_ms(1500);  //静置无人机
    int32_t gx_sum=0,gy_sum=0,gz_sum=0;
	int32_t ax_sum=0,ay_sum=0,az_sum=0;
    for(uint16_t i=0;i<400;i++)      /*次数和下面求平均数要一致,可以自行掂量选择,数值越大,校准时间越长*/
    {
        MPU6050_GetData(&AX,&AY,&AZ,&GX,&GY,&GZ);
        gx_sum += GX; gy_sum += GY; gz_sum += GZ;
		ax_sum += AX; ay_sum += AY; az_sum += AZ;
    }
    gx_off = gx_sum / 400;
    gy_off = gy_sum / 400;
    gz_off = gz_sum / 400;

	ax_off = ax_sum / 400;
    ay_off = ay_sum / 400;
    az_off = az_sum / 400 - 16384; 
 /*扣除1g重力,对应MPU里面的ACCEL_CONFIG的值。
0x00 ±2g为16384 LSB/g
0x08 ±4g为8192 LSB/g
0x10 ±8g为4096 LSB/g
0x18 ±18g为2048 LSB/g
*/
}


// ==================== 姿态解算 Mahony 算法 ====================
void GetAngle(int16_t accX, int16_t accY, int16_t accZ, int16_t gyroX,int16_t gyroY, int16_t gyroZ, float dt)
{
	accX -=ax_off;accY -=ay_off;accZ -=az_off;
    Vector3f Gravity,Acc,Gyro,AccGravity;
    float q0_t,q1_t,q2_t,q3_t;
    float NormQuat;
    float HalfTime = dt * 0.5f;

    // 从四元数提取重力向量
    Gravity.x = 2*(NumQ.q1 * NumQ.q3 - NumQ.q0 * NumQ.q2);
    Gravity.y = 2*(NumQ.q0 * NumQ.q1 + NumQ.q2 * NumQ.q3);
    Gravity.z = 1-2*(NumQ.q1*NumQ.q1 + NumQ.q2*NumQ.q2);

    // 加速度归一化
    NormQuat = Q_rsqrt(squa((float)accX)+squa((float)accY)+squa((float)accZ));
    Acc.x = (float)accX * NormQuat;
    Acc.y = (float)accY * NormQuat;
    Acc.z = (float)accZ * NormQuat;

    // 加速度与重力向量叉乘,得到误差
    AccGravity.x = Acc.y*Gravity.z - Acc.z*Gravity.y;
    AccGravity.y = Acc.z*Gravity.x - Acc.x*Gravity.z;
    AccGravity.z = Acc.x*Gravity.y - Acc.y*Gravity.x;

    // 积分误差补偿
    GyroIntegError.x += AccGravity.x * KiDef;
    GyroIntegError.y += AccGravity.y * KiDef;
    GyroIntegError.z += AccGravity.z * KiDef;

    // 角速度融合修正
    Gyro.x = (float)gyroX * Gyro_Gr + KpDef*AccGravity.x + GyroIntegError.x;
    Gyro.y = (float)gyroY * Gyro_Gr + KpDef*AccGravity.y + GyroIntegError.y;
    Gyro.z = (float)gyroZ * Gyro_Gr + KpDef*AccGravity.z + GyroIntegError.z;

    // 一阶龙格库塔更新四元数
    q0_t = (-NumQ.q1*Gyro.x - NumQ.q2*Gyro.y - NumQ.q3*Gyro.z)*HalfTime;
    q1_t = ( NumQ.q0*Gyro.x - NumQ.q3*Gyro.y + NumQ.q2*Gyro.z)*HalfTime;
    q2_t = ( NumQ.q3*Gyro.x + NumQ.q0*Gyro.y - NumQ.q1*Gyro.z)*HalfTime;
    q3_t = (-NumQ.q2*Gyro.x + NumQ.q1*Gyro.y + NumQ.q0*Gyro.z)*HalfTime;

    NumQ.q0 += q0_t;
    NumQ.q1 += q1_t;
    NumQ.q2 += q2_t;
    NumQ.q3 += q3_t;

    // 四元数归一化
    NormQuat = Q_rsqrt(squa(NumQ.q0)+squa(NumQ.q1)+squa(NumQ.q2)+squa(NumQ.q3));
    NumQ.q0 *= NormQuat;
    NumQ.q1 *= NormQuat;
    NumQ.q2 *= NormQuat;
    NumQ.q3 *= NormQuat;

    // 四元数转欧拉角
    float vecxZ = 2*NumQ.q0*NumQ.q2 - 2*NumQ.q1*NumQ.q3;
    float vecyZ = 2*NumQ.q2*NumQ.q3 + 2*NumQ.q0*NumQ.q1;
    float veczZ = 1 - 2*NumQ.q1*NumQ.q1 - 2*NumQ.q2*NumQ.q2;

    // Yaw航向积分 ,限制Yaw的零飘+角度限幅,防止卡死/溢出
    float yaw_G = (float)gyroZ * Gyro_G;
    if(yaw_G > 1.2f || yaw_G < -1.2f)
    {
        Yaw += yaw_G * dt;
    }
    if(Yaw > 180.0f)  Yaw -= 360.0f;
    if(Yaw < -180.0f) Yaw += 360.0f;

    Pitch = asin(vecxZ) * RAD_TO_ANG;
    Roll  = atan2f(vecyZ,veczZ) * RAD_TO_ANG;

}

2.2PID计算

比较难的算法部分解决之后,就开始编写PID部分:
 

//还是一样,先定义一下需要的结构体
typedef struct
{
    float Kp;
    float Ki;
    float Kd;
    float err;
    float err_last;
    float integral;
}PID_TypeDef;

PID_TypeDef PID_Roll;
PID_TypeDef PID_Pitch;
PID_TypeDef PID_Yaw;

float PID_Calc(PID_TypeDef *pid,float target,float now)
{
    pid->err = target - now;
    float p = pid->Kp * pid->err;
    pid->integral += pid->err;
    if(pid->integral > 25)  pid->integral = 25; //输出限幅,自行调整
    if(pid->integral < -25) pid->integral = -25;
    float i = pid->Ki * pid->integral;
    float d = pid->Kd * (pid->err - pid->err_last);
    pid->err_last = pid->err;
    return p + i + d;
}

// ==================== PID参数初始化 ====================
/*此PID参数不用作参考,我是通过结构体的形式将各个参数通过NRF把数据包发给无人机进行远程调参的,所以这些数据连参考的价值都没有*/
void PID_Init(void)
{
    PID_Roll.Kp=3.5f;   PID_Roll.Ki=0.022f; PID_Roll.Kd=0.12f;
    PID_Pitch.Kp=3.2f;  PID_Pitch.Ki=0.022f; PID_Pitch.Kd=0.12f;
    PID_Yaw.Kp=0.5f;    PID_Yaw.Ki=0.0007f; PID_Yaw.Kd=0.012f;
}

PID部分编写好之后就只需要在电机控制的函数里面直接调用
Out_Roll  = PID_Calc(&PID_Roll,  0, Roll);
Out_Pitch = PID_Calc(&PID_Pitch, 0, Pitch);
Out_Yaw   = PID_Calc(&PID_Yaw,   0, Yaw);

然后再通过自己的混控公式计算各个电机的输出值就行了。
这样看来,通过STM32来控制无人机的软件程序设计还是挺简单的是吧,但是这样可是还没有结束的,最重要的PID调参也是需要时间的,更别说如果要加入其他模块比如摄像头来航拍什么的,这些也都能给软件留有很大的提升空间的,再比如还可以将其他的算法也加入到软件里面,想用哪个算法就调用哪个算法的值,这样设计出新的无人机就能直接用对吧。

3.总结

以上就是我对于无人机姿态解算部分的一些理解和代码编写思路,谢谢大家的观看。

基于Arduino与MPU6050的四轴无人机PID姿态控制实战 在自动控制领域,PID控制器是实现系统稳定运行的核心算法,它通过比例、积分、微分三个环节的协同作用,动态调整输出以消除误差。其技术价值在于将复杂的物理系统动态行为转化为可计算、可调节的闭环控制,广泛应用于工业自动化、机器人、航空航天等需要精确调节的场合。在无人机系统中,姿态稳定是飞行的基础,通过传感器(如MPU6050)实时测量姿态角,PID算法计算出控制量并驱动电机协同工作,从而对抗外界扰动。本文聚焦于如何将这一经典控制理论应用于四轴无人机开发,详细解析从硬件选型、传感器校准、软件架构到参数整定的完整实现 阅读详情

相关推荐

基于STM32的四轴无人机飞控系统设计与实现

四轴无人机飞控系统是嵌入式实时控制的典型应用,其核心在于多传感器融合、姿态解算与闭环PID控制。原理上依赖IMU(如MPU6050)提供角速度与加速度数据,结合激光测距(如VL53L0X)实现定高,通过四元数互补滤波消除万向锁并提升姿态精度。技术价值体现在强实时性(1ms控制周期)、低功耗自主运行及GNSS拒止环境适应性。典型应用场景涵盖室内巡检、教育实验与微型机器人平台开发。本文围绕STM32F103C8T6主控,深入剖析硬件选型逻辑、FreeRTOS多任务调度、串级PID整定及抗干扰工程实践,为低成本高

weixin_33375360的博客 405

飞控:姿态解算

飞行器姿态解算

qq_62895023的博客 581

从零到一:基于STM32的微型四轴无人机飞控开发全流程(含PCB设计、源码与避坑指南)

本文详细介绍了基于STM32的微型四轴无人机飞控开发全流程,涵盖PCB设计、源码实现与避坑指南。从核心器件选型到焊接工艺,再到飞控算法与无线通信优化,提供实战经验与技巧,帮助开发者快速掌握多旋翼无人机开发关键技术。

weixin_33734785的博客 540

四旋翼无人机从0到1的实现(二十三)无人机工程中姿态解析

Author:家有仙妻谢掌柜 Date:2021/2/18 今年会更新一个系列,小四轴无人机从功能设计→思维导图→原理图设计→PCBLayout→焊接PCB→程序代码的编写→整机调试一系列,以此记录自己的成长历程! 这个小四轴无人机是大学时期学习制作的,加上现在工作学习对嵌入式的理解更加深入,因此想要重新梳理一下小四轴,之后在此基础上实现大四轴的飞控设计,这些都将在工作之余完成! //小四轴无人机设计,姿态解算 #include "atititude_calculation.h" /**********

家有仙妻谢掌柜的博客 2736

四轴无人机那些事 MiniFly源码分析 1 main函数

版权声明:本文为博主原创文章,转载请备注转载地址!!!。 https://blog.youkuaiyun.com/super828/article/details/80037809 先看看整个工程的任务关系手机APP是需要自己开发APP的,暂时没空搞,坐等官方制作。。然后主要就...

CodeAllen嵌入式 4万+

基于STM32的四轴无人机飞控系统设计:姿态解算与PID控制实现

在嵌入式实时控制领域,传感器融合与闭环控制算法是决定系统稳定性的核心。无人机飞控作为典型应用,需要MCU以固定周期读取惯性传感器数据,通过姿态解算获取当前姿态,再经PID控制器输出电机修正量,实现自稳飞行。STM32凭借丰富外设和实时中断能力,成为学习飞控设计的理想平台。文章从硬件选型、IMU滤波、Mahony互补滤波、双环PID到混控映射,逐步构建一套微型四轴飞控系统。通过串口波形调试与参数整定,读者可以理解开源飞控背后的控制逻辑,并掌握从程序框架到真机调试的完整流程。无论是毕业设计还是入门无人机控制算法

weixin_29168813的博客 277

九轴姿态解算 积分互补滤波资源文件介绍

九轴姿态解算 积分互补滤波资源文件介绍 去发现同类优质开源项目:https://gitcode.com/ 简介 本资源文件提供了一种基于四元数的九轴姿态解算方法,使用了积分互补滤波算法。该方法特别适用于无人机的姿态解算,能够有效提高飞行的稳定性和准确性。 特点 九轴姿态解算:结合了陀螺仪、加速度计和地磁传感器的数据,能够准确计算出无人机的姿态。 四元数互补滤波:采用四元数表示旋转,避免了万向节锁...

gitblog_06788的博客 289

基于STM32F4的小型四轴无人机控制系统代码实战

STM32F4系列基于ARM Cortex-M4内核,主频高达168MHz,集成FPU(浮点运算单元),显著提升控制算法的执行效率。其典型型号如STM32F407VG具备192KB SRAM和1MB Flash,支持多种时钟源(HSI、HSE、PLL),通过精细配置时钟树可实现外设性能与功耗的最优平衡。// 系统时钟配置示例(使用HAL库)// 输入8MHz// 倍频至336MHz// 主系统时钟168MHz。

weixin_32251525的博客 907

android 陀螺仪滤波_Arduino+mpu6050陀螺仪运用卡尔曼滤波姿态解算实验

MPU6050六轴陀螺仪作用于四轴无人机,平衡车,机器人等等的电子实作当中,用于姿态判断,掌握了可以发挥自己的想象完成更多更有趣的作品。本例程输出XYZ的角度,正负90度。运用卡尔曼滤波算法解算姿态,感觉算是比较稳定,但好像有点偏移。大家好好学习参考,再改进吧。输出效果首先看看本例程XYZ轴的输出效果图:(时间曲线的体现是:静止姿态→摆动→恢复原静止姿态→拍动桌子→静止姿态)Bom表Arduino...

weixin_30844301的博客 3248

基于MK飞控的自研飞行控制算法开源项目

htmltable {th, td {th {pre {简介:本项目为基于MK飞控平台自主开发的飞行控制算法,已实现基本的自稳与定点飞行功能。通过PID控制、传感器融合(如陀螺仪、加速度计)和姿态解算技术,系统可实时调整飞行姿态并保持空间位置稳定,适用于四轴无人机等小型飞行器。项目包含完整的固件代码,涵盖初始化配置、数据预处理、姿态解算、位置估算与电机控制输出等核心模块,是学习飞控系统设计与优化的优质实践资源。

weixin_42527589的博客 1061

DDR内存设计必看:DFI接口协议详解与实战避坑指南(附时序图解析)

本文深入解析了DDR内存设计中连接内存控制器与物理层的DFI接口协议,聚焦于DDR4/DDR5设计的实际痛点。文章详细阐述了协议版本兼容性、时钟架构(匹配频率与频率比系统)、PCB信号完整性设计以及上电初始化与调试等关键环节,为硬件工程师提供了一套从理论到实战的完整避坑指南,并附有时序图解析以助理解。

weixin_29256771的博客 331

android 陀螺仪滤波_Arduino MPU6050陀螺仪运用卡尔曼滤波姿态解算实验

Arduino MPU6050陀螺仪运用卡尔曼滤波姿态解算实验版权声明:本文为博主原创文章,未经博主允许不得转载。2019年3月20日发布实例效果输出效果:首先看看本例程XYZ轴的输出效果图:(时间曲线的体现是:静止姿态→摆动→恢复原静止姿态→拍动桌子→静止姿态)这图片是通过Excel生成的元件说明作用于四轴无人机,平衡车,机器人,电子稳定器等等的电子实作当中,用于姿态判断。掌握了可以发挥自己的想...

weixin_39959298的博客 1148

RK3568平台 麦克风PDM接口录音_rk pdm配置

在RK平台,Android的Audio HAL层中一般会都会有导出录音播放数据的功能。如播放的,是会直接送到声卡中的,对于播放出现问题的情况,可以从分析导出的音频数据是否正常,可以基本知道,是在应用、解码出现的问题,还是送到声卡过程中出现问题。当点开app进行录音的时候会调用到static int start_input_stream(struct stream_in *in)。音频在PDM接口输入,不经过编解码芯片直接到RK主芯片,RK主芯片自带PCM编解码功能。以下软件能播放保存下来的pdm文件。

2401_83817122的博客 2343

通过freeRTOS代替定时中断实现四轴无人机的飞控设计

这就是我整体无人机引入freeRTOS的相关函数和整体逻辑框架。其实最主要的应该就是整体逻辑框架,整个飞行逻辑框架已经成型了,有相关的设计需求只需要在这个框架下进行改写就行增添就行。

Maybe2001的博客 232

Vivado新手避坑指南:搞懂Generate Output Products和Create HDL Wrapper到底在干啥

本文深入解析Vivado设计流程中的Generate Output Products和Create HDL Wrapper两大关键步骤,帮助新手理解其核心功能与操作要点。通过详细讲解文件生成类型、关键选项设置及常见问题解决方案,指导开发者正确使用这两个功能,避免设计流程中的常见错误,提高FPGA开发效率。

weixin_29207149的博客 311

淘宝抓包,直达函数内部request请求体和response响应体, 告别FD, Charles,SSL,justtrustme 等http代理,证书工具。

淘宝抓包,hook发包函数,直接获取response相应数据

binary66的博客 4470

四轴无人机-飞行控制核心技术与原理!

姿态控制算法:飞行控制系统根据当前姿态与目标姿态的偏差,计算出调整四个电机转速的指令,以纠正偏差,使无人机保持在正确的飞行姿态。位置与速度控制算法:飞行控制系统根据预设的飞行路径或飞行员的指令,调整无人机的姿态和推力,以实现精确的位置控制和速度控制。姿态控制是四轴无人机飞行控制的基础,主要目标是保持无人机在飞行过程中的稳定姿态。动力学特性:四轴无人机的飞行过程中,涉及到复杂的动力学问题,如空气动力学、电机动力学等。在保持姿态稳定的基础上,四轴无人机还需要实现精确的位置和速度控制。

YUNZHUO666的博客 801

手把手教你用U盘制作Win11启动盘:从PE工具到系统安装全流程

本文提供了一份详尽的Windows 11启动盘制作与系统安装全流程指南。从选择合适的U盘和PE工具开始,重点讲解了如何正确制作包含EFI引导分区的启动盘,并详细演示了在PE环境下进行GPT分区、使用CGI工具安装系统镜像,以及首次启动后的关键设置步骤,帮助用户轻松完成从零到一的系统安装。

weixin_28475533的博客 1290

基于stm32的无人机控制系统设计

本设计是基于STM32单片机的多旋翼无人机系统,该无人机系统包括了串级PID控制算法、数据滤波算法、姿态解算算法以及上位机通信等一系列的软件设计。通过完成一系列飞行测试及调试,本设计的无人机能够实现稳定飞行,在飞行测试过程中,可以通过增加一些设备,实现定高定点飞行等功能,虽然在小的动态情况下该无人机能平稳飞行。

2万+

基于 YOLOv26 的高速抛物识别系统:微小目标检测

本文提出了一种基于YOLOv26的高速抛物识别系统,专注于微小目标检测。系统采用多模块协同架构,包括视频预处理、YOLOv26检测、目标跟踪和抛物行为分析等模块。关键技术包括YOLOv26s模型检测、DeepSORT目标跟踪和边缘计算部署。通过构建包含多种抛物类型的专业数据集,并应用数据增强技术提升模型性能。系统实现了车辆检测、微小抛物目标识别、抛物轨迹分析和风险等级评估等功能,可实时检测高速公路上的抛物行为并触发告警,为交通管理提供智能化解决方案。

一键难忘的博客 633

点云语义分割:PointNet训练S3DIS数据集

文章目录一、数据准备1.1、数据下载二、训练三、测试 项目地址:pointnet 此次我们是用pointnet网络来做语义分割。代码在pointnet项目中的sem_seg文件夹下,里面也有README.md介绍了训练的过程。 一、数据准备 1.1、数据下载 原始数据下载 处理好的h5格式数据下载 二、训练 三、测试 ...

zhaoguanhua的博客 4177

基于STM32单片机的四轴无人机控制系统设计方案

基于STM32单片机的四轴无人机控制系统设计方案

分享平时的学习心得和笔记 838

MTK Meta ISP 工具使用技巧与参数读取路径全解析

在联发科(MediaTek, MTK)平台上进行相机图像调试时,Meta ISP 工具是连接 PC 与设备进行参数调整、寄存器读取和图像输出的重要工具。本文以实战角度出发,系统梳理 Meta ISP 的使用流程、关键模块功能、典型调试技巧与参数读取路径,结合最新版平台(如MTK Genio/Dimensity 系列)架构,帮助工程师掌握联发科图像调优的核心流程。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1148

基于STM32与FreeRTOS的无人机姿态控制与串级PID调优实战

本文详细介绍了基于STM32与FreeRTOS的四轴无人机姿态控制与串级PID调优实战。通过MPU6050传感器数据采集、四元数姿态解算和串级PID算法实现,结合FreeRTOS多任务设计,提供了从硬件选型到参数整定的完整解决方案,帮助开发者快速掌握无人机稳定飞行的核心技术。

tech5的博客 619

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

MPU-6050在四轴无人机中的姿态感知与传感器融合实战

运动传感器是嵌入式姿态控制系统的核心基础,其通过采集角速度与线加速度等六自由度物理量,为飞行器提供实时空间状态感知能力。其工作原理根植于科里奥利效应(陀螺仪)与牛顿第二定律(加速度计),二者在动态响应与静态精度上天然互补,但单独使用均存在固有缺陷:陀螺仪积分漂移严重,加速度计易受运动干扰。因此必须依赖传感器融合算法(如互补滤波、卡尔曼滤波)实现高置信度姿态解算。该技术广泛应用于无人机飞控、智能穿戴、机器人平衡等场景。本文聚焦MPU-6050这一典型MEMS惯性测量单元,深入解析其硬件接口、数据采集、零偏校准

melon的博客 879

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【嵌入式开发】80

需要注意的是,飞行控制是一个复杂的过程,涉及多个学科的交叉应用,如控制理论、信号处理、机械动力学等。因此,在实际开发中,除了STM32的硬件和软件支持外,还需要对无人机的动力学模型、传感器特性以及飞行环境有深入的了解和分析。

宅男很神经 341

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: 基于单片机手搓第一台新手无人机的器件选型和大致思路
下一篇: 通过freeRTOS代替定时中断实现四轴无人机的飞控设计
Maybe不是霉逼
博客等级 码龄3年 9粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值