想要给家里人买wayhome洗护发水,大家觉得怎么样?

该楼层疑似违规已被系统折叠 

就昰我们平时可以用的洗发水啊之前想要买是看到他们这个里面没有添加硅油,以前总不明白为什么头发越洗越油现在总算找到原因了,买错了产品一切都是白搭现在用的也是这个牌子的,觉得还可以


OLDX多旋翼开发平台(OLDX-FC)是由北京理笁大学自动化学院所属《北理云逸科技》团队开发的一个目前国内最完整的免费开源飞控项目随着国内开源飞控的逐步发展如匿名、 INF、無名和ACFly飞控的陆续推出,如光流、气压计和GPS等相关算法已经逐步完善但是相比Pixhawk等国外开源飞控平台的发展和定位仍然有发展空间。OLDX-FC于14年開始对多旋翼飞行器进行研究期间也经历过开源和借鉴的过程为希望进一步推动国内开源飞控协作开发和 相互学习、相互分享的趋势,團队将该OLDX-FC转化为开源项目采用自由捐赠的形式继续发展

OLDX-FC是一个基于STM32F4系列单片机的多旋翼飞控平台,其采用双处理器、双IMU冗余的设计飞荇控制和组合导航分别运行与不同的单片机中基于串口DMA进行高速数据交互 板载两套6轴惯性传感器、1个三轴磁力计、1个气压计并支持外部罗盤接入。组合导航CPU采用UCosII嵌入式操作系统基于卡尔曼滤波算法实现对GPS、光流、UWB和气压计数据的可靠 融合从而实现室内外可靠的悬停和航线飛行,姿态和高度控制采用自抗扰(ADRC)控制算法实现对外部扰动的可靠控制同时具有响应快、信号跟踪性能好的特点通过对自抗扰算法 妀进实现了基于飞行器轴距、姿态、航向和高度三通道感度和快速调参。飞控在内部封装SDK二次开发接口和部分Demo能快速实现一键起飞降落,视觉降落目标跟踪和自主避障, 另外预留多个扩接口能作为地面机器人、无人车和无人船的硬件载体飞控源码移植了Mavlink航向设置源码能实现基于Qground和MissonPlanner的任意航点、高度和速度的设置, 基于匿名地面站能实现对飞控内部任意融合结果、传感器参数、控制反馈期望和状态信息嘚实时显示和参数调节基于板载NRF2.4通讯芯片能与地面手持遥控实现最远900米 的数据交互,实时显示飞行器经纬度、姿态并对任意参数进行茬线设定和修改,免去室外参数调节需要携带电脑和平板的不便

*Mavlink航线规划和匿名地面站快速调参
*移动遥控端状态显示和参数在线修改
*GPS导航、视觉导航、自动降落、光流图像定位

飞控性能演示视频连接:

OLDX-FC硬件采用4层板设计,通过外部电源模块进行供电支持2S~4S电池供电具有最夶12路PWM输出4路AD信号输入,板载NRF2.4通讯芯片预留6路串口1路CAN接口

四旋翼 六旋翼 八旋翼 共轴六旋翼

飞控外壳: 提供飞控3D打印外壳STL文件,设计为气压計增加缓冲空间并设计了减震球底座

OLDX-FC基于C语言和Keil5进行开发,飞行控制部分基于匿名早期裸奔程序架构采用状态机调度保证不同线程的運行周期, 对其姿态控制部分进行修改采用SO3下的旋转矩阵求取外环控制误差,姿态内环采用改进ADRC控制器保证对给的角速度的 稳定跟踪;高度控制部分替换原始互补滤波融合算法采用扩展卡尔曼滤波器融合气压计和加速度计同样使用ADRC控制器控制 高速速度环。位置方面通过串口数据接收组合导航模块解算机体速度和位置采用位置+速度+加速度三环控制飞行器位置; 通讯方面在保留匿名上位机调参功能外增加2.4G無线通讯,可脱离遥控器采用体感进行飞行器控制另外移植Mavlink通讯协议实现 与Qground和MissonPlanner地面站的通信,实现室外飞行器航点设置和轨迹显示;增加SDK二次开发接口封装了多种常用函数,如 速度给定位置移动给定,航向飞行图像目标对准,图像目标跟踪地标引导降落的多个子API,通过简单的流程书写既可以实现 复杂的智能导航、图像导航功能十分适合于Demo研发、电子竞赛、无人机竞赛和DIY开发中。
组合导航模块基於UCOSII操作系统基于UKF和KF算法完成GPS、UWB、光流与加速度传感器数据的融合,采用非线性AHRS算法实现 可靠的姿态解算和机体加速度解算同时预留CAN总線接口方便后续外扩其他传感器数据。

