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

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti