Ethzasl MSF 多传感器融合框架的编译与使用教程

2023-12-18 04:38

本文主要是介绍Ethzasl MSF 多传感器融合框架的编译与使用教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载自:https://zhuanlan.zhihu.com/p/109892245

Ethzasl MSF 多传感器融合框架的编译与使用教程

bottle

bottle

本科生,喜欢机器人,想搞机器人,面向未来编程ing

本文简介我自己编译与安装MSF框架的心酸血泪史,并列举安装过程中可能会遇到的坑及其解决方案。

本文不介绍MSF算法本质,MSF算法网上已经有讲的很好的中英文文章,此处再写有班门弄斧之嫌,有兴趣的同学可以移步以下链接:

论文:A Robust and Modular Multi-Sensor Fusion Approach Applied to MAV Navigation

"极品巧克力"的文章:相机IMU融合四部曲(三):MSF详细解读与使用

下面介绍编译及安装过程:

常规的安装方法可根据MSF官方的wiki进行:Introductory tutorial for using ethzasl_msf_sensor_fusion

中文解读版:[ROS] 多传感器卡尔曼融合框架 Ethzasl MSF Framework 编译与使用

我最开始也是参照这两个教程,但是编译的时候出现了 找不到glog_catkin 导致无法编译的问题,后来根据这一篇文章的方法直接安装glog,问题得以解决,下面介绍步骤:

0. 我的编译环境

Ubuntu 16.04 + ROS Kinetic

  1. 新建工作空间:
mkdir -p /MSF/src
cd ./MSF/src
catkin_init_workspace

先编译一下:

cd ..
catkin_make

2. 添加所有的依赖库并编译整个项目:

有两种方法,先介绍常规方法:

//常规方法,分别下载库文件到src文件夹中
cd src #若原来已经在src目录下则忽略此步
git clone https://github.com/ethz-asl/glog_catkin.git
git clone https://github.com/catkin/catkin_simple.git
git clone https://github.com/ethz-asl/asctec_mav_framework.git
git clone https://github.com/ethz-asl/ethzasl_msf.git
sudo apt-get install autoconf automake libtool//添加完依赖就可以编译啦
cd ..
source ./devel/setup.bash
catkin_make

不出意外会有很多warnings,不过只要不出error,最后进度条到100%就编译完成啦!

但是我在编译的时候出现了glog_catkin找不到的error,重装了好几次以后通过这种方法解决了:

//为了与常规方法区分,暂且称之为硬核方法
cd src #若原来已经在src目录下则忽略此步
git clone https://github.com/ethz-asl/glog_catkin.git
git clone https://github.com/catkin/catkin_simple.git
git clone https://github.com/ethz-asl/asctec_mav_framework.git
git clone  https://github.com/ethz-asl/mav_comm.git
git clone https://github.com/ethz-asl/ethzasl_msf.git
git clone https://github.com/google/glog  #不是glog_catkin
sudo apt-get install autoconf automake libtoolcd glog
./autogen.sh
./configure
make -j 24
sudo make install//同样添加完依赖就可以编译啦
cd ..
cd .. #返回MSF目录
source ./devel/setup.bash
catkin_make

这样子就编译啦,我编译没有什么问题,但是根据https://blog.csdn.net/weixin_42469289/article/details/103661603,可能会有一些权限上的问题,根据文中内容,只需要更改权限即可:

chmod 777 /src/ethzasl_msf/msf_core/cfg/MSF_Core.cfg
chmod 777 /home/lufeng/MSF/src/ethzasl_msf/msf_core/cfg/MSF_Core.cfg
chmod 777 /home/lufeng/MSF/src/ethzasl_msf/msf_distort/cfg/MSF_Distort.cfg
chmod 777 /home/lufeng/MSF/src/ethzasl_msf/msf_updates/cfg/SinglePoseSensor.cfg
chmod 777 /home/lufeng/MSF/src/ethzasl_msf/msf_updates/cfg/PositionPoseSensor.cfg
chmod 777 /home/lufeng/MSF/src/ethzasl_msf/msf_updates/cfg/SphericalPositionSensor.cfg
chmod 777 /home/lufeng/MSF/src/ethzasl_msf/msf_updates/cfg/SinglePositionSensor.cfg
————————————————
版权声明:本文为CSDN博主「陆枫先森」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42469289/article/details/103661603

出现上图就是编译成功了。

如果还有一些诸如cannot open,fatal error的error,可以参考下文:

[ROS] 多传感器卡尔曼融合框架 Ethzasl MSF Framework 编译与使用​

blog.csdn.net图标

3. 下载数据集

直接进入此网站

attachment:dataset.bag of ethzasl_sensor_fusion/Tutorials/Introductory Tutorial for Multi-Sensor Fusion Framework​wiki.ros.org

点击最上面的"下载"即可

下载完以后把数据集粘贴到MSF目录即可,如图:

p.s. 如果下载速度慢可以试试科学上网或者下载上面贴出的教程中作者给出的百度网盘:

