VIO第二讲_allen方差工具
1,首先,安装ceres依赖项,见高博14讲116页,然后下载编译安装ceres:
git clone https://github.com/ceres-solver/ceres-solver cd ceres mkdir build cd build cmake .. make sudo make install
2,下载编译
cd ~/catkin_ws/srcgit clone https://github.com/gaowenliang/code_utils cd ~/catkin_wscatkin_make
这里会报错:fatal error: backward.hpp: 没有那个文件或目录
修改办法:
在CMakeLists.txt中加入包含路径:
include_directories( "include/code_utils")
然后继续进行:
catkin_make
3,下载并编译imu_utils
cd ~/catkin_ws/srcgit clone https://github.com/gaowenliang/imu_utils.gitcd ~/catkin_wscatkin_make
4,将贺老师给的vio_data_simulation-ros_version放在~/catkin_ws/src中
修改文件的路径:
bag.open("./imu.bag", rosbag::bagmode::Write);
这里或者是其他的路径,反正可以读写就可以了,下面进入编译:
cd ~/catkin_ws catkin_make
于是生成了一个节点,运行这个节点就生成了一个bag包:
运行命令:
roscore
cd ~/catkin_ws/devel/lib/vio_data_simulation rosrun vio_data_simulation vio_data_simulation_node

这个bag包就是模拟的IMU采集数据,于是我们使用这个数据,进行下面的实验:生成allen方差计算:
5,将launch文件自己写一个,类似已有的,把名字改一些就可以了:
<launch>
<node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
<param name="imu_topic" type="string" value= "/imu"/>
<param name="imu_name" type="string" value= "mytest"/>
<param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
<param name="/>
<param name="/>
</node>
</launch>
然后,运行:
rosbag play -r imu.bag roslaunch imu_utils my.launch
然后生成的数据在imu_utils/data/下.
接下来,我们去画出来这些方差图,在scripts下有很多matlab的脚本文件.
因为我们这里只使用了一个IMU的数据,所以修改matlab文件中的代码,如果你想比较多个,也修改一下即可.

VIO第二讲_allen方差工具的更多相关文章
- 第二章 Qt常用工具的介绍
第二章 Qt常用工具的介绍 (1)No.1 qmake 相信编写过Makefile的开发人员,随着工程中源码的级数递增和以类型.功能.模块组织源码的子目录的增多,都不愿意重复机械地手工编写这个工程管理 ...
- 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数
32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...
- PE文件格式详解,第二讲,NT头文件格式,以及文件头格式
PE文件格式详解,第二讲,NT头文件格式,以及文件头格式 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) PS:本篇博客 ...
- 脱壳第二讲,手动脱壳PECompact 2.x
脱壳第二讲,手动脱壳PECompact 2.x PS: 此博客涉及到PE格式.所以观看此博客你要熟悉PE格式 首先,逆向inc2l这个工具,汇编中可能会用的 inc头文件转换为lib的工具 但是他有壳 ...
- 逆向课程第二讲,寻找main入口点
逆向课程第二讲,寻找main入口点 一丶识别各个程序的入口点 入门知识,识别各个应用程序的入口点 (举例识别VC 编译器生成,以及VS编译生成的Debug版本以及Release版本) 1.识别VC6. ...
- python学习第二讲,pythonIDE介绍以及配置使用
目录 python学习第二讲,pythonIDE介绍以及配置使用 一丶集成开发环境IDE简介,以及配置 1.简介 2.PyCharm 介绍 3.pycharm 的安装 二丶IDE 开发Python,以 ...
- 购物商城学习--第二讲(maven工程介绍)
接下来第二讲介绍整体工程如何使用maven搭建的. 使用maven管理工程的好处: jar包的管理: 工程之间的依赖管理: 自动打包 maven常见打包方式:jar.war和pom三种.jar工程,是 ...
- WebApp 安全风险与防护课堂(第二讲)开课了!
本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在昨天的公开课中,由于参与的小伙伴们积极性和热情非常高,我们的讲师Carl ...
- POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取
第二讲 1.创建一个时间格式的单元格 Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿 Sheet sheet=wb.createSheet("第一个 ...
随机推荐
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 01. 创建项目 +项目结构和配置简介
新建项目:Tutotial.Web 解决方案名称可以把web去掉 视频里面把git这个选项勾选了.我就不勾选了 dotnet CLI创建项目 首先必须安装好了.net Core的SDK dotnet ...
- java使用new Date()和System.currentTimeMillis()获取当前时间戳(转载)
转自:http://www.cnblogs.com/wuchen/archive/2012/06/30/2570746.html 在开发过程中,通常很多人都习惯使用new Date()来获取当前时间, ...
- C#SuperSocket的搭建--通过配置启动
之前我们借助一个SuperSocket实现了一个简易版的服务器, 但是不管是Server还是Session都是使用框架的,本篇博客我们要实现自己的Server和Session,来重写框架原生的Serv ...
- Swift4 检验变量
创建: 2018/05/03 判断类 public func isKind(of aClass: Swift.AnyClass) -> Bool 是否是aClass或其子类的实例 publ ...
- 2016多校8th 1008【线段树-神题】
题意: T N M N个数 M个操作 一个数组A, 有3个操作 1 l r x,a[l]-a[r]都+x 2 l r,a[i]=sqrt(a[i]),l<=i<=r 3 l r,求和,a[ ...
- springboot redis工具类
package com.vv.boot.util; import java.util.List; import java.util.Map; import java.util.Set; import ...
- Ubuntu添加新用户,并且赋sudo权限
https://blog.csdn.net/u012897374/article/details/78827359 sudo adduser username 接下来进入root用户,如果之前就没有普 ...
- Java | 技术应用 | 利用Jsoup处理页面
根据微信公众号的推文链接地址,对文章内容进行爬取,利用jsoup解析文章源代码,加上结合xpth提取文文章信息, 利用正则表达式读取文章发表时间. Jsoup <!-- jsoup HTML p ...
- mysql用户和授权
CREATE USER 'monitor'@'10.224.32.%' IDENTIFIED BY '123@abAB'; mysql> GRANT select,insert,update O ...
- 1-18String类简介
字符串(String)的不可变性 String类在java.lang包下面,是Object类的直接子类,通过API或者源码可以看到,String类是final修饰的,这说明String类不能被继承. ...