无人机姿态融合——EKF

2023-11-10

联系方式:860122112@qq.com

一、实验目的

使用惯性测量单元IMU和磁场传感器(磁力计)的信息,通过EKF对四旋翼无人机进行姿态融合。

二、实验环境

ROS机器人操作系统

三、实验步骤

1. 安装hector quadrotor
hector quadrotor 是德国老牌理工学校Technische Universität Darmstadt大学开发的ros包,整合了ros和gazebo,可以进行uav相关的很多仿真实验,例如飞行动力学,机载传感器例如imu、gps、camera,复杂环境仿真,姿态融合,SLAM等等。

首先下载和编译hector quadrotor的ros包(注意自己安装的ros版本,这里用的是kinetic版)

~$ mkdir catkin_ws/src/hector_quadrotor_tutorial
~$ cd catkin_ws/src/hector_quadrotor_tutorial
$ wstool init src https://raw.github.com/tu-darmstadt-ros-pkg/hector_quadrotor/kinetic-devel/tutorials.rosinstall
$ cd ../..
~/catkin_ws$ catkin_make
~/catkin_ws$ source devel/setup.bash

然后可以启动launch文件(共有两个,一个是outdoor,一个是indoor)测试无人机了。

~/catkin_ws$ roslaunch hector_quadrotor_demo outdoor_flight_gazebo.launch

或者

~/catkin_ws$ roslaunch hector_quadrotor_demo indoor_slam_gazebo.launch

想要用键盘控制无人机首先要启动无人机的电机

$ rosservice call /enable_motors true

再启动键盘控制节点

$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py

测试效果图
outdoor
这里写图片描述
这里写图片描述

indoor
这里写图片描述
这里写图片描述

参考教程

2. EKF姿态融合

这里使用了两种EKF方法进行姿态融合
第一种的参考文献在此
第二种的参考文献在此
其中第二种基于四元数实现。

算法实现及使用:
首先下载和编译算法代码ros包

~$ cd catkin_ws/src/
~/catkin_ws/src$ git clone https://github.com/DajunZhou/uav_att_EKF.git
~/catkin_ws/src$ cd ..
~/catkin_ws$ catkin_make
~/catkin_ws$ source devel/setup.bash

启动测试环境(可以自己写一个empty world的测试环境):

~/catkin_ws$ roslaunch hector_quadrotor_demo outdoor_flight_gazebo.launch
~/catkin_ws$ roslaunch uav_att_EKF uav_att_est.launch

(上面使用了两个终端)

启动算法节点(因为是使用python实现,包含了自己实现的类,所以用python启动)
第一种算法

~/catkin_ws$ cd src/uav_att_EKF/scripts/
$ python uav_att_node.py

启动键盘控制

$ rosservice call /enable_motors true
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py

姿态融合效果
src="http://player.youku.com/embed/XMjgxNDc1MzMzNg==" width="800" height="500">

第二种算法

~/catkin_ws$ cd src/uav_att_EKF/scripts/
$ python uav_att_2stageEKF_node.py

启动键盘控制

$ rosservice call /enable_motors true
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py

姿态融合效果
src="http://player.youku.com/embed/XMjgxNTYzMDU5Mg==" width="800" height="500">

四、结果分析

从视频上看,在旋转时,对于无人机的偏航角第一种方法比第二种方法响应更快,估计更准。分析原因:第一种算法使用加速度/磁力计矫正时,可同时对俯仰角、滚动角和偏航角进行矫正,且状态矩阵共12维,包含信息更多;第二种方法状态使用的是四元数,加速度计不矫正偏航角,磁力计只矫正偏航角,由于实验环境中IMU的频率是100Hz,磁力计是10Hz,所以无人机偏航角的估计会比较慢。但从计算量和计算时间的角度来说,第二种方法应该会优于第一种方法。

参考文献
Comprehensive Simulation of Quadrotor UAVs Using ROS and Gazebo
A Double-Stage Kalman Filter for Orientation Tracking With an Integrated Processor in 9-D IMU


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

无人机姿态融合——EKF 的相关文章

  • 【数模】时间序列分析

    时间序列也称动态序列 是指将某种现象的指标数值按照时间顺序排列而成的数值序列 时间序列分析大致可分成三大部分 分别是描述过去 分析规律和预测未来 本讲将主要介绍时间序列分析中 预测未来 常用的三种模型 并将结合Spss软件对时间序列数据进行