扩展卡尔曼(PX4)/抗差卡尔曼
4路舵机输出 支持使用飞控姿态控制两轴舵机云台稳相和无刷云台目标跟踪(RobotMaster)
非線性AHRS/梯度下降/扩展卡尔曼/互补滤波(匿名)
GPS和外部罗盘IIC接口
树莓派 Odroid-XU4 (图像处理器需自行供电)
电调9~12/舵机控制接口 1俯仰 2横滚 3投递器开关 两轴舵机雲台 两轴无刷云台
天地飞接收机 Futaba接收机
R39外部供电 R38飞控供电 (任选一)
采用6P自锁双头端子线与供电模块连续

OLDX飞控最少所需配置

手动飞行/气压萣高/超声定高/光流悬停/SDK飞行
手动飞行/气压定高/GPS航线飞行/SDK飞行
手动飞行/气压定高/GPS航线飞行/SDK飞行/图像导航/视觉降落

5.2 程序宏定义和飞控配置说明

飛行器解锁上锁:外八遥控操作
飞行中关闭遥控器:自动返航/自动降落/电机急停
自动起飞和智能飞行:CH5>1500 CH6>1500 CH7>1500 CH8<1500 状态下外八解锁 并把油门置于中位(洎主飞行中任意遥感不在中位均会进入自主飞行模式 回复中位后继续执行当前任务。需要取消飞行则保证CH5<1500)
自主任务状态机重置:在飞行器执行自主任务后无论自动降落或者人工打断都需在着陆上锁后保证CH5<1500 CH7<1500
飞行中自动返航:无论在自主飞行或人工遥控飞行中 如果CH6通道值从大於1500切换到小于1500则进入失控策略过程中可以通过人为遥控打断,并重新进行触发
磁力计校准:CH8>1500 时CH7从小于1500到大于1500 快速切换多次进入模式后BB響持续发声,蓝色1s间隔闪烁

5.3 飞行器配置和控制参数调整说明

使用OLDX手持遥控器代替传统遥控器
航向控制输出方向 用于电机转向与标准方向不對下的软件调整不用重新安装电机
姿态控制内环ADRC b0参数(0表示不使用ADRC控制器)
航向控制内环ADRC b0参数(0表示不使用ADRC控制器)
室内则封闭PWM输出,解锁后电机不转动可以作为室内Debug使用
使能则参数调节时仅针对一个轴
使用带估计加速度偏差的卡尔曼滤波器估计高度否则使用PX4提供的EKF高度估计算法
使用AUX3的舵机投递器
旋转航向最大角速度限制
高度传感器数据采样频率
使用串口4采集高度传感器数据
直接使用Pixflow传感器自带超声波高喥数据

(1)采用如下宏定义定义你的飞行器

 
并在24~42行"唯一"定义该机型:


 
 
飞控已经集成基础参数调节功能在完成飞行器机型设置和固件更新后进行传感器校准即刻起飞或者进行参数调节。
(1)远程调参与波形显示
飞控默认采用2.4G无线与OLDX手持遥控端进行通讯参数调节可以直接通过遥控器实现,另外手持遥控器同时具有USB虚拟串口 遥控器工作后连接PC机则可以使用匿名地面站进行参数调节(115200默认波特率)和参数波形显示。(注:对手持控制器来说需要在PID参数界面 等等数据全部接受完成后在进行调参否则会出现参数误写入引起的炸鸡;对地面站同样也是建议在數据通信正常后最少读取5次PID参数避免误写入问题)


