PX4代码中LIDAR-Lite v3激光测距仪PWM驱动

2023-05-16

调试了LIDAR-Lite v3激光测距仪PWM驱动,在这里做一下记录。

飞控硬件是pixhawk1,PX4软件版本为1.7.3。

按照官方教程进行接线和配置,链接为 https://docs.px4.io/en/sensor/lidar_lite.html。

PWM的接线方式为:

        

这里接了 AUX_PWM 的 CH6 来供电,接 CH5 进行 PWM 捕获。而实际上飞控的 AUX_PWM 是不带电的,除非有 BEC 接入,没有的话需要将供电口接入其他接口上的 5V 电源,比如 I2C 口的 5V 电源就可以。

LIDAR-Lite v3激光测距仪PWM模式的工作原理是,当激光测距仪的PWM输出引脚被拉低时,就向外输出一个脉冲信号,其脉宽就表示测距数值,10us/cm。如图接线,将①接飞控的GND,②接飞控的PWM采集口,就可以利用PWM捕获方式来获取脉冲信号的脉宽进而得到测距数值。

在rc.sensors启动文件中,对应的启动脚本为:

# Sensors on the PWM interface bank
if param compare SENS_EN_LL40LS 1
then
	if pwm_input start
	then
		ll40ls start pwm
	fi

可以看到,当设定参数SENS_EN_LL40LS = 1时,会执行脚本 pwm_input start 和 ll40ls start pwm,前者打开PWM输入的对应线程,后者打开LIDAR-Lite v3激光测距仪的对应线程。

在 src/drivers/pwm_input/pwm_input.cpp 文件中, pwm_input start 脚本实际调用了 pwmin_start() 函数,建立一个 PWMIN 类的例程; PWMIN::init() 函数建立一个深度为2的循环队列,与上一篇的作用类似,可以实现在多线程间异步读取; PWMIN::open() 函数会进行调用 PWMIN::_timer_init() 函数进行定时器设定,设定工作模式为PWM捕获模式,需要利用定时器的两个通道,让定时器的计数间隔为1us,向上计数模式,最大值为0xFFFF;当定时器获取到一个新的上升沿时,触发中断,进入中断服务函数 pwmin_tim_isr() ,在这里读取了上一个上升沿到本次上升沿的时间 period,中间经历的高电平脉宽 pulse_width,以及中断状态 status,并发布 pwm_input 消息;而 PWMIN::read() 函数则是从上述长度为2的循环队列中读取数据,其原理在上一篇中已经说明。

定时器中断一旦设定好之后就会由外部 PWM 输入事件触发,不受系统调度控制,当中断事件发生时,中断服务函数就会被调用。因此发布 pwm_input 消息的频率是由外部 PWM 输入事件决定的。

在 src/drivers/ll40ls/LidarLitePWM.cpp 文件中,读取测距数值的代码是 LidarLitePWM::collect() 函数,首先进行  ::open() 打开设备,实际上就是上面的 PWMIN::open() 函数,如果没有打开过就会设定时器,已经打开过了就继续运行不再设定,利用 ::read() 来读取数据,实际调用 PWMIN::read() 上面已经说明。

