行业资讯
📅 2026/8/14 14:12:33
用Python让AWR1843毫米波雷达数据在屏幕上实时跳动,比想象中简单
用Python让AWR1843毫米波雷达数据在屏幕上实时跳动比想象中简单【免费下载链接】AWR1843-Read-Data-Python-MMWAVE-SDK-3-Python program to read and plot the data in real time from the AWR1843 mmWave radar board (MMWAVE SDK 3)项目地址: https://gitcode.com/gh_mirrors/aw/AWR1843-Read-Data-Python-MMWAVE-SDK-3-桌上摊着一块AWR1843毫米波雷达板数据口每秒往外吐几万字节的二进制流。如果你直接拿串口助手去读看到的只有一堆乱码一样的十六进制。可旁边那位同学的屏幕上一个散点图正随着他来回走动实时移动——每个点都代表一个被雷达看见的目标。毫米波雷达数据可视化真的需要先啃完一本信号处理教材才能做吗这个基于Python 3的开源小项目给出的回答是不用装好依赖就能跑。二十分钟第一次看到数据点动起来我拿到这个项目的第一反应是找README结果发现它短得出奇核心用法就四句话装包、改配置文件名、改串口号、运行。我照着做全程没超过二十分钟。先把仓库拉到本地git clone https://gitcode.com/gh_mirrors/aw/AWR1843-Read-Data-Python-MMWAVE-SDK-3-然后装三个依赖numpy负责数组计算pyserial代码里 import 的是 serial负责读串口pyqtgraph负责画那个实时散点图。接下来要动的地方只有两处。第一处是文件开头那句configFileName AWR1843config.cfg仓库里其实带了两份配置文件默认用的是 AWR1843config.cfg如果你想要另一套测距测速参数改成 1843RangeDoppler.cfg 就行。第二处是串口号——程序里已经写好了两套示例Windows 下是 COM8CLI口115200波特率和 COM9数据口921600波特率树莓派下则是 /dev/ttyACM0 和 /dev/ttyACM1。按你自己的设备管理器或 dmesg 结果改一下保存python readData_AWR1843.py回车。如果一切顺利你会看到一个白底的二维坐标图X 轴范围从 -0.5 到 0.5 米Y 轴从 0 到 1.5 米然后——几个小圆点出现了。你往前挪一步点就跟着往前挪。那一瞬间还是挺有成就感的。运行那一刻程序到底在忙什么点一下鼠标启动程序背后其实是四件事按顺序发生理解了这个之后调参数心里就有底了。第一件事serialConfig()把 CLI 口和数据口分别打开然后一行一行把 .cfg 文件里的命令发给雷达板。这些命令不是随便写的比如profileCfg定义了发射频率、采样点数frameCfg定义了每帧的 chirp 数量、帧周期雷达板收到后就知道自己该怎么发波、发多久。注意 CLI 口用的是 115200数据口用的是 921600两个波特率不一样是故意这么设计的别接反。第二件事parseConfigFile()把同一份配置文件又读了一遍但这次是解析把numRangeBins、numDopplerBins、距离分辨率、最大测距、最大速度这些算好的参数塞进一个字典里。它是从 TI 官方 Matlab demo 移植过来的所以这套解析思路和 Matlab 版本一脉相承。第三件事是重头戏readAndParseData18xx()负责从数据口读字节流。雷达发下来的数据是带帧结构的每一帧开头有 8 个字节的魔数magic word程序就是在缓冲里找这个魔数确认找到帧头之后再按固定格式把帧号、目标数量、还有一串 TLV 消息读出来。目前它只实现了 TLV 类型为 1 的检测对象数据包也就是每个目标的三维坐标和多普勒速度。range profile、range-azimuth 热图这些数据包代码注释里写得很清楚思路一样只是还没实现。第四件事update()把解析出来的目标点交给 pyqtgraph 画成散点主循环以大约 30Hz 的频率不停地读一帧、画一帧。因为 pyqtgraph 本身是高性能绘图库几十个点刷新起来毫无压力画面非常跟手。你会在屏幕上看到什么数据长什么样画面本身很朴素一个散点图没有任何花哨的按钮。但朴素不等于简单——每一个点背后都对应一组真实测量值。readAndParseData18xx()每次返回一个字典长这样{ numObj: 3, # 这一帧检测到 3 个目标 x: [0.12, -0.05, 0.30], # 米 y: [0.55, 0.80, 0.20], # 米 z: [-0.02, 0.01, 0.05], # 米 velocity: [0.4, -0.2, 0.1] # 米/秒多普勒速度 }x、y、z 是目标相对雷达的三维坐标velocity 是多普勒速度正负号代表目标在靠近还是远离。画图的时候默认取的是 x 和 y也就是俯视视角人在雷达前方走动时点的移动方向和他的实际运动方向是对应的。另外每一帧的数据都会被存进frameData这个字典数组里帧号递增也就是说跑完一段之后你手里其实攒下了一份完整的带时间顺序的测量记录可以事后回放、分析。新手最容易踩的四个坑我这一路踩过的坑基本就集中在下面几处提前知道能省不少时间。坑一串口号不对程序看起来没反应。最常见的是 Windows 下 COM 号写错或者树莓派下板子没识别成 ttyACM。树莓派上如果提示没有权限访问串口通常是当前用户不在 dialout 用户组里加一下组再重新登录就行。坑二CLI 和数据口接反。一个 115200、一个 921600如果程序迟迟没有任何输出先检查是不是把两个口对调了。坑三天线没用满却不改参数。代码里numRxAnt和numTxAnt默认写死成 4 和 3如果你的板子配置只用了部分天线需要同步改这两个值否则后面算出来的距离、速度分辨率会不对。坑四配置文件解析报错。配置文件里不要混入奇怪的换行符或多余空格改配置时尽量保持原有格式只改数字。还有个小细节退出程序时直接按 CtrlC 就行程序会自动给板子发一条sensorStop命令并关闭串口不用手动断电。拿到手之后还能怎么玩跑通只是开始这个项目留了不少可以发挥的余地。想调探测范围两份 .cfg 文件就是现成的对比样本一个最大测距约 9 米一个约 3.4 米试着改profileCfg里的采样点数、frameCfg里的帧周期看看画面里的点分布怎么变。这比看十页文档都直观。想要更丰富的信息z和velocity其实都已经解析出来了只是默认没画。你完全可以给点按速度着色或者把 z 也加进去做三维显示。想接入别的系统每一帧数据都进了frameData可以在这里加一段代码把数据转成 JSON 发出去无论是接上位机、写日志还是喂给别的算法都是一个很小的改动。项目本身基于 MIT 协议开源改起来没有心理负担。如果你手头正好有 AWR1843 板子或者正在为树莓派上读雷达数据发愁不妨照这篇文章走一遍。二十分钟换一个看得见的实时雷达画面这笔账怎么算都划算——下一步的玩法就交给你自己了。【免费下载链接】AWR1843-Read-Data-Python-MMWAVE-SDK-3-Python program to read and plot the data in real time from the AWR1843 mmWave radar board (MMWAVE SDK 3)项目地址: https://gitcode.com/gh_mirrors/aw/AWR1843-Read-Data-Python-MMWAVE-SDK-3-创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考