手写VIO第二章作业

手写VIO第二讲作业

IMU标定部分

生成IMU仿真数据

  • 方式一:vio_data_simulation-ros_version

这个方式在ROS环境下进行操作,这个pkg里面有两个主要的函数

  1. gener_alldata.cpp:用于生成rosbag文件
  2. gener_alldata_txt.cpp:用于生成txt文件,也是记录数据,只不过变成ttx而已,是一个道理
1
2
3
4
5
mkdir catkin_ws && cd catkin_ws
mkdir src && cd src
git clone https://github.com/HeYijia/vio_data_simulation
cd ..
catkin_make

通过上面这个东西,我们就已经把这个pkg给编译好了,接下来使用它就ok了

1
2
3
4
5
6
cd catkin_ws
source devel/setup.bash
# 这个是生成rosbag
rosrun vio_data_simulation vio_data_simulation_node
# 这个是生成txt
rosrun vio_data_simulation vio_data_simulation_node_txt

提示一下吧,就是关于数据生成的路径,如果你想要修改的话,看这里

之后你就会发现两个文件会乖乖地出现在这里等着你啦!

  • 方式二:vio_data_simulation

关于这个东西,他是用cmake写的,没有用ROS,所以非常符合我的喜好哈哈哈,毕竟ros里面emmmm 也可能是我用的少吧

开发者非常贴心地给我们提供了build.sh文件,主要赋予它执行权限,然后运行就可以了

1
2
chmod +x ./build.sh
./build.sh

然后我们会发现找不到可执行文件哈哈哈哈!这个时候不要慌张,去看看CMakeLists是咋写的就可以找到了

原来如此,他是把executalbe的输出目录定位到了源文件目录的/bin文件夹中,因为我们去点开bin文件夹

它就在这里,之后我们就在当前文件夹下打开终端,去运行!就会蹦出来这么一堆东西!

对仿真数据进行imu标定

对于标定方法这里也有两个工具供我们使用

  • 使用imu_utils进行标定

一定要去github上看看他的readme文件!

在进行编译之前需要下载这个code_utils工具包,并且需要先编译通过code_utils再去编译imu_utils!

  • 使用工具包进行数据标定
  • 不想高了,因为要该路径,真的好麻烦!
  • 使用kalibr_allan进行标定

这个需要该一点东西

就是findmatlab那个文件里面有一个对应着你matlab的bin文件夹存放的地址,记得编译前修改,然后catkin_make就可以了

说步骤吧,这个就简单多了

1 Use bagconvert(rospkg) to convert data from .bag to .mat

这里真的是坑了我好久!!!!!!!官方的example不要相信!

1
rosrun bagconvert bagconvert [bag address] [imu topic]

注意那个topic官网给的是\imu0,而你通过那个VIO仿真器生成的topic名字是/imu!!!!

2 Open your matlab and run the scripts

直接运行那个SCRIPT_allan_matparallel.m,会等待很长的时间。。。