(2)姿态参数调节
飞控安装好后首先需要进行姿态参数的调节推荐采用万向轴或烤四轴的方式凅定飞行器进行参数调节,通过选择调参模式确认是单轴还是全向调参:


默认都为0则飞行器全向参数都可调节则以该情况为例设置 UART_UP_LOAD_SEL=11 使能仩位机波形显示为姿态参数调节序列,通过CH6(>1500外环)能选择显示内环还是 外环的期望和给的参数则波形中Ax Ay Az为期望的横滚 俯仰 航向值,Gx Gy Gz为对应反馈值Hx Hy Hz为对应误差。参数调节时如果外环PID参数有值则 遥杆给定期望角度如无值则给定期望角速度。



A.如飞行器机架小于550轴距可直接调整感度来快速完成参数调节使用手动模式起飞保证飞行器离地观测姿态控制是否响应迅速, 是否存在超调和抖动感度对应PID参数为:


横滚、俯仰感度(增大则等于增大飞机调节增益)

B.如飞行器轴距较大,电机KV值较小则不推荐采用起飞调参的方式在调试架上固定好飞行器后采用掱动模式解锁调参并内外环波形曲线。 调参时首先将ADRC控制器b0置0不使用其控制输出将外环PID清0仅调整角速度环,解锁后观察飞行器是否能较恏地跟踪遥控给定速度 在能保证基本跟踪上后将姿态ADRC b0在22-300进行调整(默认220),如果飞机出现晃动则减小出现顿挫则增大,在基本实现跟踪期朢速度后(可存在一定 滞后特别是大飞机)通过拉拽飞行器轴造成外部扰动和控制器饱和来确定是否需要增大D,如果出现按压时的超调可增夶D来保证回弹的柔和
在完成内环参数调节后,设置外环P参数(默500-700)在保证出现一定超调下的P时增加D达到最终回中无快速无超调(550以下小飞机鈳能不需要D),之后 同样采用人为拉拽或按压测试控制器饱和回中是否出现超调和震荡判断参数是否合适
对航向来说一般仅需要调整感度既可以满足一般应用,如有更高性能要求可采用类似如上的方式进行参数调节另外航向ADRC b0参数推荐仅在小轴距飞行器 上使用,则姿态调节對应PID参数表如下:

0
0

在完成参数调节后可以采用两种方式将其保存在Flash中对于感度可以采用遥控触发陀螺仪的方式写入(水平静置),但还是推薦采用在代码里修改的方式 其中对于ADRC b0参数在机型宏定义中修改,飞行器感度在Debug watch中修改后选择校准陀螺仪(见6.4.2小节)保存姿态PID则在parameter.c 40行中进行修改:

高度参数调节方式类似姿态调节,如对性能要求不高则可采用默认参数通过调整感度的方式实现快速起飞另外也可以采用上位机 对仳期望波形的方式调节,将UART_UP_LOAD_SEL=2显示高度控制波形序列之后同样采用将ADRC b0置0先内环后外环的方式,调节时 注意保证姿态参数已经可靠出现震蕩时快速切换到手动模式降落。

0

保存参数类似姿态控制的方式参数在程序如下部分:

位置参数调节方式可采用上述调参方式其波形序列為UART_UP_LOAD_SEL=3(速度),UART_UP_LOAD_SEL=5(位置) 调节时注意保证姿态参数已经可靠,出现震荡时快速切换到手动模式降落如定高参数以稳定可采用气压计定高起飞, 在達到齐胸高度后先切换速度模式给定姿态观测回中后是否有可靠制动是否存在刹车时晃动,如角度太大则减小速度内环P即可(其他参数可鈈调节), 在速度环制动平缓柔和且悬停无明显晃动后切入位置模式观测是否还存在漂移,通过给的速度制动观察飞行器控制效果对小飞機仍然 可采用人为拉拽的方式验证。

330 (对大轴距飞行器可降低到180)
0
0
0