随机推荐

  • Docker - 实现本地镜像的导出、导入(export、import、save、load)

    目录 一 使用 export 和 import 1 查看本机的容器 2 导出镜像 3 导入镜像 二 使用 save 和 load 1 查看本机的容器 2 保存镜像 附 两种方案的差别 1 文件大小不同 2 是否可以对镜像重命名 3 是否可以
  • STM32实战项目—停车计费系统

    文章目录 一 任务要求 1 1 概述 1 2 串口收发 1 2 1 串口输出内容 1 2 2 串口接收内容 1 3 说明 二 实现思路 2 1 指令判别 2 1 车辆进入 2 2 车辆驶出 2 3 费率调整 三 程序设计 3 1 串口接收消
  • 强化学习算法实现自动炒股

    强化学习算法自动炒股 本文利用强化学习算法 PG 来对股票市场的指数进行交易研究 感兴趣的朋友可以在这个基础上导入其他市场的数据 添加 observation 的维度 本文仅使用了 当天收盘价 和 与前一天收盘价的差值 两个维度 操作 ac
  • linux当前目录作用,详解linux下mnt目录作用

    linux下mnt目录的作用 mount 英文解释 登上 爬上 攀登 骑上 乘上 跨上 可直接理解为 挂载 挂接光驱 USB设备的目录 加载后 会在mnt里多出相应设备的目录 mnt是mount的缩写 Mount命令 需要注意的 1 挂载点
  • 打印工资条怎么做到每个人都有表头明细_这两种工资条制作技巧,HR们不能不知道!...

    每月一到发薪日 给员工发送工资条的时候 HR们都被一大堆的数据和表格弄得焦头烂额 如何快速整理数据 制作工资条是每个HR都想得到的答案 本文就手把手地教大家如何利用excel或工资条生成器 快速地制作工资条 一起来看看吧 第一种 传统方式
  • 基于SpringBoot的网络海鲜市场系统的设计与实现

    网络海鲜市场系统管理数据的工具是MySQL 编码的语言是Java 运用的框架是Spring Boot框架 该系统可以实现对商品的购买 对论坛帖子的发布与回复论坛帖子 查看商品资讯 修改或删除购物车商品 对订单信息进行管理等功能 网络海鲜市场
  • 几种常用发布方式 平滑发布、灰度发布、蓝绿发布

    发布方式 1 平滑发布 在发布的过程中不影响用户的使用 系统不会因发布而暂停对外服务 不会造成用户短暂性无法访问 保障服务一直可以持续使用 在单机模式下 启动多端口 如有 upstream myapp server 服务1 8080 app
  • JAVA开发管理(敏捷诞生的历史背景)

    诞生背景 随着软件规模的发展和商业化 软件开发模式的管理显得尤为重要 在软件规模较小时 一个人就可以单独完成软件的编写 测试和发布 当软件规模和复杂度越来越高时 我们不得不进行协调工作 多人完成一个软件的开发 在没有管理的背景下 软件的编写
  • #pragma once和#ifndef

    pragma once用法总结 1 pragma once这个宏有什么作用 为了避免同一个头文件被包含 include 多次 C C 中有两种宏实现方式 一种是 ifndef方式 另一种是 pragma once方式 在能够支持这两种方式的
  • 英语写作神器Quillbot---如何使用免费的Premium功能

    英语写作神器Quillbot 如何使用免费的Premium功能 本文主要记录如何在国内免费使用Quillbot的Premium功能 也就是在Google Chrome中安装相应的插件 目录 英语写作神器Quillbot 如何使用免费的Pre
  • C语言:void的用法即解析

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 void是否可以定义变量 为什么 二 void修饰函数的返回值和参数 1 void用来作为函数返回值 2 void作为函数参数 三 void指针 总结 提示 以
  • 苹果手机点击输入框时页面自动放大

    一 问题描述 点击input搜索框时 苹果手机页面会自动放大 二 解决问题 user scalable no是 禁止手动缩放 添加此属性后便不可手动控制页面大小
  • Matlab查看像素坐标

    在matlab弹出的figure中随鼠标移动实时显示该处坐标和像素值 在command window中输入impixelinfo即可 在当前图像中查看信息
  • 成本高、落地难、见效慢,开源安全怎么办?

    作者 彭慧中 责编 屠敏 出品 CSDN ID CSDNnews 2021年底 Log4j漏洞引发全球信息安全大地震 世界各国政府 非营利基金会 智库都在高度关注开源安全领域 然而许多公司尽管害怕被开源安全问题所波及 但仍未采取相应的策略
  • 遥感影像语义分割:数据集制作

    遥感影像语义分割 数据集制作 一 标签标注工具及注意事项 二 影像分块及代码 目前已经有一些已经关于遥感影像解译的公开数据集 我们可以拿这些数据来做深度学习模型训练 但是在实际业务中 我们需要针对特定的需求制作自己的数据集 在这里记录一下做
  • vue 获取用户位置 高德_vue引入高德地图获取经纬度地址

    1 在index html引入高德地图 key找个适合例如 160cab8ad6c50752175d76e61ef92c50 2 在webpack base conf js 配置引入 externals AMap AMap 3 在vue文件
  • Android平台GB28181设备接入端如何调节实时音量?

    我们在对接Android平台GB28181设备接入端的时候 有开发者提出这样的疑惑 如何调整设备接入端的实时音量 实际上 这块我们前几年在做RTMP直播推送模块的时候 已经发布了相关的接口 这里再回顾下 SmartPublisherJniV
  • SQL基础知识(持续更新中)

    SQL通用语法 1 单行多行书写 分号结尾 2 可用空格 缩进来增强语句可读性 3 不区分大小写 建议关键字大写 4 注释是 或者 多行 分类 DDL 数据定义语言 定义数据库对象 DML 数据操作语言 用来对表中数据进行增删改 DQL 数
  • linux-scp传输失败问题

    WARNING REMOTE HOST IDENTIFICATION HAS CHANGED IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY Someone could be eav
  • 无人机姿态融合——EKF

    联系方式 860122112 qq com 一 实验目的 使用惯性测量单元IMU和磁场传感器 磁力计 的信息 通过EKF对四旋翼无人机进行姿态融合 二 实验环境 ROS机器人操作系统 三 实验步骤 1 安装hector quadrotor