- 博客(40)
- 收藏
- 关注
原创 ros数据集录制:rosbag record
1.查看话题查看topic列表:rostopic list打印topic内容:rostopic echo /topic2.话题录制rosbag record用于在ros系统中录取系统中其他ros节点发出来的topic的message.录制所有发布的话题此时默认将话题保存在一个以当时时间戳命名的文件夹中:rosbag record a录制指定话题rosbag record /topic1 /topic2 -o out.bag3.话题回放基本功能:rosbag play &
2020-12-13 15:28:24
12571
原创 open_vins(三):imu静止初始化
一.静止初始化初始化是指在系统启动阶段,需要估计重力方向(gravity direction)、加速度计以及陀螺仪biases (accelerometer and gyroscope biases)、初始速度(initial velocity)、初始位置(initial position)等。OpenVINS系统中,只估计了重力方向、加速度计/陀螺仪biases。初始化函数位于:ov_msckf/src/core/VioManager.cpp 中Manager::try_to_initializ.
2020-12-12 13:54:39
6047
2
原创 open_vins(二):rosbag精度测试
一.ros读取与轨迹保存二.euroc数据集测试三、结论一.ros读取与轨迹保存运行open_vins launch 读取ros数据包:roslaunch pgeneva_ros_eth.launch 修改launch中的rosbag名称来改变数据集:<arg name="bag_start" default="0" /><arg name="bag_name" default="/xxxxx/datasets/EuRoc/MH_03_medium.bag" />.
2020-12-09 17:51:58
1954
8
原创 open_vins(一):论文阅读与代码结构
开源代码: https://github.com/rpng/open_vins安装说明: https://docs.openvins.com/pages.html论文: OpenVINS A Research Platform for Visual-Inertial Estimation论文摘要:构建OpenVINS开源代码库,集成了多种trick(1)流形上滑动窗口卡尔曼滤波(2)在线相机内外参标定(3)相机到惯性传感器的时间偏移校准(4)不同SLAM landmark的表示方法(5)
2020-12-09 16:48:53
3790
原创 MSCKF系列论文阅读与代码流程
s-MSCKFkumar-双目MSCKF-开源不支持在 Doc 外粘贴 block源码地址:https://link.zhihu.com/?target=https%3A//github.com/KumarRobotics/msckf_vio开源 S-MSCKF:
2020-11-28 15:30:32
3184
2
原创 PX4:【地面站传感器数据校准】
上电——>rsC 运行… sensor start、commander start…入口函数:(位于commander文件夹中)Commader.cpp· Commander::run() commander_low_prio_loop() 【 订阅了vehicle_command 】根据cmd各param值,运行相应的算法: (cmd.param1) == 1 ——> calib_ret = do_gyro_calibration(&mavlink_log_pub);
2020-09-01 20:08:19
1088
2
原创 PX4:【sensor_combined】
功能介绍消息内容sensor_combined 产生机制 & 代码流程功能介绍sensor_combined 是一个冗余传感器集合的消息,通过订阅多个传感器的数据,将冗余的数据经过VoteSensorsUpdate投票机制,筛选出较为可靠的一组数据,用于状态估计模块的姿态解算和位置解算。消息内容sensor_combined.msg发布的数据包含:uint64 timestamp ;float gyro_rad[3]:上一采样周期内,陀螺仪在body系下xyz的测量平均值(rad/.
2020-09-01 20:01:35
1004
2
原创 PX4:【传感器校准】
sensor的校准校准步骤:文件目录:代码入口:求解模型计算公式sensor的校准校准步骤:首先通过地面站QGC进行校准,QGC将校准参数设置到sh文件中。此后再基于QGC的校准参数,不断获取校准数据的更新。文件目录:在src/commander文件夹下包含了 accelerometer_calibration.cpp/.h 多个传感器的校正airspeed_calibration.cpp/.hgyro_calibration.cpp/.hmag_calibration.cpp/..
2020-07-14 22:22:28
1558
原创 git分支相关指令
查看源码本地分支& git branch查看所有分支& git branch -a当前分支会在前面显示*创建分支命令& git branch (branchname)切换分支& git checkout (branchname)删除分支& git branch -d (branchname)...
2020-06-29 12:52:38
167
原创 PX4:【uORB通讯机制】
uORB: (Micro Object Request Broker )[PX4进程间的通讯机制:多对多的信息发布与订阅方式]发布消息:1. 公告 advertise:相当于初始化,在发布消息之前需要对主题(topic)进行公告,一个topic只公告一次创建一个主题(uORB上创建一个消息源)驱动程序通过以下接口公告一个主题:orb_advert_t orb_advertise( const struct orb_metadata *meta, const void *data )met
2020-06-28 14:26:44
1106
原创 PX4:【系统架构】
PX4系统架构由两个层组成:一是飞行控制栈(flight stack)二是中间件(middleware)flight stack:集成了各种自主无人机的制导、导航以及控制算法。支持的机型包括固定翼,多旋翼以及垂直起降飞行器,算法包括姿态估计算法和姿态控制算法。middleware:主要由内置传感器的驱动和基于发布-订阅(publish-subscribe)的中间件组成,其中发布-订阅中间件用于将这些传感器与飞行控制运行的应用程序进行通讯连接。飞控系统结构分层飞控数据流PX4代码结构
2020-06-28 14:09:09
1597
原创 PX4安装与编译
下载方式一:git clone https://github.com/PX4/Firmware.git --recursive默认下载版本为master.下载时间比较长,包含各种包以及依赖工具bash ./Tools/setup/ubuntu.sh运行 ubuntu.sh安装所有依赖项下载方式二:如何要修改下载版本,就需要分步下载git clone https://github.com/PX4/Firmware.gitgit checkout v1.9.2 这...
2020-06-23 20:48:57
6394
1
原创 cv:仿射变换 && 射影变换
仿射变换仿射变换为2维图像与2维图像之间的变换关系,变换前后,保持了图像的“平行性”、“平直性”。getAffineTransform()根据两幅图像中非共线的三对点,计算2x3的仿射变换矩阵函数原型C++:Mat getAffineTransform(InputArray src, InputArray dst)Mat getAffineTransform(const Point2f* src, const Point2f* dst)Parameters: src – 原图的三个固定顶点.
2020-06-15 15:06:44
574
原创 cv:常用函数
cvtColor()cvtColor()函数用于实现图像的色彩空间转换,一般包括四个参数,原型:void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 );————————————————. InputArray src: 输入图像即要进行颜色空间变换的原图像,可以是Mat类. OutputArray dst: 输出图像即进行颜色空间变换后存储图像,也可以Mat类. int code: 转换的代码或标识. int
2020-06-10 16:15:17
1920
原创 EuRoC数据集使用总结
EuRoC数据集微型飞行器(MAV)上收集的视觉惯性数据集移动平台与传感器使用的机型为:Asctec Firefly六角旋翼直升机视觉惯性测量的传感器包括:视觉(双相机)惯性测量单元(IMU)groundtruth采集采用以下传感器采集6自由度的运动与结构1)Leica MS50 激光跟踪扫描仪:毫米精确定位 LEICA0:是激光追踪器配套的传感器棱镜【prism】 Leica Nova MS50: 激光追踪器,测量棱镜prism的位置,毫米精度,帧率20Hz,2)Vicon
2020-06-08 09:44:00
7527
10
原创 C/C++:类的继承、多态与虚函数、重载
面向对象的编程主要目的是提供可重复利用的代码。类的继承也是代码重用的一种方式。从已有的类(基类)派生出新的类,(派生类)继承了原有类的特性,同时在其基础上进行扩展增加功能。1. 继承· 派生类可以访问基类的公有成员;· 派生类不能直接访问基类的私有成员,必须通过基类的公有函数间接访问私有成员——派生类的构造函数必须使用基类的构造函数;class A{public: void Func1(void); void Func2(void);};class B : public
2020-05-24 23:10:41
1147
原创 组合导航(九):三维简化的INS/GPS组合导航系统
简化版INS系统与GPS组合导航在三维路面上的实现1 MEMS级IMU的三维定位的性能分析2 解决MEMS级IMU在路面导航中存在的问题3 三维简化的惯性传感器系统3.1 3D RISS概述3.2 (轮式车辆)采用三维RISS系统的优点简化版INS系统与GPS组合导航在三维路面上的实现这一章节讨论一种适用于任何轮式平台(含GPS)的航迹推算(DR)方法,该方法可消除使用传统IMU尤其是低精度IMU时存在的误差。首先分析讨论一个完整的INS系统,再概述用于处理误差源的理论方法。介绍了一种简化的惯性传.
2020-05-20 22:15:59
6805
7
原创 C/C++: string类函数使用
str.erase()函数str.size()、str.length()函数str.find()函数str.replace()函数str.append()函数str.substr()函数str.assign()函数str.insert()函数str.erase()函数erase函数原型(三种用法):(1)string& erase ( size_t pos = 0, size_t n = npos );(2)iterator erase ( iterator position );(3).
2020-05-19 20:44:38
248
原创 C/C++:冷门函数 isspace()、isdigit()
isspace()函数isdigit()函数isspace()函数isspace()是一个全局函数,主要用于检查参数c是否为空格字符。默认情况下,空白字符包括:' ' (0x20) space (SPC) 空格符'\t' (0x09) horizontal tab (TAB) 水平制表符 '\n' (0x0a) newline (LF) 换行符'\v' (0x0b) vertical tab (VT) 垂直制表符'\f' (0x.
2020-05-19 15:47:13
4079
原创 C/C++: string的trim()、split()函数实现
trim函数split函数其他语言的lib中,对于string类都有丰富的操作函数,而C++中却不提供一些特殊的函数功能。通过现有的一些函数也可以在c++中实现trim( )、split()等功能。trim函数trim( )的作用:去掉字符串首尾的空格。可以借助 string类中的find_first_not_of( )、find_last_not_of( )函数进行构造 string trim(const string& str) { string::size_type pos =.
2020-05-18 19:23:23
2101
1
原创 组合导航(八):INS/GPS组合导航
INS/GPS组合导航1 误差反馈1.1 开环INS/GPS架构1.2 闭环INS/GPS架构2 组合导航的类型2.1 松耦合 的INS/GPS组合导航2.2 紧耦合 的INS/GPS组合导航2.3 深度耦合的 INS/GPS组合导航3 INS方程的动态误差模型4 松耦合的INS/GPS组合导航模型4.1 系统模型4.2 测量模型4.3 INS/GPS松耦合总框图5 紧耦合的INS/GPS组合导航模型5.1 系统模型5.2 测量模型INS/GPS组合导航对比INS与GPS导航方法,二者都有其各自的优.
2020-05-14 23:37:53
32855
23
原创 C/C++:iota()函数
iota() 函数定义在 头文件numeric 中#include <numeric>函数模板:template <class ForwardIterator, class T> void iota (ForwardIterator first, ForwardIterator last, T val);前两个参数是定义序列的正向迭代器,保存序列初始以及结尾的位置 [first, last)第三个参数是累加器的初始 T 值。函数模板内的具体操作:template
2020-05-13 21:05:55
1713
原创 组合导航(七):卡尔曼滤波
1.Kalman滤波1.Kalman滤波惯性传感器在初始化以及算法的误差影响惯导系统的精度。低成本MEMS传感器由于严重的随机误差,INS输出可能迅速漂移因此,因此低精度的IMU基本上不能作为导航的独立传感器进行应用。传感器的主要误差是加速度计偏差和陀螺漂移。为了提高惯导系统的精度,必须采用k个规则时间间隔来估计惯性传感器的随机误差,作为补偿的基础。如水平通道上的速度和姿态角的例子中所述。...
2020-05-10 22:31:10
13328
3
原创 组合导航(六):惯性导航误差建模
**组合导航(六):惯性导航误差建模**INS的准确性受到各种因素的影响,如:初始对准过程中的误差、传感器误差、算法误差。若知道这些误差对导航参数(位置、速度和姿态)的影响,就可以通过建模来进行误差的估计,从而减小误差对导航结果的影响。因此,误差模型是分析和估计惯性导航系统误差源所必需的。估计器包括:卡尔曼滤波(KF) ;粒子滤波(PF) 和AI技术统上。Mechanizaion状态方...
2020-04-27 23:48:40
9712
5
原创 组合导航(五):惯性导航参数建模
**组合导航(五):惯性导航系统模型**两种建模方法:动力学建模(Dynamic Modeling)、运动学建模(Kinematic Modeling)动力学建模: 对力与相互作用引起的运动进行描述。表现一个物理系统对另一个物理系统的影响。例如:牛顿第二运动定律,表达了由力模型:F{r, v, t} 引起的运动变化。其中r是位置向量,v是速度向量,这些被称为状态向量,时间t是一个自变量。...
2020-04-25 10:23:08
7004
2
原创 组合导航(四):惯性导航系统
组合导航(四):惯性导航系统惯性导航理论依据:牛顿第一定律(在不受外力作用下,物体将保持静止或匀速直线运动)牛顿第二定律(物体加速度的大小跟作用力成正比,跟物体的质量成反比;加速度的方向跟作用力的方向相同)1 惯性导航系统的物理平台平台式惯导:(下图a所示)惯性传感器安装在一组框架上(平衡环),通过扭矩电机根据陀螺仪感应的旋转来实现平台的旋转,使得平台始终与导航系保持一致。因此,加速度计...
2020-04-22 20:56:00
13605
8
原创 组合导航(三):GPS全球定位系统
组合导航(三):GPS全球定位系统全球定位系统(GPS)由美国国防部在20世纪70年代开发。GPS的定位基础是24颗卫星组成的网络。每颗卫星发送一个包含伪随机噪声(PRN)码与导航信息的无线电信号。接收机通过PRN码获得无线电信号的传输时间,传输时间乘以光速可初步计算卫星与接收机之间的距离(称为伪距离)。根据导航信息计算卫星的位置。根据三颗卫星提供的信息,接收机通过三边测量法计算出自身的纬度、...
2020-04-20 20:33:29
5228
1
原创 组合导航(二):导航参考坐标系
组合导航(二):导航参考坐标系2.1 坐标系变换在惯性导航计算中,经常需要从一个坐标系到另一个坐标系的矢量变换。左乘旋转矩阵R: 其中R表示将向量r从k坐标系变换到m坐标系的矩阵。(向量的上标表示其所在的坐标系,通常向量的上标会与矩阵下标抵消)变换矩阵R的逆:描述了从m坐标系到k坐标系的变换;如果两个坐标系是互相正交的,它们的变换矩阵也是正交的,此时矩阵的逆就等于它的转置。...
2020-04-17 23:24:38
6425
4
原创 组合导航(一):定位技术分类与介绍
组合导航(一):定位技术分类与介绍*** 一. 定位技术分类1.1 基于相对测量的定位1.2 基于绝对测量的定位1.3 组合定位**1.1 基于相对测量的定位(航位推算)(1)轮式里程计通过编码器获得轮式里程计的测量数据,车轮的转动被转换成线性位移。对于指定初始位置的运动估计,通过积分得运动增量,从而得到当前的位置信息。· 该方法具有精度短、成本低、采样率高的优点· 但车轮会产生...
2020-04-17 14:20:19
11875
1
原创 C/C++:函数assert()、getline()
一.断言(assert)的用法:assert 宏的原型定义在 assert.h 中,其作用是如果它的条件返回错误,则终止程序执行。#include "assert.h" void assert( int expression );assert 的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向 stderr 打印一条出错信息,然后通过调用 abort 来终止...
2020-04-15 16:28:37
701
转载 图像处理:连通区域算法
OpenCV_连通区域分析(Connected Component Analysis/Labeling)【摘要】本文主要介绍在CVPR和图像处理领域中较为常用的一种图像区域(Blob)提取的方法——连通性分析法(连通区域标记法)。文中介绍了两种常...
2020-02-14 19:05:51
10304
原创 视觉里程计的重定位问题1——SVO的重定位部分
视觉里程计的重定位问题1 ——SVO的重定位部分SVO的重定位功能体现在:运动跟踪丢失后通过与上一关键帧匹配以及地图点投影,找回当前相机位姿。由于没有后端和回环,SVO的重定位并不是回环校正后的那种意义的重定位。代码部分被放在运动跟踪线程里,只有寥寥几行,作用效果十分有限。原文代码部分如下:FrameHandlerMono::UpdateResult FrameHandlerMono::r...
2019-12-05 14:49:46
1012
原创 视觉惯性里程计SVO融合IMU
基于视觉惯性融合的SVO7月初的时候尝试把IMU作为视觉导航的辅助项,加入到SVO的框架中去,目前已完成基于半直接单目视觉里程计SVO 的 视觉惯性融合 的程序框架搭建。以下围绕 ‘IMU数据以什么样的方式参与视觉系统导航?’、‘IMU可作用于视觉导航的哪些部分?’、‘融合IMU数据可以得到怎样的结果?’几个方面进行讲述。本文仅代表个人观点,并作为工作学习记录,若有错误或者不妥之处欢迎指出!!...
2019-12-03 16:48:31
2958
6
转载 视觉SLAM论文list
视觉SLAM论文list转载:https://blog.youkuaiyun.com/heyijia0327/article/details/82855443基础知识材料2018年, joan sola 大神, A micro Lie theory for state estimation in robotics. 系统讲述李代数,非常棒。点击可以进他的主页,他写过非常多的笔记材料以及代码,ekf sl...
2019-12-03 09:52:19
947
1
转载 关于g2o顶点/边类型所包含函数的含义
用边表示三维点投影到图像平面的重投影误差,就可以设置输入参数如下:BaseBinaryEdge<2, Vector2D, VertexSBAPointXYZ, VertexSE3Expmap>这个是个二元边。第1个2是说测量值是2维的,也就是图像像素坐标x,y的差值,对应测量值的类型是Vector2D,两个顶点也就是优化变量分别是三维点 VertexSBAPointXYZ,和李群位...
2019-09-21 17:32:21
846
原创 SVO深度滤波器
SVO:深度滤波器的数据融合方法以及深度概率模型推导■ 深度滤波器depth-filter使用深度滤波器,将最新时刻求得的深度观测值,与上一时刻的深度估计值融合,直到种子点(seed)深度收敛。深度值分布的概率模型可看为高斯-均匀混合分布通过一系列后续帧的测量,我们可以得到的是种子点的深度测量值x1,x2,···,xn,以及每个测量值对应的方差(也就是不确定度)tau^2,不确定度...
2019-04-17 16:56:43
1141
原创 多源融合导航 学习进程~
多源融合导航 学习进程~多源融合导航是一个具有多传感器的导航系统,通过不同传感器之间的数据融合、优缺点互补,以实现更高精度导航效果的一种导航方法。导航中常用的传感器包括:惯性测量单元imu、视觉传感器(单目、双目相机)、激光雷达等等···常用的单一导航方法包括:GPS导航、惯性导航、视觉导航等等···在上一阶段的学习中,主要针对单目视觉与imu融合的组合导航方式进行了学习研究。下表罗列了...
2019-02-20 16:20:04
3819
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人