四轴姿态控制系统组成以及电机动力分配的算法实现

基本的闭环控制图如下:

 

 将各个控制单元对应到无人机上,可以做出Pitch角的反馈控制框图:

四轴姿态PID控制

单级控制框图如下:

 串级控制框图如下:

        主要是在角度控制的基础上,增加了角速度控制。期望姿态角与姿态结算出来的角度进行角度PID控制,输出的角度值,是离散型数据。又因为w(角速度)=a(角度)/t(时间)。所以可以认为输入的也是角速度。于是就实现了外环PID值作为内环PID的期望值目的。再结合陀螺仪比较精准的采集角速度的原理。内环的角速度控制可以保证飞行器测量值迅速的达到期望值。

这样一来就大大缓解了单角度环控制,由于飞机的电机转速与升力不成正比而出现的失衡(比如说在目标位置前后,左右偏移),跟随滞后等等问题。

四轴姿态控制原理四路电机动力分配

 PID计算的结果最终是要输出给电机的,所以我们要将三个姿态角的控制输出正确的分配给四个电机。顺时针开始,从第四象限开始,依次是M1,M2,M3,M4四个电机。(注意上面给的参考图片,左下侧是机头方向)

实现左右横滚运动的时候:(Roll)

需要M1,M4的转速增大。M2,M3电机的转速减少。(或者反着来,运动方向相反)并且为了使得飞行的稳定性。输出的增量和减少量是一致:

MOTOR1 += + pidRateX.out

MOTOR2 += - pidRateX.out

MOTOR3 += - pidRateX.out

MOTOR4 += + pidRateX.out

实现前后俯仰运动的时候:(Pitch)

需要M3,M4的转速增大。M1,M2电机的转速减少。(或者反着来,运动方向相反)同样的为了使得飞行的稳定性。输出的增量和减少量是一致:

MOTOR1 += - pidRateY.out

MOTOR2 += - pidRateY.out

MOTOR3 += + pidRateY.out

MOTOR4 += + pidRateY.out

实现前后偏航运动的时候:(Yaw)

实现原理:

主要是运用反扭矩:四轴无人机有一个特点,玩过无人机的人也应该知道,就是两个斜对角方向的旋翼旋转方向是不同的。这样使得顺时针方向与逆时针方向产生的反扭矩相互抵消。飞机不至于原地转圈。

在一些小的飞行器上可能会直接在两个对角线上安转正浆与反浆。这样直接控制四个电机旋转方向相同就行。

什么是反扭矩?

用直升机的例子解释:

直升机飞行主要靠旋翼产生的拉力。当旋翼由发动机通过旋转轴带动旋转时,旋翼给空气以作用力矩(或称扭矩),空气必然在同一时间以大小相等、方向相反的反作用力矩作用于旋翼(或称反扭矩),从而再通过旋翼将这一反作用力矩传递到直升机机体上。如果不采取措施予以平衡,那么这个反作用力矩就会使直升机逆旋翼转动方向旋转。所以直升机尾巴上的小螺旋桨就是用来抵消反扭矩,进而起到控制直升机方向的作用。

        所以如果我们要飞机向逆时针方向偏航,是不是就要增大逆时针方向上的反扭矩,减少顺时针方向的反扭矩。即增大顺时针旋转旋翼的转速,并减少逆时针旋转旋翼的转速。对应到图中需要M2,M4的转速增大。M1,M3电机的转速减少。(或者反着来,运动方向相反)同样的为了使得飞行的稳定性。输出的增量和减少量是一致:

MOTOR1 += -pidRateZ.out;

MOTOR2 += + pidRateZ.out;

MOTOR3 += - pidRateZ.out;

MOTOR4 += + pidRateZ.out ;

将三个式子加和:

MOTOR1 += + pidRateX.out - pidRateY.out -pidRateZ.out;

MOTOR2 += - pidRateX.out - pidRateY.out + pidRateZ.out;

MOTOR3 += - pidRateX.out + pidRateY.out - pidRateZ.out;

