使用UWB模块搭建室内定位系统

注意:本教程仅适用于Kerloud UWB 套件

1. 简介

超宽带(UWB, Ultra-Wideband)定位是一种基于无线电的定位方法,通过测量锚点(固定信标)与标签(安装在无人机上的设备)之间的飞行时间(ToF, Time-of-Flight)来确定距离。 通过精确测量来自多个锚点的距离,系统可通过三边测量法实时计算无人机的三维位置。我们为用户提供 Kerloud UAV UWB 定位套件,作为基于视觉的方法或动作捕捉系统的替代方案。

2. 硬件搭建

该定位系统的搭建非常简单。对于普通用户,推荐使用最小 5m×5m 的测试场地。 需要避免电磁干扰,因为 UWB 信号较易受到干扰,因此在布置场地时应尽量远离潜在的干扰源。

详细的搭建步骤请参考用户手册。简而言之,用户只需布置 UWB 锚点并进行一次在线标定即可。 下图展示了场景布置示意。

../_images/system_setup.png

3. 从官方镜像安装

UWB 定位相关软件包托管于我们的官方镜像站点:https://mirror.cloudkernel.cn 目前软件支持 amd64 与 arm64 架构。建议用户按照以下步骤进行安装与更新。

  1. 下载 Kerloud UAV UWB 套件的发布文件:

cd ~ && git clone https://gitee.com/cloudkernel-tech/dasa_release_files
  1. 下载 deb 文件并安装:

cd ~/dasa_release_files/install
bash download_deb_from_host.sh
bash install_all_deb.sh

安装脚本会自动将软件包部署到机载计算机中。

  1. 锁定已安装的软件包以避免后续 apt 更新造成冲突(推荐)

sudo apt-mark hold ros-melodic-mavros ros-melodic-mavlink ros-melodic-mavros-extras \
&& ros-melodic-libmavconn ros-melodic-dasa-visualization/
&& ros-melodic-mavros-msgs ros-melodic-nlink-parser ros-melodic-uwb-localization ros-melodic-loco-driver

4. 使用说明

  1. 测量 ENU 坐标系下 x 轴的初始偏航角。 用户可手持无人机,将机头旋转至 x+ 方向,并记录 QGroundControl 地面站中显示的偏航角。记该偏航角为 yaw_ned

  2. 从 NAssistant 软件中获取 Nooploop UWB 模块的锚点坐标。

  3. 根据需要修改 dasa_release_files/scripts/single_case 目录下的 dasa_config.yaml 配置文件。

    请注意:变量 yaw_dasa_x_axis_enu 需根据步骤 (1) 中的 yaw_ned 计算得到。

    # param: value
    
    # DASA x 轴在 ENU 坐标系下的初始偏航角,需通过 DASA agent 测量,单位:rad,范围 [-Pi, Pi]
    # 计算公式: yaw_dasa_x_axis_enu = wrap2Pi(pi/2 - yaw_ned)
    yaw_dasa_x_axis_enu: 2.2
    
    anchor_position:
    # 坐标值必须采用 x.x 格式(如 5.0),按顺序编号 anchor0–3
    # 仅在 nl 模式下加载,默认使用 RFU 坐标系
    - [ 0.0,       0.0,        0.0]
    - [-0.13,       6.307,        0.0]
    - [ 2.857,       6.391,        0.0]
    - [ 2.981,       0.0,        0.0]
    
  4. 将配置文件复制到系统级安装的 uwb_localization 软件包目录。

    cd ~/dasa_release_files/scripts/single_case
    sudo cp dasa_config.yaml /opt/ros/melodic/share/uwb_localization/config/
    
  5. 最后,用户可以启动无人机定位所需的所有节点,包括 mavros、UWB 驱动与 uwb_localization。

    cd ~/dasa_release_files/scripts/single_case
    bash run_uav_default.sh
    

若一切运行正常,可在 ROS 主题 /dasa/local_position/pose 中查看定位数据, 其坐标系由 UWB 锚点定义的全局框架决定。

Note

更多应用示例可参考随产品附带的用户手册。