pix飞行器无人机地面站站地图

1319人阅读
本文对apm的飞行模式管理和切换等机制进行介绍,最后通过实例,分别修改apm飞控端代码以及missionplanner代码,将apm的飞行模式由6个扩展到了9个。因为作者最近一直在修改apm的固定翼程序,所以讲更多的以ArduPlane为例子进行介绍,不过ArduCopter与之思路是相同的,很容易触类旁通。
一.飞行模式的本质
Apm开发团队建议开发者通过扩展飞行模式的方式对apm功能进行扩展,植入自己所需要的飞行逻辑,由此可见飞行模式之重要性。实际上,FlightMode在apm中就是一个枚举类型,不同的状态即对应与不同的飞行模式。可见defines.h。
enum FlightMode {
FLY_BY_WIRE_A = 5,
FLY_BY_WIRE_B = 6,
INITIALISING
在飞控的任务表中(scheduler_tasks),定义了一个关键的不断循环的调度函数updata_flight_mode&,该函数会根据FlightMode的不同值,执行不同的逻辑功能,由此体现出不同飞行模式的不同。
二.飞行模式的切换
在ArduPlane的飞控任务表(scheduler_tasks)中,有一个read_control_switch的函数(对于多旋翼arduCopter是从rc_loop调用),它检测输入的飞行模式控制通道的变化,并改变FlightMode状态。请见control_modes.ino.在该函数中,先后执行两块逻辑功能:
首先执行readSwitch(),从输入通道中直接判断出对应与飞行模式列表(flight_modes)中的序列值(ArduCopter没有将这个逻辑单独封装为函数,直接调用了)。flight_modes是飞控板载rom中存储的,飞行模式集合的首元素的指针。这一飞行模式集合实际上也是apm的一种固件参数,即可以通过MissionPlanner的参数设置进行修改,也可以通过特别开发的可视化界面修改。APM的rom中最多可以存储255个飞行模式。
然后,获知当前输入所代表的飞行模式后,调用set_mode()函数,修改飞行模式。该函数的主要功能可以分为三部分:检查飞行模式切换是否被允许;将当前飞行模式的各种状态归零;切换到新的飞行模式,并进行新模式所必需的初始化工作(ArduPlane中主要是修改油门的自动控制方式,ArduCopter中则是调用飞行模式的Init())。
需要注意的是,切换模式中采用了两种特殊机制,以保证模式切换过程的平滑稳定:
1.只有当前输入的模式与前输入模式不同是,才会修改飞行模式。这个机制解决了飞控逻辑中,又算法自发修改了飞行模式,与遥控输入飞行模式不符时带来的冲突。
2.只有连续两个周期检查到输入的飞行模式发生变化时,才会修改飞行模式,这实际上是对信号输入进行了时间平滑,可以解决信号瞬间改变导致飞行模式突变的问题,这种方法在数字电路中十分常用。
三.飞行模式作了什么?
不同的飞行模式如何对飞行器产生不同的控制功能呢?可以从update_flight_mode()中找到答案。在固定翼ArduPlane中,这一函数被写入飞控任务表,而在多悬翼ArduCopter中&,这一函数在fastloop循环内。
switch (control_mode) {
case ACRO:
#if FRAME_CONFIG == HELI_FRAME
heli_acro_run();
acro_run();
case STABILIZE:
#if FRAME_CONFIG == HELI_FRAME
heli_stabilize_run();
stabilize_run();
case ALT_HOLD:
althold_run();
case AUTO:
auto_run();
case CIRCLE:
circle_run();
如图所示&,该函数内部,根据不同的飞行模式,调用相应的功能,因此&。ArduPlane是直接执行功能代码,ArduCopter则将不同模式的功能代码统一封装在xxx_run()函数中调用,其本质是一样的。更详细的分析,请参看下一篇文章。
至此,本文对Apm飞行模式的定义、调度、切换、执行等进行了介绍。本人将apm的6种飞行模式扩展到了9种,并且可以通过遥控器上两个三端开关进行调节,相关的源代码,可以在github上查看和下载。下面对修改过程做简单介绍:
对ArduPlane片上程序的修改:
1.在parameters.h中添加新增的&3个飞行模式参数和新增的模式控制通道
k_param_flight_mode7,
k_param_flight_mode8,
k_param_flight_mode9
k_param_flight_mode_channel2
&2.修改readSwitch函数,根据两个三段开关正好可以拟合9种变量值
static uint8_t readSwitch(void)
uint16_t pulsewidth = hal.rcin-&read(g.flight_mode_channel - 1);
uint16_t pulsewidth2 = hal.rcin-&read(g.flight_mode_channel2 - 1);
if (pulsewidth &= 900 || pulsewidth &= 2200) return 255;
if (pulsewidth2 &= 900 || pulsewidth &= 2200) return 255;
if (pulsewidth & 1300){
if (pulsewidth2 & 1300) return 0;
else if (pulsewidth2 & 1700) return 1;
else return 2;
else if (pulsewidth & 1700){
if (pulsewidth2 & 1300) return 3;
else if (pulsewidth2 & 1700) return 4;
else return 5;
if (pulsewidth2 & 1300) return 6;
else if (pulsewidth2 & 1700) return 7;
else return 7;
3.在Parameters.ino中添加新参数的定义,如
// @Param: FLTMODE8
// @DisplayName: FlightMode9
// @Description: Flight mode for switch position 8 (1750 to 2049)
// @Values: 0:Manual,1:CIRCLE,2:STABILIZE,3:TRAINING,4:ACRO,5:FBWA,6:FBWB,7:CRUISE,8:AUTOT&pre name=&code& class=&csharp&&(int)(Port.MAV.param[&FLTMODE_CH2&];
UNE,10:Auto,11:RTL,12:Loiter,15:Guided,17:TAKEOFF// @User: StandardGSCALAR(flight_mode9, &FLTMODE9&, FLIGHT_MODE_9),
4.在config.h中修改两个飞行模式通道的默认值为5和6
#ifndef FLIGHT_MODE_CHANNEL
# define FLIGHT_MODE_CHANNEL
#ifndef FLIGHT_MODE_CHANNEL2
# define FLIGHT_MODE_CHANNEL2
片上程序修改完毕后,已经可以在地面站通过参数设置修改新增的参数来使用9种飞行模式,也可以如下修改MissionPlaner代码,通过界面使用9种飞行模式:
1.APM地面站的飞行模式设置界面在GCSViews\ConfigurationView下,由ConfigFlightModes这一界面类实现。所以我们首先修改它,并添加飞行模式6到9.
2.在上述类中,有一个定时器不断循环,检查飞控获得的遥控输入通道,根据此计算当前飞行模式,显示在界面中,见timer_Tick()函数。修改其中的readSwitch函数,使得从两个通道计算飞行模式的逻辑与修改过的apm单片机上相同。
此处,(int)(Port.MAV.param[&FLTMODE_CH2&];这句可以获取飞控中的参数值。
3.MissionPlanner软件采用为了实现全球化,通过资源指定界面中的文字。因此需要修改资源文件ConfigFlightModes.zh-Hans.resx修改界面上的相关文字。
上述修改,都在下属github中托管,欢迎大家参考:
Arduplane:/xttyyy/arduplane3.2.1-takeoff-8mode/
ArduPlane.hex是修改后的的ArduPlane3.21版本固件,可以直接烧录到APM中.
Missionplanner:/xttyyy/MissionPlanner/
至此,飞控片上代码和地面站已经修改完毕,可以正确的使用9种飞行模式了.下一期,将会以固定翼为例,分析apm代码对飞行器的稳定控制,并添加一个直接的起飞模式,简化apm固定翼的自动起飞。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5404次
排名:千里之外pix的地面站可以接入摇杆飞行吗_航模吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:144,879贴子:
pix的地面站可以接入摇杆飞行吗收藏
我想在家飞,PIX的地面站MP,QGD可以连接摇杆通过数传操作飞机吗,降落时再拿遥控器出去降落
台立航模电机绕线机,专业生产飞叉绕线机,机器稳定,操作简单,效率高!
66666好想法
散太快的X55啊听说这款摇杆的左手杆杆头太大不适合亚洲人的手型?
但是是数传控制,反应速度非常坑爹
风雷盒子?
四年前我去找小姐,当时十多岁的她样子看起来特别单纯,过程中我问戴不戴套,她说随我 反正觉得无所谓,三天后我发现我他妈中弹了,本来想找她臭骂她一顿的,然后见了她 看她一脸无助的样子我却觉得心里有些许难过,她为什么不去治,为什么那么不在意自己,她肯定经历了很多不该经历事情 。我想知道她的故事。后来我带着她一起去治了,我们都治好以后她偶尔会叫我去她出租房坐坐,每次去她都做一桌的菜给我,当然还各种满足我,帝王般的待遇。还把她存的钱给我,叫我买我想买的东西,我问她为什么要把自己攒的钱给我,她小声的回我说以前从来没人关心过她更别说带她治病了,就这样我们在一起一年多,她总是对我那么的好,我想和她结婚,对我想和一个小姐结婚,我告诉她我想娶她她却沉默了,过了一会她又小声的说“我脏,我没资格做人的妻子”叫我好好找一个好姑娘结婚,不久她就悄悄离开了这座城市!抬头看一眼蔚蓝的天空,我一点都不难过,因为这是我复制的,
这个不是fsx摇杆吗
主要看遥杆什么接口。。
用风雷盒子可以
可以,mp自带,wiki上有清楚的教程
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或谁问各位大神,我用的乐迪PIX,一直连不上地面站 - 飞行控制系统 - 模友之吧 - Powered by Discuz!
后使用快捷导航没有帐号?
查看: 513|回复: 21
[已解决]谁问各位大神,我用的乐迪PIX,一直连不上地面站
该用户从未签到&
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
谁问各位大神,我用的乐迪PIX,一直连不上地面站,但飞控的灯是亮的,我用W10个W7系统都试过,一直连不上
mhucwzuhsgd9r9.jpg (96.51 KB, 下载次数: 1)
01:02 上传
010243sya6zsm2z2s2q6n0.jpg (59.85 KB, 下载次数: 0)
01:02 上传
把本文推荐给朋友或其他网站上,每次被点击增加您在本站积分:1牛币 1推广
该用户从未签到&
请加飞天狼微信ftlzzy,大家一起打造中国最大航模爱好者朋友圈。
TA的每日心情开心 11:23签到天数: 1 天[LV.1]初来乍到&
&&&本楼为最佳答案&&&
com口选择没?波特率115200 对吗?
该用户从未签到&
看下驱动装上了
该用户从未签到&
别选自动选com口看有Px4没
该用户从未签到&
顶顶哦……
该用户从未签到&
检查驱动,我的电脑右键设备管理看看有没有黄色感叹号,如果有用360驱动大师自动装驱动,然后再换根数据线试试
TA的每日心情开心 06:43签到天数: 26 天[LV.4]偶尔看看III&
多试试吧!
TA的每日心情开心 06:37签到天数: 39 天[LV.5]常住居民I&
多试试,不行就重装软件驱动吧
该用户从未签到&
看看串口号
反馈建议:
扫码关注微信公众平台
提供技术支持 &Powered by
| 冀ICP备号&君,已阅读到文档的结尾了呢~~
广告剩余8秒
文档加载中
本为介绍开源飞控项目APM for PIXhawk所支持的飞行模式,内容来自官网,但是根据个人经验重新整理总结,希望对玩儿飞控和多轴的朋友们有所帮助。
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
10.PIXhawk飞控笔记-第九章飞行模式
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 apm地面站地图 的文章

 

随机推荐