Pixhawk 添加超声波定高

  记录一下自己在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方式发出去,也是一样的道理;

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

原文地址:https://www.cnblogs.com/vh-pg/p/8342565.html

时间: 2024-11-12 15:32:08

Pixhawk 添加超声波定高的相关文章

基于超声波的四轴定高控制简析

笔者是来自武汉理工的小青同学,接下来为大家讲一下基于超声波的定高问题,鉴于笔者能力有限,所以如有错误请多指教,且很多仅仅是工程上的近似化应用,没有做过仿真模拟. 我讲的东西更加偏重于实践,可以帮助你切实的实现这个应用! 基于超声波的定高主要有如下几个问题: 硬件和安装技巧? 超声波测距的算法(如何编程,如何处理结果)? 是用什么样子的PID算法? 如何调试更加快捷? 实际开发将会遇到哪些棘手问题? 定高控制如何实现较为稳定为起降? 笔者做定高用了一个星期,而且参考了别的算法,实现比较简单,但是真

MWC飞控增加声纳定高的方法

MWC飞控增加声纳定高的方法 现状 MWC开源飞控已经很有点年头了,现在好多新的穿越机改用CC3D.航拍机改用APM,商业化的飞控也很多了.但是MWC作为基于Arduino的开源飞控,可以说非常成熟而且代码简单易懂,便宜,效果也不错,所以我的四轴平台依然采用了MWC飞控.MWC2.4相对前代的改进,主要是加入了对串口GPS的支持,修复了声纳崩溃问题,以及改进了计算实时性.但是声纳定高依然没有得到官方支持(包括I2C声纳).新加入的GPS支持,由于占用内存过高,实际上在Mega之外的Arduino

一个定高,一个高度自适应的布局

Problem:父元素内包含两个子元素,一个定高,另一个高度自适应 Ans: <div class="box">    <div class="ele1"></div>    <div class="ele2"></div></div> (1)  .box {      width:200px;      height:300px;      background:red; 

div表格定高垂直居中,水平居中

近日做项目,遇到一个难题:就是用div ul li 做表格时,要不就是水平居中不了,要不是垂直居中不来 垂直居中用vertical-align: middle;,但是浮动把它给无效化了 因为定高,所以用不了行高 如何解决垂直居中呢? 就是在li里面加一个标签 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" con

离场定高转弯DF与CF的对比

也许是刚学会CAD的缘故,配合风螺旋插件,画图的感觉真是蛮爽的,忍不住画了一张又一张. 接着昨天的离场保护区,我们来聊一下PBN指定高度转弯保护区的画法.指定高度转弯的计算本身没有太多复杂的地方,真正复杂的是DF(直飞定位点)与CF(沿航迹飞至定位点)飞行方式上的差别.规范里有这样两张图例: 图III-2-2-9 定高转弯接DF航段 图III-2-2-8 定高转弯接CF航段 先画起来,再来分析. 一.基础参数计算: 使用昨天的转弯最晚点距DER(起飞跑道末端) 13km左右的图为底图,离场转弯高

bos 第5天(定区的添加、定区的分页查询、hessian远程调用实现获取客户信息)

BOS项目笔记 第5天 今天内容安排: 1.添加定区功能 2.定区分页查询 3.hessian入门----远程调用技术 4.基于hessian实现定区关联客户 1. 添加定区 定区可以将取派员.分区.客户信息关联到一起. 页面:WEB-INF/pages/base/decidedzone.jsp 第一步:使用下拉框展示取派员数据,修改combobox的URL地址,发送请求 第二步:在StaffAction中提供listajax方法,查询没有作废的取派员,返回json数据 第三步:在StaffSe

轻松搞定高并发:详解Redis的五种数据类型及应用场景分析!

一.Redis基本概念介绍和特性 1.1 Redis基本概念介绍 1.Redis是远程的,有客户端和服务端,我们一般说的是服务端: 2.Redis是基于内存的,所以比基于硬盘的MySQL要快很多,但非常吃内存 3.Redis是非关系型数据库.本质上也是数据库,但MySQL关系型数据库存储时必须定义数据词典,而Redis则不需要. 1.2 Redis 和 Memcached比较 Redis数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的

table头部、尾部固定;中间内容定高自适应滚动

很多时候,需要使用到表格做数据分析,不管是前端展现,还是后台管理系统节点展现 工作过程中遇到了,作为一个小笔记,备忘! 如下图所示 --------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------

过的痕迹合格的籍贯广东卷定高的

人生三大幸事莫过于成长有一对好父母,上学有一位好老师,工作有一位好领导! 根据微博内容了解到,@猫妖安妮的幸运在于,她最新进入的一家公司的领导会手把手的教她,新同事会鼓励她帮助她,每天她都会觉得很开心,让她觉得在"魔都"也会有这样的一片蓝天. http://wenda.tianya.cn/question/19jlibfvgeibabo6phjovjqm76bad9o8kqj64 http://wenda.tianya.cn/question/19jlibpo0p5b1l6kdp38h