MOTOR4 += + pidRateX.out + pidRateY.out + pidRateZ.out;

        DIY需要注意的一点是,可能自己DIY的飞机的角速度方向与这个代码并不是一致的,原因是自己DIY的飞控的mup6050的方向不一定相同,所以导致一个问题就是:不同飞行器x轴加速度,y轴加速度,z轴加速度的正方向不一样。

        那么在测试调参的时候,一般是俯仰角,翻滚角,偏航角一个一个的调整。避免变量过多分不清楚的情况。

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
四轴飞行器是一种有四个螺旋桨且螺旋桨呈十字形布局的小型飞行器,属于多旋翼飞行器中最基本的一种。四轴飞行器具有可靠的稳定性,在复杂、危险的环境下可完成特定的飞行任务。它的应用十分广泛,可用于救援物资投放、航拍,桥梁检测,定点巡航等应用,具有不可估量的市场潜力。 ATSAM4S16-AU 属于 Atmel 推出的 SAM4S 系列,Atmel:registered: SAM4S 系列拓展了 Atmel Cortex-M 产品组合,增强了性能,提高了电源效率,具有 2MB 闪存和 160KB SRAM 的较高存储密度,有用于连接、系统控制和模拟接口的丰富外设套件,它丰富的接口资源更适用于要将所有数据连入的飞控 MCU。更重要的是,四轴飞行器有很多来自 IMU 的数据需要处理,而且还有复杂的控制算法,对于主控 MCU 的性能要求较高,ATSAM4S16-AU 为 Cortex-M4 内核,继承了ARM的优良性能,主频可达 120 MHz,可以完成四轴飞行器复杂的功能和精准的控制,且采用封装为 100-LQFP,较小的尺寸更加适用对于体积要求较高的飞行器。 世平集团于 2014 年 9 月推出基于 Atmel ATSAM4S16-AU 的四轴飞行器解决方案。采用 Zigbee 远程遥控方式,控制范围可达 500m 以上。飞行器配备陀螺仪、重力、压力、磁力传感器,可测量飞行器的姿态角和速度数据,再利用高性能微处理器对数据做出分析,从而控制马达的电子调速器的反馈运动,使飞行器可以平稳地在空中飞行。 展示板照片方案方块图核心技术优势① Zigbee 远程遥控: 本方案的遥控器采用基于 ZigBee RF4CE 协议的新型航模遥控器,带有 PA,传输范围可达 1~2km。 ② 飞行控制: 本方案中的飞控板可应用 4~6 轴飞行器机身控制,可以控制飞行器前后、左右、旋转,并可支持其他品牌的无线接收、电调。 ③ 调节 BLDC 转速: 本方案中的电调板可通过检测反动电动势的方式启动 BLDC,MCU 产生不同占空比的 PWM 控制转速。方案规格① 本方案遥控器是 IEEE802.15.4 兼容无线电收发器,采用 Atmel SAMD20E16 为主芯片,ARM Cortex-M0+ 处理器,主频可达 48MHz ② 本方案飞控板采用 Atmel ATSAM4S16-AU 为主芯片,120M Cortex-M4 处理低功耗 MCU,90uA/Mhz,可支持 I2C 接口协议的数据控制信号 ③ 本方案电调采用 Atmel SAMD20E16 为主芯片,50M Cotex-M0 处理低功耗 MCU,90uA/Mhz,支持 400Khz PWM 控制,最大可驱动 20A BLDC 电机 方案来源:大大通
MiniIMU AHRS 姿态仪采用主控制芯片STM32F103T8,通过电路板上的8M晶体和stm32内部的PLL,控制器可以运行在72M的主频上,对于姿态解算这种需求大量数学运行的程序,更快的处理速度可以做更多的解算优化。MiniIMU AHRS 姿态仪通过I2C接口与STM32F连接,同时传感器的数据中断引脚与STM32F的IO相连。使得传感器在完成ADC转换后,STM32F在第一时间读取最新的数据,快速响应姿态的变化。MiniIMU AHRS 姿态仪预写了各个芯片的驱动和姿态解算程序,该程序有以下功能: 读取MPU-6050输出的三轴角速度和三轴加速度ADC值 读取HMC5883磁力计各个轴所感应到的磁力强度ADC值 读取气压计BPM180的温度和气压并经过校正程序得到真实的气压高度 运行一个IMU解算程序,得到当前模块的俯仰,横滚,航向,气压高度 和温度 程序将各个传感器值和解算后的姿态发送到主串口TXO输出给上位机。连接上位机将显示波形和各传感器值 以上功能提供源码,编译器为MDK:编译环境:MDK-Lite Version: 4.23 MiniIMU AHRS 姿态仪硬件组成: MPU-6050 集成3轴陀螺仪和3轴加速器 HMC5883L 3轴地磁传感器 BPM180 气压高度计 STM32F103T8 32-bit ARM CortexM3处理器运行在72M时钟 miniIMU AHRS 姿态测量系统硬件框图: 电源组成: 数字电源与模拟电源使用独立的稳压器供电,在靠近各传感器VCC端都放置有大容量电容保证 稳定的电源供应给传感器。使数据更加稳定可靠。 通信接口: miniIMUDEMO引出两个UART异步串行接口。电路板侧边的UART将用于主数据输出和命令输入。 而另外一个UART可以用于连接GPS、数传电台或者是遥控数据,使模块集成更多的功能 两个UART可以运行在115200bps,支持DMA传送。 集成硬件循环冗余校验(CRC),更快速的数据校验,提高通信效率。 姿态数据处理: miniIMUDEMO集成了一只STM32F103T8,基于ARM Cortex-M3内核,通过板子上的8M晶体和PLL,STM32可以运行在最高72M时钟,高达20K字节的SRAM并且支持7通道的DMA。STM32具有 单周期乘法和硬件除法器,运行姿态解算sin cos atan2这些三角函数更加游刃有余。 STM32调试接口: miniIMUDEMO出于体积考虑,只引出了STM32的串行SWD调试接口,你可以使用STlink或者是Jlink等调试工具。SWD接口需要4条线连接到仿真器: 1.VCC 2.GND 3.SWCLK 4.SWDIO 输入电源: 4V - 7V 直流电源输入,运行时电流约40mA @ 5V MiniIMU AHRS 姿态仪接口定义: 可能感兴趣的项目设计: 姿态传感器IMU模块 附源码和上位机,链接:https://www.cirmall.com/circuit/1730/detail?3 上位机调试系统,如下截图: 1.显示加速度、陀螺仪和磁力计各个轴的当前值,并用波形显示 2.使用3D显示当前解算的姿态,Pitch Roll 和Yaw 3.温度计和当前气压高度值 4.使用地平仪显示俯仰和横滚角
在这里以智能小车作为项目的设计对象,不是为了要做出一个功能如何丰富、复杂的一个小车,而是通过这个小车平台,来把自己所学的、正在学的、想学的都装载这个小车上,并不是说要做出怎样的一款产品设计,而是通过这个设计来不断学习和应用。在此有幸能参加深圳联华集成电路有限公司推广的单片机设计大赛,也感谢官方提供的单片机样片,因此,此次的小车项目就以此为核心平台展开设计。 如标题所述,本小车平台一个突出同时也比较吸引人的是引入了脑电波,当然,这是其中的一个控制手段。此次的小车项目设计很重要的一个概念就是模块化设计,从硬件到软件,可扩展可裁剪,这样设计的目的如前面所说的,便于一步一步的学习并把学习到的东西在小车上应用实践。 过程的实拍:https://pan.baidu.com/s/1qWrXTMk 平台设计框图: 具体功能介绍通信连接的说明: 主机和小车(从机)使用XLNrf2401通信,该模块是加强版模块,带有天线,有效通信距离800米左右(空旷地,模块参数,没实测过,但有100米就足够用了,比普通NRF24L01猛多了),主机上的蓝牙模块用于连接上位机,如电脑和手机,可由主机控制切换到上位机控制,此时主机起到中继通信的角色,也就是说,电脑或者手机通过蓝牙连接主机通信,主机通过24L01与小车通信,这样的话,就弥补了蓝牙通信短距离短这个缺陷(升级蓝牙4.0其实也可以解决这个问题,只是支持蓝牙4.0的手机暂时买不起,支持的手机暂时来说也少,模块也贵)。小车上的蓝牙是与脑电波模块上的蓝牙通信用的,切换到脑电波控制时,小车连接脑电波模块上的蓝牙,读取脑电波数据,从而进行相应操作,同时也可以通过24L01实时反馈数据到主机,供监测使用。 小车功能 1、采集三轴加速度传感器ADXL345和电子罗盘HMC5880数据,检测当前自身的姿态,如当前的方向、倾斜角度。 2、超声波测距功能,根据主机的指令进行操作。 3、电池电量和小车速度(霍尔模块)检测。 4、温度和其它传感器的检测、可调亮度的车灯等。 5、以上数据通过LCD1602实时显示(主机可以发指令关闭)并通过相应的通信方式实时更新到主机,同时实时相应主机的命令进行响应操作。 脑电波模块: 通过耳夹和电极检测脑电波,经过模块处理之后通过蓝牙模块对外通信。 上位机操作: PC和手机操作平台也可以连接小车,通过蓝牙可以进行各种各样的扩展到上位机,也可基于网络。 所有功能的整合: 与小车建立连接后,主机实时显示小车当前的各种状态和传感器的数据,并实时监测操作姿态,从而通过操作者的姿态对小车进行控制,小车实时监测自身当前运行状态,并通过超声波检测前方有无障碍物,所有数据全部打包发送到主机,并响应主机的指令,进行相应操作,如运行方向、速度、车灯亮度、关闭/打开显示器等操作。 上位机连接主机时,主机作为从设备与上位机蓝牙连接,由上位机搜索连接,可通过主机设置连接密码。通过主机或上位机可切换到脑电波控制模式,此时姿态控制失效。若通信距离比较近(8米以内),上位机可以直接连接小车上的蓝牙,进行操作。 视频地址:https://pan.baidu.com/s/11TKOe 小车车体是自己切割有机玻璃的,主机LCD运行界面还未更新完,界面最终会有类似指南针的显示,来显示小车的运行姿态。文件未更新修改完。 脑电波控制智能小车硬件设计系统框图: 脑电波调试上位机:
C语言四轴机械臂控制算法是一种用于控制四轴机械臂运动和姿态算法。该算法主要包括四个方面的控制:位置控制、力控制、速度控制和轨迹规划。 位置控制是四轴机械臂控制的基本需求之一,它通过计算机控制四轴机械臂的电机,使机械臂能够精确地运动到指定的位置。该算法会根据机械臂当前的位置和目标位置之间的差异,计算出控制电机所需的转速和转角,以使机械臂移动到目标位置。 力控制是指通过计算机控制四轴机械臂上的传感器,使机械臂对外界力的作用产生相应的反应。通过控制机械臂的关节力矩,可以使机械臂具有稳定的力感应和力反应能力,实现对外界力的控制和适应。 速度控制是指通过计算机控制四轴机械臂的电机转速,使机械臂能够以指定的速度进行运动。该算法会根据机械臂当前的速度和目标速度之间的差异,计算出控制电机所需的加速度和减速度,以实现机械臂的平滑运动。 轨迹规划是指通过计算机生成机械臂运动的轨迹,使机械臂能够按照指定的路径进行运动。该算法会根据机械臂的起始位置、目标位置和运动要求,计算出机械臂在运动过程中的轨迹,包括位置轨迹和速度轨迹,以实现机械臂的灵活和高效运动。 总之,C语言四轴机械臂控制算法通过对机械臂的位置、力、速度和轨迹进行控制和规划,实现对机械臂运动和姿态的精确控制和灵活调整。这些控制算法在工业自动化、机器人技术等领域具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值