本文主要是介绍Ethzasl MSF 多传感器融合框架的编译与使用教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载自:https://zhuanlan.zhihu.com/p/109892245
Ethzasl MSF 多传感器融合框架的编译与使用教程
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
- 新建工作空间:
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 Frameworkwiki.ros.org
点击最上面的"下载"即可
下载完以后把数据集粘贴到MSF目录即可,如图:
p.s. 如果下载速度慢可以试试科学上网或者下载上面贴出的教程中作者给出的百度网盘:
https://pan.baidu.com/s/1eShq7lgpan.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.orgCSDN-专业IT技术社区-登录blog.csdn.net
ROS Ethzasl MSF Framework (多传感器扩展卡尔曼融合框架 )安装编译使用教程(已测试成功)blog.csdn.netethzasl_sensor_fusion/Tutorials/Introductory Tutorial for Multi-Sensor Fusion Framework
wiki.ros.org
编辑于 2020-02-29
这篇关于Ethzasl MSF 多传感器融合框架的编译与使用教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!