博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pixhawk 添加超声波定高
阅读量:6847 次
发布时间:2019-06-26

本文共 1555 字,大约阅读时间需要 5 分钟。

  记录一下自己在Pixhawk上添加超声波模块进行定高的过程:

  硬件:Pixhawk2.4.8(APM3.5固件)、STM32开发板、几块钱一个的超声波模块

  软件:Mission Planner、Keil(STM32编程用)

 

  过程:

  1.分析官方给出的各种RangFinder的添加方案和源码,确定使用STM32单片机读取超声波数据,然后以串口方式发送给Pixhawk飞控。

   相关源码链接:https://github.com/ArduPilot/ardupilot/tree/master/libraries/AP_RangeFinder

   官方给出的传感器添加方式:http://ardupilot.org/copter/docs/common-rangefinder-maxbotixi2c.html

   对AP_RangeFinder_LightWareSerial.cpp进行分析:

    

 

   通过阅读以上代码,可以得出两点信息:

    a. 数据以字符串形式发送(单位为m),以回车符'\r'结尾;

         b.两次数据发送的时间间隔要小于200ms;

 

  2.在Mission Planner中进行相关配置(以下图片为盗用):

  首先配置串口,这里我们配置串口4,波特率为115200,协议选择9:Lidar

  这里要特别注意,要保证其他的串口协议不为9,否则程序在运行时可能会在其他串口处找数据!

  

  其次对RNGFND相关变量进行配置:

   RNGFND_TYPE设为8,因为我们参考的是LightWareSerial的数据包格式;

  RNGFND_MIN_CM和RNGFND_MAX_CM是设置超声波的距离范围;

  其他几项如下图:

  

  配置完之后,点击右侧Write Param;

 

  3.STM32单片机编程

   这里就不再详述,就是配置一个STM32的定时器,输入捕获获取超声波距离值,然后配置一个串口,波特率115200,以字符串形式向外发送数据;

 

  4.接线,测试:

    把两个板子的串口连接起来,打开Mission Planner,就可以在State中的sonarrange处看到我们发过去的距离信息

   

  

 

  总结:

    以上为串口通信方式添加,如果以IIC或AD方式,只要查看源码对应部分的信息即可,IIC方式是把距离值分成高八位和第八位发出去;

    网上有人用Arduino连接超声波,然后以IIC方式发出去,也是一样的道理;

         (以上图片均为盗用,但自己确实实现了,只是不想再去接线)

 

 

  2018.1.31 补充

  补充一点这几天调试遇到的问题:

  1.sonarrange有数据,并不代表飞行时用的就是该数据,要在参数列表中找到EKF2_RANGE_USE_HGT参数,改掉-1,这样才能使用超声波的数据(也有可能是EKF3_RANGE_USE_HGT,需要看自己使能的是哪个扩展卡尔曼滤波);

  2.对于pixhawk的定高模式,自己在调试时总是无法实现定高,后来发现问题。这里记录一下自己对如何使用定高模式的理解:

    在定高模式下,油门的40%-60%为死区,也就是说,在这个区间内,飞机会自己调节油门以维持一定高度不变,如果想要改变高度,则把油门拉出该区间即可,此时油门对应的是飞机上升下降的速率,一旦到达想要的高度,立刻把油门拉回该区间,即可实现定高。

    自己的问题在于,在油门为30%左右时由自稳切到定高,切到定高后并未把油门拉到50%左右,以致飞机总是掉高。

 

转载于:https://www.cnblogs.com/vh-pg/p/8342565.html

你可能感兴趣的文章
android 仿摩拜单车共享单车进度条实现StepView
查看>>
Linux服务列表(CentOS)
查看>>
Vim简明教程【CoolShell】
查看>>
微信开发
查看>>
新版POI如何获取日期类型的cell的值
查看>>
【转】OpenCV—imread读取数据为空
查看>>
vim折叠设置(转载)
查看>>
绘图、Core Animation与硬件架构
查看>>
MySQL字符集及校对规则的理解
查看>>
《打造七星级团队》观后感
查看>>
Odoo(OpenERP)开发实践:数据模型学习
查看>>
正则表达式规则
查看>>
HDU 5344(MZL's xor-(ai+aj)的异或和)
查看>>
HDU 4782 Beautiful Soup(模拟)
查看>>
怎么样才算是精通 C++?
查看>>
P2661 信息传递
查看>>
从Freelancer的热门Skill看看你应该学什么?
查看>>
做互联网服务的一些心得碎语
查看>>
几种不同类型的消息队列
查看>>
ssh2项目整合 struts2.1+hibernate3.3+spring3 基于hibernate注解和struts2注解
查看>>