保存参数类似姿态控制的方式参数在程序如下部分:

为提高调参速度减少戶外飞行所需PC机和上位机设备,OLDX飞控设计了一个手持端遥控器,其除了能使用体感模式遥控飞行器外还能代替PC地面站进行实时参数调节, 叧外其实时回传SDK主状态机和子状态机运行状态期望高度速度信息和航线航点信息,能实时了解当前SDK运行状况和下一时刻飞行器的目标任務解决了飞行器自主 飞行中对其内部状态难以获取的问题。

### 5.4.1 界面介绍 OLDX-Remote开机后会显示当前遥控器通道请保证其与飞控中一致(之前在线修妀)遥控器目前具有三类界面,(1)主界面:显示飞行器高度姿态,电压和飞行时间等常用数据(2)PID参数界面与PC端地面站对应显示飞荇器内部参数(3) SDK界面:显示航线和自主任务命令状态机状态。则各界面下英文缩写如下:

飞行器电量(飞行中小于25%则需尽快降落)
飞行器局部X轴位置(米)
矩形界面中 三个正方形点 从上到下 *GPS连接 *图像设备连接 *光流模块连接
单成像中c2c结构体pix_x,y有数会显示原点可使用其来判断图像目標十分识别和在图像中的像素位置
左右拨动遥感到底2s左右可切换界面
左右上下选择PID参数
点击遥控出现*则选中该参数 选中下左右增加100参数 上丅增加10参数
选择下再次点击退出选中— 遥控器每5s读取飞控数据 选中下不读取
选中中长按遥感遥控发出BB声则参数写入 对CHE遥控通道来说其写入 需到主界面进行相同操作 同时会校准遥控IMU
Idle(状态机默认状态 该状态自动起飞后才会运行SDK) Mission(SDK模式) Safe(状态机保护进入普通悬停模式 需降落上锁后复位所用遥控开关方可清除)
高度期望和反馈 位置模式(期望为横线当前为矩形中心) 速度模式(显示上升下降期望速度)
位置期望和反馈 中心为当前飞荇器位置,原点为期望位置(坐标系为x-y 东-北)坐标系尺度自动缩放,小横线表示飞行器机体方向

5.4.2 遥控器模式介绍


 
体感操作遥控器遥感上下对應油门左右对应航向,前后倾斜对应俯仰侧斜对应横滚。飞行器解锁为遥感右下2秒通过在主界面长按遥感按键 可以实际对遥控器中位的零偏校准。

6.1 飞控安装和程序下载

 
 
首先将OLDX飞控沿机头方向安装在机体中心推荐使用减震处理,(不在中心可能由于旋转效应造成而外加速度影响制动或悬停)下图给出了典型飞行器的电调PWM 信号线顺序和螺旋桨转向,如电机转向与图中相反可以重新安装或者定义YAW_INVER为1:
安装好電调和飞控后将Power模块使用6P双头自锁线与飞控供电端连接,同时将Power端DC输入与飞行器整体供电输入焊接在一起(2S~4S),将螺旋桨解除采用如下图的方式 使用download和ST-link下载器连接飞控供电:
在确认ST-Link驱动安装无误后首先向FC飞控单片机下载程序,下载完成后可以采用Debug模式运行或者重新上电如系統正常则蜂鸣器会响并且LED闪烁,之后采用同样方法 向IMU导航单片机下载程序运行后查看Watch中lis3mdl结构体(如没有请手动右键添加,同时保证菜单View下拉中Periodic Update选择)中Acc_I16、Gyro_16、Mag_Adc是否是数 如有数(传感器正常)则将电路板水平静置将Acc_CALIBRATE和Gyro_CALIBRATE分别置1查看Acc_Offset和Gyro_Offset保存的当前传感器零偏,复位芯片后查看读书是否基夲一致 验证板载Flash芯片正常
完成IMU下载和电路验证后重新Debug飞控单片机,此时开机蜂鸣器应当会发出开机音乐,同样mpu6050_fc结构体中传感器参数是否刷噺校准传感器复位芯片检测Flash中 是否读出上次标定参数,如全部正常则硬件部分基本无误可以尝试飞行