在 LidarLitePWM 进行数据读取时按照设定的周期进行的,原理与上一篇相同,就是反复将读取函数加入 work_queue(),由此可见,中断进行数据读取和这读取的数据实际是不同步的。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PX4代码中LIDAR-Lite v3激光测距仪PWM驱动 的相关文章

  • PX4模块设计之二十一:uORB消息管理模块

    PX4模块设计之二十一 xff1a uORB消息管理模块 1 uORB模块构建模式2 uORB消息管理函数2 1 状态查询2 2 资源利用2 3 模块启动2 4 模块停止3 uORB消息接口3 1 消息主题注册3 2 消息主题去注册3 3
  • PX4模块设计之二十六:BatteryStatus模块

    PX4模块设计之二十六 xff1a BatteryStatus模块 1 BatteryStatus模块简介2 模块入口函数2 1 主入口battery status main2 2 自定义子命令custom command 3 Batter
  • PX4模块设计之三十九:Commander模块

    PX4模块设计之三十九 xff1a Commander模块 1 Commander模块简介2 模块入口函数2 1 主入口commander main2 2 自定义子命令custom command 3 Commander模块重要函数3 1
  • PX4模块设计之四十五:param模块

    PX4模块设计之四十五 xff1a param模块 1 param模块简介2 模块入口函数param main3 重要函数列表4 总结5 参考资料 1 param模块简介 Description Command to access and
  • Camera-LIDAR 联合标定方法总结

    项目需要融合雷达和相机 xff0c 所以要做联合标定 xff0c 记录下收集的标定方法 一 总体标定步骤 标定就是找到雷达到相机的空间转换关系 xff0c 在不同的坐标系之间转换需要旋转矩阵 R 和平移矩阵 T xff0c 为后续的雷达和相
  • LiDAR 6 FMCW

    FMCW是TOF之外的另一种方式 xff0c 利用光波的调频实现目标的探测 光的波粒二象性 多普勒效应 系统架构 当系统的复杂程度上升后 xff0c 能够采集到的信息也更多 xff0c 包括距离和速度 采用OPA扫描的FMCW激光雷达设计
  • px4下载指定版本的固件、git用法

    https hub fastgit org PX4 PX4 Autopilot git describe tag 查看当前版本号 git tag l 查看所有版本 xff0c 也就是打个tag git checkout v1 9 1 跳转到
  • PX4飞控之自主返航(RTL)控制逻辑

    本文基于PX4飞控1 5 5版本 xff0c 分析导航模块中自护返航模式的控制逻辑和算法 自主返航模式和导航中的其他模式一样 xff0c 在Navigator main函数中一旦触发case vehicle status s NAVIGAT
  • 基于STC89C52的智能小车——PWM调速篇

    虽然我的小车因为电池电压太低慢的要死 xff0c 不过PWM还是要学的 PWM简单来说就是通过调整占空比 xff08 一个时间段 t 内电机运行的时间占总时间的比例 xff09 来调整小车速度 当然为了小车运行稳定 t 必须很小 xff0c
  • 大神浅谈无人机飞控软件设计 系统性总结

    写在前面 深感自己对飞控软件 算法的知识点过于杂乱 很久没有进行系统的总结了 因此决定写几篇文章记录一些飞控开发过程的知识点 主要是针对一些软件 算法部分进行讨论 如内容有错误 欢迎指出 1 飞控软件的基本模块 无人机能够飞行主要是依靠传感
  • 快速学习Stm32舵机控制板控制一个舵机运动

    PWM是什么 PWM 英文名Pulse Width Modulation 是脉冲宽度调制缩写 它是通过对一系列脉冲的宽度进行调制 等效出所需要的波形 包含形状以及幅值 对模拟信号电平进行数字编码 也就是说通过调节占空比的变化来调节信号 能量
  • 自定义速腾激光雷达点云XYZIRT格式并调用PCL库进行滤波

    目录 一 试验程序源代码 1 1需要包含的头文件 1 2定义点云结构 1 3主函数 1 4 CMake文件 二 学习pcl PCLPointCloud2 Ptr 2 1区别 2 2转换 2 3心得 Windows 10 Ubuntu 20
  • 直流电机控制 pwm 和 pid 算法

    下面的文章是我转载的 所以作者若是看到不允许转载 请给我留言或给我邮件 lushiliangcsdn 163 com 我会立即删除 转载原因 这篇文章把pid 算法解释的很详细 我担心以后这篇文章无故删除 才转载到我这边的 谢谢 转载来源于
  • STM32 PWM基本知识及配置过程

    STM32 PWM基本知识及配置过程 将通用定时器分为四个部分 1 选择时钟 2 时基电路 3 输入捕获 4 输出比较 本节定时器PWM输出主要涉及到定时器框图右下方部分 即输出比较部分 和上一讲相同 时基时钟来源于内部默认时钟 对此有疑问
  • 使用HAL库开发STM32:使用Timer输出PWM信号

    文章目录 目的 基础说明 输出PWM信号 总结 目的 单片机输出PWM信号是很常用的一种功能需求 STM32中通常使用Timer来输出PWM信号 这篇文章将对相关内容做个说明 基础说明 在使用Timer输出PWM信号需要了解一些Timer的
  • Difference Between LiDAR and RADAR——LiDAR和RADAR的不同

    Difference Between LiDAR and RADAR 原文连接 https www differencebetween com difference between lidar and vs radar 翻译 RADAR和L
  • stm32定时器与定时器中断

    1 定时器种类 注 主要使用通用定时器 2 通用计时器特点描述 说明 四个通道互不影响 3 定时器中断触发条件 4 定时器计数模式 分为向上 向下 向上向下模式 5 通用定时器作用用途 测量输入输出波长度等 说明 每个定时器完全独立没有共享
  • rs lidar速腾激光雷达使用方法之录包及离线播放

    目录 一 录包packet 1 修改雷达参数配置config 2 录包 二 播放包 1 修改雷达参数配置config 2 编译 运行驱动 3 播放包 一 录包packet 1 修改雷达参数配置config 可以直接录制点云消息 但这种方法会
  • 在SQL Server 2008上优化7000万个极高密度空间点云的最近邻查询

    我的 SQL Server 2008 R2 Express 数据库中有大约 7500 万条记录 每个都是对应于某个值的经纬度 该表有地理列 我正在尝试为给定的纬度经度 点 找到一个最近的邻居 我已经有一个带有空间索引的查询 但根据记录在数据
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后

随机推荐