uwb|实现基于双uwb的无人机位置控制

9 篇文章 0 订阅
2 篇文章 0 订阅

背景

考虑到无人机偏航角为磁力计所测得的前右下机体坐标系与北东地惯性系按321旋转时绕z轴的旋转角度,该偏航角在uwb坐标系与北东地坐标系无法完全对齐时不能使用。此时计算期望机体速度时所用的偏航角应为无人机相对uwb坐标系的偏航角

解决办法

在基于uwb的多无人机飞行中,可以采用将多架无人机同时朝uwb基站的同一个方向摆放,通过对各无人机的偏航角融合得到uwb坐标系该方向的地磁朝向,在位置控制时将该角度误差进行补偿
单无人机飞行时,可以在无人机上部署两个已知位置uwb标签,在初始化时通过计算两个标签过后成的向量在uwb坐标系中的方向,融合磁力计所测得的地磁角度,即可以得到uwb坐标系相对北东地坐标系的偏角,并在进行位置控制时予以补偿

执行步骤

编写获取双uwb位置坐标的节点

本文所用uwb为nooploop,运行以下launch文件实现两个uwb标签数据的同时获取

<launch>
    <node pkg="nlink_parser" type="linktrack" name="linktrack1" output="screen">
        <param name="port_name" value="/dev/tag0" />
        <param name="baud_rate" value="921600" />
    </node>

    <node pkg="nlink_parser" type="linktrack" name="linktrack2" output="screen">
        <param name="port_name" value="/dev/tag1" />
        <param name="baud_rate" value="921600" />
    </node>
</launch>

运行uwb标签数据解析节点sub_2uwb,该节点接收nooploop官方数据包后解析为两个标签的位置及速度并发布。
运行uwb2yawpos节点,接收标签位置,并做滑动窗口平均处理以去抖,最后利用相角求解两个uwb标签构成向量的方向,得到抖动在2度以内的uwb坐标系下的偏航角信息

roslaunch nlink_parser linktrack1.launch
rosrun yjh_msg sub_2uwb
rosrun yjh_msg uwb2yawpos

执行trans_odom节点,得到uwb坐标系下的位姿,并发布代替原有的odom

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用EKF融合UWB和INS的无人机三维定位的Matlab例子: 首先,定义状态向量x和状态转移矩阵F: ``` % 定义初始状态向量 x = [0 0 0 0 0 0]'; % 定义状态转移矩阵 F = [1 0 0 dt 0 0; 0 1 0 0 dt 0; 0 0 1 0 0 dt; 0 0 0 1 0 0; 0 0 0 0 1 0; 0 0 0 0 0 1]; ``` 其中,x为状态向量,包含位置(x、y、z)和速度(vx、vy、vz)信息;F为状态转移矩阵,描述了状态向量如何随时间变化。 接下来,定义测量向量z、测量矩阵H和测量噪声R: ``` % 定义测量向量 z = [0 0 0]'; % 定义测量矩阵 H = [1 0 0 0 0 0; 0 1 0 0 0 0; 0 0 1 0 0 0]; % 定义测量噪声协方差矩阵 R = diag([0.01 0.01 0.01]); ``` 其中,z为测量向量,包含UWB和INS的测量结果;H为测量矩阵,描述了测量向量与状态向量之间的关系;R为测量噪声协方差矩阵,表示测量噪声的大小和相关性。 然后,定义过程噪声协方差矩阵Q和初始状态协方差矩阵P: ``` % 定义过程噪声协方差矩阵 Q = diag([0.1 0.1 0.1 0.01 0.01 0.01]); % 定义初始状态协方差矩阵 P = diag([1 1 1 0.1 0.1 0.1]); ``` 其中,Q为过程噪声协方差矩阵,表示状态向量在每个时间步长中的随机变化;P为初始状态协方差矩阵,表示状态向量的不确定性。 最后,使用EKF进行状态估计: ``` for i = 1:N % 预测状态向量和协方差矩阵 x = F * x; P = F * P * F' + Q; % 更新状态向量和协方差矩阵 K = P * H' * inv(H * P * H' + R); x = x + K * (z - H * x); P = (eye(6) - K * H) * P; end ``` 其中,N为时间步长的数量,循环中的代码包括预测步骤和更新步骤。预测步骤使用状态转移矩阵F和过程噪声协方差矩阵Q预测状态向量和协方差矩阵;更新步骤使用测量向量z、测量矩阵H和测量噪声协方差矩阵R更新状态向量和协方差矩阵。 以上代码仅为示例,实际应用中需要根据具体的UWB和INS传感器进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值