https://pan.baidu.com/s/1eShq7lg​pan.baidu.com

4. 配置

1)打开 src/ethzasl_msf/msf_updates/viconpos_sensor_fix.yaml 文件

将所有的

/pose_sensor/pose_sensor/

改为

/msf_viconpos_sensor/pose_sensor/

在官方wiki上还有一句"Do NOT replace the ones that have msf_core."但我自己安装过程中并没有发现带有msf_core的语句,所以放心替换就是了~

找到

/pose_sensor/core/data_playback: false

将false改为true

/pose_sensor/core/data_playback: true

检查一下

fixed_covariance

是否为true,不出意外应该本来就是true不用改

敲黑板!!下一步比较重要,也是中文教程贴没有贴出的,我们需要把

/msf_viconpos_sensor/pose_sensor/pose_use_fixed_covariance: true

移到文档第一行!!否则运行的时候会报警一些奇怪的东西,而且似乎会出现收不到数据的情况,出处见github上的issue:https://github.com/ethz-asl/ethzasl_msf/issues/101

修改后你的文件应该长这样:

2)修改 src/ethzasl_msf/msf_updates/launch/viconpos_sensor.launch 文件

找到

<rosparam file="$(find msf_updates)/viconpos_sensor_fix.yaml"/>

在这一行语句前加两句:

<remap from="/msf_core/imu_state_input" to="/auk/fcu/imu"  />
<remap from="msf_updates/transform_input" to="/vicon/auk/auk" />

找到

</node>

在其后加一句:

<node pkg="rosservice" type="rosservice" name="initialize" args="call --wait /msf_viconpos_sensor/pose_sensor/initialize_msf_scale 1"/>

修改后你的文件应该长这样:

5.运行MSF框架

roscore
# ctrl + shift + T 新建窗口
source devel/setup.bash 
roslaunch msf_updates viconpos_sensor.launch

不出意外你的窗口应该长这样:

这里的warnings是正常的,因为我们还没有启动数据集,自然收不到信息。

6. 打开动态配置参数功能(可选):

打开新窗口,输入

rosrun rqt_reconfigure rqt_reconfigure

7. 打开数据集

新建窗口,输入

rosbag play dataset.bag --pause -s 25

至于为什么在25s处播放,官方给的解释是:“Then run the data playback in pause mode and from t=25s on - before the MAV was standing still and thus was in an unobservable mode.”咱也不懂。。。

这时候可以看到:

这时候点击空格就可以运行数据集了,但是先别急着点,我们需要先做一些数据可视化的工作。

8.数据可视化

这里有两种方法:

1)修改 src/ethzasl_msf/msf_core/scripts/plot_relevant 文件:

找到

rxplot msf_core/state_out/data[0]:data[1]:data[2] msf_core/state_out/data[3]:data[4]:data[5] -b $T -t "position & velocity" -l px,py,pz,vx,vy,vz &
rxplot msf_core/state_out/data[13]:data[14]:data[15] msf_core/state_out/data[16] -b $T -t "acc bias & scale" -l x,y,z,L 

改为

rqt_plot msf_core/state_out/data[0]:data[1]:data[2]
# rxplot msf_core/state_out/data[0]:data[1]:data[2] msf_core/state_out/data[3]:data[4]:data[5] -b $T -t "position & velocity" -l px,py,pz,vx,vy,vz &
# rxplot msf_core/state_out/data[13]:data[14]:data[15] msf_core/state_out/data[16] -b $T -t "acc bias & scale" -l x,y,z,L

然后启动脚本:

source devel/setup.bash 
rosrun msf_core plot_relevant

注意:一定要在开始数据集开始running之前打开可视化窗口,否则将会无法显示数据曲线

2)直接运行:

source devel/setup.bash 
rqt_plot msf_core/state_out/data[0]:data[1]:data[2]

然后返回数据集窗口,按下空格,看到数据集欢快的跑起来,再切到MSF pose_sensor 节点的窗口,看到如下则正常:

与此同时,数据窗口显示:

就ok啦!!!

参考文章:

[ROS] 多传感器卡尔曼融合框架 Ethzasl MSF Framework 编译与使用 - 技术刘​www.liuxiao.org图标CSDN-专业IT技术社区-登录​blog.csdn.net

ROS Ethzasl MSF Framework (多传感器扩展卡尔曼融合框架 )安装编译使用教程(已测试成功)​blog.csdn.net图标ethzasl_sensor_fusion/Tutorials/Introductory Tutorial for Multi-Sensor Fusion Framework​

wiki.ros.org图标

编辑于 2020-02-29

这篇关于Ethzasl MSF 多传感器融合框架的编译与使用教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/507065

相关文章

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

关于pandas的read_csv方法使用解读

《关于pandas的read_csv方法使用解读》:本文主要介绍关于pandas的read_csv方法使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录pandas的read_csv方法解读read_csv中的参数基本参数通用解析参数空值处理相关参数时间处理相关

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求