新闻资讯

News Center

Surer技术分享会【9】:单点测距激光雷达在INAV上的运用


发布时间:

2025-12-22

前言

INAV源码中已经包含了一些测距传感器源码,这些源码保存在src/main/drivers/rangefinder文件夹下。本次驱动移植在Ubuntu22.04系统上完成,INAV版本为8.0.1版本,inav-configurator同样为对应的8.0.1版本,此处上位机与源码版本不一致时,源码版本较低时会出升级提示。飞控板随机选择了RadioLink-F722板卡。相对于PX4-Autopilot,INAV源码提供的调试手段较少,整体飞控代码量也较少,CLI命令行也没有Mavlink好用,移植时模组连接至串口2上,在串口3上外接一usb转串口模块,通过串口3上输出信息来调试整体代码。连接的usb转串口模块仅需保证板卡Tx接Rx上即可。本次移植过程中也在源码中外加调试用的串口部分,实际移植运行时也可完全删除。

1、INAV源码安装

在inav文件夹下执行源码自带的build.sh脚本

提示没有docker,目前docker用不上,移除脚本中与docker相关指令

重新执行build.sh,脚本将新建对应的文件夹,进入build文件夹,执行cmake.,源码将下载arm编译链文件。

2、INAV源码编译对应目标hex文件
在inav/src/main/target文件夹中找到是否存在所用飞控板对应的文件夹,直接通过make加对应目标板即可编译。

3、通过INAVConfigurator烧写固件
按住飞控板上DFU按键后再将板卡连接至电脑上,链接上后松开按键,上位机上将显示进入DFU模式。

通过从本地电脑加载build文件中的inav_8.0.1_RADIOLINKF722.hex文件,点击烧录固件将hex烧录进板卡。

完成以上步骤后将开始源码移植。

4、驱动源码增加
源码驱动修改一共需要更改8处地方

INAV源码中存在一个空白测距仪虚函数类,自定义的驱动本质上是根据对已有的虚函数进行功能填充。源码实现全部放在一个c文件中即
可,源码文件放置在inav/src/main/io文件夹下。

rangefinder_swzn.c

在源码这一行

我使用了串口3作为LOG输出,如果你运行时需要输出,改成对应端口。此外需要注意的是,INAV中测距传感器是采用声呐形式进行上位
机展示,其数据单位为厘米,需要在数据解析中将模组输出的毫米单位转为厘米单位。
修改测距仪虚函数部分,使新加的驱动能够被选择识别,更新inav/src/main/sensors/rangefinder.h与inav/src/main/sensors/rangefinder.c
代码。
rangefinder.h

rangefinder.c

修改生成可执行文件的通用配置文件inav/src/main/target/common.h

下一步,需要将源文件路径添加至CmakeLists中,使源码在编译时能被识别编译。在inav/src/main文件下的CMakeLists.txt文件中增加路径

5、配置文件修改
完成步骤2并编译烧写固件后,上位机端并不能识别新增加的驱动型号,需要更改一些配置来使上位机端能够配置。INAV源码中与上位机
端的配置文件在inav/src/main/fc/settings.yaml中。在rangefinder_hardware中增加值“SWZN”。

修改配置yaml文件后,还需要修改inav/CMakeLists.txt使其生效。需要清除编译缓存,重新生成配置相关内容。在CmakeLists中增加如下
内容后重新执行cmake和make指令。

如果遇到重新编译后依旧无新模组选项,删除build文件夹,新建新的build文件夹。

6、运行

 

原文链接https://blog.csdn.net/2501_91893363/article/details/149396039?spm=1001.2014.3001.5502

 

 

 

 

 

南京抒微智能科技有限公司,致力于高性价比光电传感器技术开发及其应用解决方案产业化!

官方网站:http://www.surertech.cn/

商务合作:  13390789331        025-58327981