蓝点UWB实战

蓝点UWB实战

我们无人小车大创需要用到UWB来进行定位,我们挑选了性价比高的蓝点BP-TWR-30来进行小车实验的定位装置。

下面将进行一系列实验,看如何将这个UWB用在项目中。

用户手册

产品提供了完整的用户手册,可以根据用户手册进行一些列的操作。

image-20231014144325836

三个基站一个标签。

image-20231014145402023

上电测试

标签上电测试

image-20231014145417463

基站上电测试

image-20231014145451450

基站和标签同时上电测试

image-20231014145509342

安装软件

  1. 安装STM32 ST-LINK Utility
  2. 安装Stlink V2驱动

image-20231014150044104

image-20231014150102799

3.安装串⼝驱动 image-20231014150226442

  1. 安装MDK
    点击Next,后面也是点击Next(采用默认配置就好,当然你也可以修改配置) image-20231014150500592

image-20231014150535183
这个用户名和公司可以随便填。

image-20231014150639647

安装过程需要一段时间。
image-20231014150809128

image-20231014151409773

image-20231014151426813

下载测试HEX

由于设备发货前,已下载测试HEX,所以这步可以先跳过。

发现后面还是会涉及到HEX烧录,所以也不妨在这里进行练习。

正式HEX

image-20231014165130163

源码的解压密码是www.51uwb.cn

打开软件Keil uVision5image-20231017205759665

选择ST-Link

image-20231014193839868

image-20231014194053775

image-20231014194203722

image-20231014194223713

image-20231014194322585

image-20231014194512643

根据实际情况修改代码:

image-20231014194743225

当前由于拷的是基站,所以定义RX节点,SHORT_ADDR定为0x0001

image-20231014195204999

image-20231014195546524

image-20231014200237720

image-20231014200443249

image-20231014200746666

查看串口信息

image-20231014201356186

image-20231014201411746

image-20231014201450841

image-20231014201518139

image-20231014201629393

image-20231014201954720

image-20231014202009789

定位

定位的话就是利用三个基站获取的信息计算出小车的位置。

由于源程序默认是把三个基站的信息集中到基站0,然后再从串口读取出来,但我们的项目是要求在小车上进行运算,也就是下一步要修改一下源代码,使得三个基站的信息可以集中到标签上,然后小车从标签读取三个距离信息

源代码修改

目前想要修改一下代码,使得三个基站的信息可以集中到标签上,然后小车从标签读取三个距离信息

然而发现有点无从下手。因为源代码还挺长的,附带的教程也有点长。没有想象中的那么简单。

不过发现这是一个比较普遍的需求,所以论坛上有答案:
如何将定位信息通过标签串口传输到PC - 基础知识 51uwb.cn

UWB学习

基本概念

dw1000是符合UWB协议的一个芯片.

dwm1000是一个模组,它实现无线传输,并不是说一定要用来测距定位。

TWR和TDOA是软件算法实现,DWM1000是硬件。

测距定位:稳定度比精度更加重要。

两个模块之间的时间差可以换算距离,时间差除了空中传播,还有天线本身的延迟(和设备本身有关)。

UWB发的信号是高频的,障碍物对精度的影响会比较大。(实测1个手掌有10cm精度的定位影响)。

代码修改

修改Applicaton/User/Core的tx_main.c文件的Send_Dis_To_Anthor1函数。

添加代码image-20231024202246266

USART_puts((char*)msg_f_send.messageData,len);

发现不行,编译失败,提示没有USART_puts这个函数。

image-20231024202450746

看来不是用这个函数。

然后找到了另外一个帖子。标签通过串口发送数据 - 问答社区 51uwb.cn

感觉按照他这个做法可行。就是在显示器输出的这个地方(LCD_Display_Distance函数)添加printf。image-20231024203259658

编译成功。

烧录并测试。发现printf的内容有些地方忘改了——都是an1,修改正确后再进行测试。

image-20231024204839372

image-20231024205036934

可以从标签的串口接收到与三个基站的信息。

定位代码实现

有个三个距离信息,我们就可以进行小车的定位了。从之前的经验来看,用这个UWB来做小车定位的人应该挺多的,所以大概率可以直接拿到能用的代码和相关资料。

到蓝点论坛看了一下,发现并没有可以直接用的资料,不过有一些可能会用到的资料,或者说和理想差别比较小的资料:

【开源项目】纯Python TWR算法UWB上位机 - 基础知识 51uwb.cn

【蓝点开源】UWB 运动传感器融合定位 - 基础知识 51uwb.cn

之前感觉这个很容易搞,大概是因为别人都把代码搞好了,现在看来要搞还是要花点心血的。

python上位机

蓝点uwb自带的定位上位机软件是exe文件,而且也不知道怎样输出定位信息。

小车该如何接收到自己定位信息?目前我想了两个方案:

  1. 实现一个python上位机软件,利用标签串口输出的数据计算出定位,然后直接在小车上跑。
  2. 定位上位机软件在电脑上跑,利用基站0的串口输出数据计算出定位,然后电脑再把定位信息发到小车上。

蓝点UWB实战
http://thinkerhui.site/2023/10/31/无人车大创/蓝点UWB实战/
作者
thinkerhui
发布于
2023年10月31日
许可协议