Ethzasl MSF编译与运行

多传感器融合框架 Ethzasl MSF Framework 编译与运行:

对应论文: A Robust and Modular Multi-Sensor Fusion ApproachApplied to MAV Navigation. 2013 RIOS.

对应代码: https://github.com/ethz-asl/ethzasl_msf

系统: Ubuntu16.03 + ROS Kinetic

创建工作空间:

mkdir -p /MSF_catkin_ws/src
cd /MSF_catkin_ws/src
catkin_init_workspace  #初始化工作空间
cd ..
catkin_make    #编译
cd MSF_catkin_ws/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

重新编译:

cd ..

source devel/setup.bash

catkin_make

注意:http://www.liuxiao.org/2016/07/ros-%E5%A4%9A%E4%BC%A0%E6%84%9F%E5%99%A8%E5%8D%A1%E5%B0%94%E6%9B%BC%E8%9E%8D%E5%90%88%E6%A1%86%E6%9E%B6-ethzasl-msf-framework-%E7%BC%96%E8%AF%91%E4%B8%8E%E4%BD%BF%E7%94%A8/

安装博主的步骤安装,报错:

Ethzasl MSF编译与运行_第1张图片

 fatal error: mav_msgs/RollPitchYawrateThrust.h: No such file or directory。

是由于少安装了依赖项:

git clone  https://github.com/ethz-asl/mav_comm.git

重新编译:

运行MSF Viconpos传感器框架:

1)首先下载 https://pan.baidu.com/s/1eShq7lg数据集:
将其放置在 MSF_catkin_ws/src/data 目录下面。
2)修改 src/ethzasl_msf/msf_updates/viconpos_sensor_fix.yaml 文件:
将其中所有的:

/pose_sensor/pose_sensor/

替换为:

/msf_viconpos_sensor/pose_sensor/

找到:

/pose_sensor/core/data_playback: false

修改成:

/pose_sensor/core/data_playback: true

src/ethzasl_msf/msf_updates/launch/viconpos_sensor.launch 文件中找到:


在这一行的前面加入两行 remap 操作,将传感器的 topic 与引擎的 topic 对应上:



 

找到:


在其之后添加(这一步目的为初始化卡尔曼滤波器):


启动 MSF pose_sensor 节点:
在 MSF 目录下执行如下命令打开 pose_sensor 节点:

source devel/setup.bash 
roslaunch msf_updates viconpos_sensor.launch

 

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

rosrun rqt_reconfigure rqt_reconfigure

 

在这里插入图片描述
在菜单中即可动态设置参数。
7)播放 vicon 的 bag 文件:
在MSF 目录下执行如下命令:

rosbag play data/dataset.bag --pause -s 25

 这一行命令是暂停并从第 25s 后开始播放 bag 文件,文档中说这是为了等待 MAV 硬件系统站稳并处于非观察模式(不理解)。总之,如果你准备好运行了,就可以开始点击空格键进行数据播放了,播放的数据大约剩余 86s 左右。

数据模拟:

刚才跑成功了数据融合节点,但是并没有任何可视化的输出可以给我们看到。ethzasl msf 提供了一些脚本来进行数据模拟的功能,可以让我们更直观地看到结果。

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 

 

2)启动 plot_relevant 脚本:
在 MSF 目录下执行如下命令打开 plot_relevant 脚本:

source devel/setup.bash 
rosrun msf_core plot_relevant

另外也可以直接在命令行运行:

rqt_plot msf_core/state_out/data[0]:data[1]:data[2]

如果一切正常,即可看到如下曲线绘制,这样就表示成功运行起来了:
在这里插入图片描述
不知道为什么我的数据曲线没有显示出来。查了很多博客也没出解决办法,有些困惑,标注一下留作以后解决。

 参考:

https://blog.csdn.net/ouyangandy0608/article/details/82143707

http://wiki.ros.org/ethzasl_sensor_fusion/Tutorials/Introductory%20Tutorial%20for%20Multi-Sensor%20Fusion%20Framework

http://www.liuxiao.org/2016/07

https://www.cnblogs.com/ilekoaiq/p/9311357.html

https://blog.csdn.net/weixin_42469289/article/details/103661603

https://www.cnblogs.com/ilekoaiq/p/9311357.html

你可能感兴趣的:(SLAM,C++,多信息融合,SLAM)