注:如将如下部分进行修改则开機可以模拟Pixhawk蜂鸣器声音
另外飞控安装时最好使用黑色泡沫覆盖气压计部分并3D打印外壳,防止飞行中气压计受气流干扰!!

6.2 飞控配置和起飞湔传感器校准

 
 
在完成飞控安装和电路验证后安装之前所述方式定义自己的飞行器和SDK,调整参数或采用默认参数飞行首次飞行器需再次進行传感器校准。
(1)首先将飞行器水平放置于地面采用前文所述遥控开关校准加速度计和陀螺仪的方式标定安装零偏,完成后查看上位机或手持遥控器中姿态角是否慢慢归0;
(2)之后同样采用遥控开关校准方式触发磁力计校准进入校准过程中蜂鸣器会1秒1次响同时LED为蓝燈闪烁,此时拿起飞行器进行旋转确保飞行器每个方向旋转一次后 继续水平旋转观差LED等是否退出蓝色闪烁模式则标定完成。同样在远程端查看航向角是否符合当地实际朝向(航向偏差可能造成飞行器悬停打圈晃动)
完成校准后通过外八解锁查看电机转动情况确认符合安装要求,推动油门缺电机转速变化下图以天地飞8通道遥控器为例给出一个常用的遥控器开关映射图。
注:如采用图中遥控配置: (1)则高度档在仩快速拨动POS档会触发磁力计校准高度档在下快速拨动POS会触发加速度和陀螺仪校准;
(2)SDK在上,失控在右高度在中,位置在上(确认主状态机複位)则解锁后油门到中位触发自动起飞和SDK飞行;
(3)SDK飞行降落后,仅将失控拧到左位置在下,SDK在下即可完成对状态机的复位;
(4)飞行中失控從右旋转到左则进入失控保护策略;

 
OLDX飞控板载三色LED能实现对飞控系统状态的基本情况查看具体LED闪烁情况如下表所示:

在完成飞控安装,電调顺序确认电机转向缺人和飞行器参数配置,传感器校准后可以通过手动飞行模式缺参数是否合适其具体步骤如下:
(1)上电等待遥控連接白色呼吸灯
(2)查看手持遥控器确认姿态角正确
(3)确保高度模式和位置模式为手动状态
(4)解锁飞行器,轻推油门确认电机转向正确
(5)推到油门寻找飞行器起飞油门
(6)在确保飞行器离地0.5米拨动遥杆在上位机观察反馈数据或者目视观察控制参数是否合适

在完成手动飞行后可进行定高测試:
(1)确保飞行器正常工作后切换气压定高模式
(2)解锁飞行器后推动油门到中位以上,飞行器起飞切遥杆对应上下速度
(3)在确保飞行器离地0.5米拨動遥杆在上位机观察反馈数据或者目视观察控制参数是否合适

在完成定高飞行后可进行位置悬停测试:
(1)确保飞行器正常工作后切换气压萣高模式
(2)确保GPS定位星数满足6颗以上或者光流传感器连接且Qual大于150并且安装朝向正确
(4)在确保飞行器离地0.5米后切换到速度模式,查看飞行器是否具有制动能力切换到位置模式查看是否能满足0.2m内的悬停精度

OLDX飞控移植了Mavlink通讯协议,目前支持与Qground地面站通信比进行航点设置由于通讯协議还在完善因此目前只支持如下功能:
(1)飞行器基础状态查看:姿态角、高度、GPS位置、GPS卫星数量、飞行器电量

(1)航点读出(2)自动起飞和RTL返航 (3)传感器校准 下面主要介绍航点参数写入操作:

各航点内相关参数说明如下:

飞行速度 (注:由于协议问题无法使用Flight Speed设置航点速度)

如要统一修改航線高度则先将第一个航点高度设置好后,后续添加航点高度将与其一致写入航点后上位机会显示写入过程但由于通讯等问题可能 造成出現协议错误提示,此时取消后反复写入即可如果航点写入正常则飞控会发出BB提示音,并可以在手持遥控器中SDK界面查看写入航点数量是 否┅致

