【深蓝学院】手写VIO第2章--IMU传感器--作业
这次作业坑很多,作业说明的不清楚,摸索了很长时间才将此次作业完成,在这里进行记录。
1. T1
1.1 题干
1.2 解答
1.2.1 法1,ros related方法
不知道为什么我的launch不了,在imu_utils目录下面建立build后,cmake,make install之后出现了imu_an的可执行文件(经常会出现找不到已经生成的文件,需要重新打开一个terminal再来看行不行)
在下面也证实了这个imu_an是subscribe了一个topic,
得看这个topic在哪里发送(或者说这仅仅只是一个接受数据的东西,数据需要我们自己去采集,自己去发送对应的topic,需要继续了解rosplay是干什么用的)
所以按照imu_utils的markdown说明的,就是把roslaunch起来,subscribe对应的topic,然后使用 rosbag play发送或者实际的采集数据(采集数据肯定要发送topic),所以就跑成了,跑完之后就完成了IMU的Acc和Gyro的高斯白噪声和bias协方差的标定,结果见下图(以imu_a3.bag为例):
Gyro标定结果:
Acc标定结果:
1.2.1 法2,kalibr_allan工具法
作业中没有对使用kalibr_allan的整个流程进行介绍,这里进行梳理:
- 使用IMU仿真程序生成imu.bag数据(编译vio_data_simulation工程并运行生成)
- 使用bagconvert ros package将生成的imu.bag数据转换成.mat文件用于kalibr_allan使用
- 在matlab下使用kalibr_allan中的matlab程序和转换成的.mat文件进行IMU的标定。
1. vio_data_simulation
mkdir vio_sim_ws/src
cd src
git clone https://github.com/HeYijia/vio_data_simulation
git checkout ros_version
catkin_make
由于我catkin_make有一些问题,这里也可以直接使用cmake的方法进行编译,编译完之后生成文件在devel/lib/vio_data_simulation
下会生成node的可执行文件
直接执行之后就会生成imu的仿真数据:
以上数据用于第三步的kalibr_allan标定使用。
下面的数据用于可视化使用:
关于仿真数据的可视化,是编译cmake编译这个工程生成可执行文件data_gen
,执行这个可执行文件就生成各种.txt文件,下面的可视化就是基于生成的.txt文件进行的。
其中的数据仿真可视化可以用python_tool下的python脚本进行实现,都是基于matplotlib.pyplot实现的(话说好久没有碰python了),效果如下:
draw_trajectory.py(这个在第二题在更改积分方式的时候还会再使用)
draw_points.py:是一个动态的
中值积分:
2. bagconvert
bagconvert同理也这样编译:
catkin_make有问题的话可以直接如下所示的将IMU数据转换成.mat文件
./bagconvert img.bag imu0
这个坑很大,md中没有说明白后面跟的参数的意义,看了代码才发现
说的后面跟三个参数:包名,bag名,bag中的topic名。
(第三个参数我开始以为是结果mat名字,搞了好久convert出来的mat都是177byte空的,matlab上跑SCRIPT当然跑不过,后来看了bagconvert的代码才发现三个参数的意义,对于不熟悉ros的同学来说真的很坑)
如果想简单地知道你的bag中的tpoic,可以直接打印出来
也可以像上面的rosrelated方法一样,把bag包play起来,然后查看此时的topic名字
rosbag play -r 200 imu_A3.bag
rostopic list -v
参数传递正确就能顺利的convert成mat文件了,大小也是正常的
rosrun bagconvert bagconvert ./imu_A3.bag /djiros/imu
3. kalibr_allan
首先看kalibr_all的md
需要安装Matlab,遂龟速安装中…
参考博客:Ubuntu20.04安装Matlab2021b
但是cmake不过,没有找到matlab中的mat.h,博客中说发现需要更改Findmatlab.cmake
修改~/catkin_ws/src/kalibr_allan-master/bagconvert/cmake目录下的FindMatlab.cmake,
找到 find_program(MATLAB_EXE_PATH matlab 这一行,将他修改成刚刚安装matlab的路径的bin路径find_program(MATLAB_EXE_PATH matlabPATHS /usr/local/MATLAB/R2021b/bin)
这样可以找到matlab
即可cmake通过。
后面发现没有安装parallel_compute(类似这个名称)的tool_box,查了一下,非正版的可以再用刚才的安装包重新安装,在安装界面可以选择需要安装的tool_box。
但是,我的电脑内存快爆了,matlab跑不出来,第一题就看看吧。知道有这个方法(折腾这么久,还是有点亏)
2. T2
欧拉积分:
中值积分重合效果很好:
代码改动部分:
可视化仿真:
3. T3
3.1 题干
将B Spline用代码实现,与上面的中值积分的效果进行对比。
3.2 解答
该部分还没做,后面会做。
相关文章:
【深蓝学院】手写VIO第2章--IMU传感器--作业
这次作业坑很多,作业说明的不清楚,摸索了很长时间才将此次作业完成,在这里进行记录。 1. T1 1.1 题干 1.2 解答 1.2.1 法1,ros related方法 不知道为什么我的launch不了,在imu_utils目录下面建立build后࿰…...
Android多线程学习:线程
一、概念 进程:系统资源分配的基本单位,进程之间相互独立,不能直接访问其他进程的地址空间。 线程:CPU调度的基本单位,线程之间共享所在进程的资源,包括共享内存,公有数据,全局变量…...
canvas 入门
canvas 入门 canvas是干什么的?canvas 绘制直线canvas画虚线canvas 绘制三角形canvas 绘制正方形canvas 绘制圆形、圆弧与椭圆canvas绘制文本canvas绘制图片 canvas是干什么的? <canvas> 是HTML5中的标签,它是一个容器,可以…...
建议收藏!混迹职场多年总结出的8大技巧!
1. 不要吃“哑巴”亏:不管在什么企业,一定要“会说话”,敢于表达自己,但是又兼顾身边人的感受,考虑好自己的言行将会带来的后果。良好的沟通技巧对于在职场中建立良好的人际关系和解决问题至关重要。学会倾听、表达和理…...
OpenCV4(C++)—— 视频和摄像头的加载、显示与保存
文章目录 一、加载与显示二、保存 一、加载与显示 视频或摄像头的加载是使用 cv::VideoCapture 类。(这个类和 ifstream 类比较相似,视频或摄像头的加载和文本文件操作是大致相同。主要步骤:(1)加载(打开&a…...
excel功能区(ribbonx)编程笔记6-box的使用
box元素用来在组里指定的控件周围放置一个可视的框,其主要目的是将控件作为一个单元组合在一起。 通常情况下,分配到组中的每个控件都被放置在先前的控件下面直到该列被填满,然后下一个控件被放置在其右侧列的顶行。然而,通过在框里面组合命令,可以将几个控件视作一个整体…...
oralce配置访问白名单的方法
目录 配置sqlnet.ora文件 重新加载使配置生效 注意事项 Oracle数据库安全性提升:IP白名单的配置方法 随着互联网的发展,数据库安全问题也越来越严重。Oracle是目前使用较为广泛的一款数据库管理系统,而IP白名单作为提升数据库安全性的有效…...
ToBeWritten之让响应团队参与并做好沟通
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…...
ffmpeg ts 关于av_seek_frame
1 ffmpeg命令行 一般对视频文件的裁剪 我们通过一行 ffmpeg命令行即可实现,比如 ffmpeg -ss 0.5 - t 3 - i a.mp4 vcodec copy b.mp4 其中 -ss 放置较前 开启精准seek定位 对于mp4而言 seek将从moov中相关索引表查找 0.5s时刻附近最近的关键帧 (此描述…...
【C++】set map 的底层封装
在了解底层封装之前除了对set和map的使用情况要有一定了解,还需要先学习一下二叉搜索树,AVL树,红黑树这些数据结构。 【C】二叉搜索树 【C】AVL树 & 红黑树 RBTree.h enum Colour {RED,BLACK };template<class T> class RBTreeNo…...
JavaWeb整体介绍
JavaWeb整体介绍 什么是Java Web Web:全球广域网,也称为万维网(www),能够通过浏览器访问的网站JavaWeb:是使用Java技术解决相关web互联网领域的技术栈(就是用java开发网站) 网页&a…...
一些常见分布-正态分布、对数正态分布、伽马分布、卡方分布、t分布、F分布等
目录 正态分布 对数正态分布 伽马分布 伽马函数 贝塔函数 伽马分布 卡方分布 F分布 t分布 附录 参考文献 本文主要介绍一些常见的分布,包括正态分布、对数正态分布、伽马分布、卡方分布、F分布、t分布。给出了分布的定义,推导了概率密度函数&…...
科技云报道:押注向量数据库,为时过早?
科技云报道原创。 在大模型的高调火热之下,向量数据库也获得了前所未有的关注。 近两个月内,向量数据库迎来融资潮,Qdrant、Chroma、Weaviate先后获得融资,Pinecone宣布1亿美元B轮融资,估值达到7.5亿美元。 东北证券…...
铭控传感亮相2023国际物联网展,聚焦“多场景物联感知方案”应用
金秋九月,聚焦IoT基石技术,荟萃最全物联感知企业,齐聚IOTE 2023第20届国际物联网展深圳站。铭控传感携智慧楼宇,数字工厂,智慧消防,智慧泵房等多场景物联感知方案及多品类无线传感器闪亮登场,现…...
前端demo: 实现对图片进行上传前的压缩功能
前端可以使用canvas和File API来对图片进行压缩和缩放处理,以下是一个示例代码 : 压缩方法compressImg这段代码是实现对图片进行上传前的压缩功能 1. 定义了一个压缩图片的函数 compressImg,接受两个参数:file表示要压缩的文件,q…...
计算机网络(文章链接汇总)
参考引用 计算机网络微课堂-湖科大教书匠计算机网络(第7版)-谢希仁 计算机网络(一):概述计算机网络(二):物理层计算机网络(三):数据链路层计算机网…...
黑科技-Android
1热更新(热修复):apk不用发版,就能修复bug 原理:我们修复好了bug的时候,把那些有改动的java源码编译成class,再打包成dex,然后通过反射技术放到dexElements数组的最前面,…...
450. 删除二叉搜索树中的节点
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先…...
python安全工具开发基础
文章目录 拷贝、with、is深拷贝、浅拷贝with 三器一闭迭代器生成器闭包装饰器 动态绑定垃圾回收网络编程UdpTcp 协程mysql预处理防止注入 redis未授权/弱密码 拷贝、with 、is a [11, 22, 33] b [11, 22, 33] ca print(id(a)) print(id(b)) print(id(c))print(a b) print(…...
26 docker前后端部署
[参考博客]((257条消息) DockerNginx部署前后端分离项目(SpringBootVue)的详细教程_在docker中安装nginx实现前后端分离_这里是杨杨吖的博客-CSDN博客) (DockerNginx部署前后端分离项目(SpringBootVue)) 安装docker # 1、yum 包更新到最新 yum update # 2、安装需要的软件包…...
[linux] SFTP文件传输基本命令 --- xshell 直接上传文件
2.sftp - 上传文件:如果上传/下载的是文件夹, 在put/get命令后加上-r参数即可。 上传文件: 把本地服务器的/www/wwwroot目录下面的study.log文件上传到远程服务器的/www/server目录下。 sftp> lcd /www/wwwroot sftp> put study.log /www/server…...
Tomcat 多实例
一、Tomcat 多实例 1、概念: Tomcat 多实例是指在同一台服务器上运行多个独立的 Tomcat 服务器实例。它们可以同时运行在同一台物理服务器或虚拟服务器上,但它们彼此之间是相互独立的,有各自的配置、应用程序和资源。 2、配置:…...
全民拼购模式:电商的新趋势和机遇
全民拼购模式是一种基于社交电商的新型模式,它通过拼团、拼购等方式,让消费者享受更优惠的价格和更便捷的购物体验。这种模式的出现,不仅为电商平台注入了新的活力,也成为了消费者追求高性价比商品的新选择。 全民拼购模式有以下…...
免费使用,媲美Midjourney!微软在Bing Chat等提供—DALL-E 3
微软在官网宣布,将OpenAI最新模型DALL-E 3集成在Bing Chat和Bing Image Create中,并免费提供给用户使用。 据悉,DALL-E 3是一款类Midjourney产品,通过文本就能生成二次元、3D、朋克、涂鸦、素描、黑白、极简、印象派、位面像素等…...
Nacos中AP和CP 切换
CAP理论 这个定理的内容是指的是在一个分布式系统中、Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。 一致性(C):在分布式系统中&a…...
服务器中勒索病毒怎么解决?勒索病毒解密,数据恢复
服务器中勒索病毒是一件低频、高概率的事情。而且一旦用户的服务器中招以后,想要处理无论是经济成本还是时间成本都非常的高。也会对企业的生产经营造成很大的影响。所以绝大多数企业主都很关心服务器中勒索病毒后怎么解决。针对这个问题,云天数据恢复中…...
全面解析UDP协议(特点、报文格式、UDP和TCP的区别)
了解UDP(User Datagram Protocol) UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在࿰…...
iPhone15手机拓展坞方案,支持手机快充+传输数据功能
手机拓展坞的组合有何意义?首先是数据存储场景,借助拓展坞扩展出的接口,可以连接U盘、移动硬盘等采用USB接口的设备,实现大文件的快速存储或者流转;其次是图片、视频的读取场景,想要读取相机、无人机SD/TF存…...
优化理论笔记
目录 一、前言 二、优化问题的基本要素 三、优化问题分类 四、最优值类型 五、最优化方法分类 六、非约束优化 1、问题定义 2、优化算法 1)一般局部搜索过程 2)集束搜索 3)禁忌搜索 4)模拟退火 5)蛙跳算法…...
FastAPI学习-23.异常处理器 exception_handler
前言 通常我们可以通过 raise 抛出一个 HTTPException 异常,请求参数不合法会抛出RequestValidationError 异常,这是最常见的2种异常。 HTTPException 异常 向客户端返回 HTTP 错误响应,可以使用 raise 触发 HTTPException。 from fastap…...
建站工具论坛/网站文章优化技巧
...
西安网站建设公司都有哪些/广东疫情最新消息今天
^表示异或,也就是相同为0,不同为1 。 其有很多性质: a ^ a 0。 a ^ 0 a等 使用异或交换a 和 b的值。 a 5; b 6; a a ^ b; b a ^ b; a a^ b;该段代码执行完,就交换 a 和 b 的值了。不用添加任何代码...
wordpress front/成人电脑培训班附近有吗
嗨喽! 大家好,我是“流水不争先,争得滔滔不绝”的翀,18双非本科生一枚,正在努力!欢迎大家来交流学习,一起学习数据分析,希望我们一起好好学习,天天向上,目前是小社畜一枚…...
要执行请求的操作_wordpress需要访问您网页服务器的权限/100%上热门文案
【数据分析】—数据预处理数据预处理数据变换数据规范化最小-最大规范化z-score规范化小数定标规范化小结数据预处理 数据变换 数据变换的目的是将数据转换成适合分析建模的形式 前提条件:尽量不改变原始数据的规律数据规范化 最小-最大规范化z-score规范化小数定…...
种植园网站模板/免费b2b网站推广有哪些
以下学习内容摘录自boost官网 例1. 最简单的HelloWorld例程 #include <boost/python.hpp> // 预备导出的函数 char const* greet() {return "hello, world"; } // 注册PYTHON模块hello_ext BOOST_PYTHON_MODULE(hello_ext) {using namespace boost::python; …...
量个网站一个域名/软文标题例子
之前讲了利用sharding-jdbc 3.1进行分表的情况,也讲了利用一致性hash去做分表的高可用。今天讲下分表后的分页,排序,条件查询优化。其实本身sharding-jdbc是提供了分页功能的,我们方便期间是可以直接用的,但是不推荐用…...