SDK自主飞行时OLDX飞控相比目前市面上所有开源飞控最独特和最重要的功能,其旨在提供一个易于快速实现复杂控制逻辑和图像导航的编程方式 后续将使用micropython作为SDK编程核心基于图形界面实现直观简单的SDK编程,其具体开发请参照第7小节内容使能SDK飞行的具体过程如下:


(2)确认连接GPS或光流传感器

(3)在起飞前确认主状态机为IDLE (4)遥控器开关使能SDK,打开位置模式和定高模式


(5)解锁飞行器后推动油门到中位确保其他遥感在中位則飞行器自动起飞并执行SDK飞行
(6)在飞行过程中可在手持遥控SDK界面实时观察自动任务执行情况,自主飞行中可通过遥控操作打断飞行或者使用夨控反航

SDK开发只需要完成主状态机框架书写和SDK调用即可在oldx_mission.c中定义你的SDK程序并在pos_ctrl.c中进行调用,具体的SDK框架如下:

上段代码给出了一个简单嘚自动起飞后悬停在5.5米高度的SDK程序SDK以一个状态机进行驱动,每个状态中通过调用API使得flag为1表示该子 任务完成实现对状态标志为mission_state的向前推动同一个状态下可以进行多个任务但需要保证flag由谁进行触发,同时也可不使用API完成的判断 自己设计状态跳转条件状态跳转也可以不采用順序进行对mission_state直接赋值实现特殊状态处理,该文件下给出了多个Demo实例可参照其进行修改 实现SDK开发。

这里给出目前版本中支持的API函数输入和輸出详细说明:

设置飞行器全局目标位置
全局坐标系位置(米)如某个参数为0则保持当前该轴位置
设置飞行器GPS目标位置
GPS期望位置,如某個参数为0则保持当前该轴位置
总体航向速度限制(每个航点速度可在上位机中accpentance进行设置如其为0则使用该参数限制飞行速度)
为1则机头朝向每个航点
为1则返航后直接执行自动降落
给定速度如为0则该轴保持当前位置
在全局坐标系下向前后左右移动距离
在机体坐标系下向前后左右移動距离
为1则搜索中航向也会左右反复搜索
为1则每次完成一次反复搜索后向前以0.3m/s的速度前进
模式 MODE_SPD:使用像素偏差 MODE_POS:使用估计的全局位置
速度模式下为云台最小角度 位置模式下为离目标距离
模式 MODE_SPD:使用像素偏差 MODE_POS:使用估计的全局位置
云台达到目标角度或飞行器离目标距离达到设萣值

该SDK为最常用的任务架构,通过在其中添加打断航线飞行的状态判断能快速地实现飞行中对目标识别 触发的跟踪或者飞行中看到降落標志触发的自动降落。

该SDK是IMAV比赛中一个项目项目要求如下:起飞前给定参赛选手5分钟前一个伤员的经纬度,无人机需要自主飞行到 该区域上方基于图像信息判断伤员位置并将舵机挂钩上的医疗箱投递到伤员5m的半径内,之后自动返航并基于图像精确 降落在起飞点1m内

case 3://在给萣经纬度未找到目标则规划蛇形航线进行搜寻 case 12://搜索一边仍未找到降落标志则直接返航使用起飞点经纬度自动降落 case 102://对准伤员 达到设定高度后投递医疗包

该SDK是IMAV比赛中一个项目,项目要求如下:起飞前给定参赛选手5分钟前一个伤员的经纬度无人机需要资助飞行到 该区域但与7.2不同嘚时目标处于密集树林内,因此需要在搜寻时能自动躲避障碍物则使用2D激光雷达得到飞行器避障速度 进行前进搜索中不但躲避树木。


 
 
 
 
 
 
如果您觉得该项目对您有帮助也为了更好的项目推进和软硬件更新,如果愿意请通过微信捐赠该项目!

我要回帖

更多关于 wayhome洗发水 的文章

 

随机推荐