自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 端到端机器人导航-以DRL-robot-navigation为例

目前成功的环境为虚拟机下Ubuntu20.04,ROS-noetic,anaconda3。无GPU加速。

2024-04-08 16:32:28 156

原创 C语言常用函数汇总

s1和s2是两个要比较的字符串,字符串的比较是根据ASCALL码进行的。对于比较结果返回三个数值,若s1和s2相同返回0.若s1大于s2返回大于0的数值,s1小于s2返回小于0的数值。num表示比较指定num个字符的字符串,相较于strcmp,strcnmp精度更高。

2023-08-10 15:30:34 402

原创 Jetson AGX Orin运行autoware.universe的DEMO问题

执行完source install/setup.bash后需要在终端输入:export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1。在此之后在执行ros2 launch便可运行demo。

2023-08-07 15:17:09 388 1

原创 ROS小车+Velodyne16线+legoloam仿真

Velodyne legoloam仿真

2022-10-19 19:42:36 1719 7

原创 初识C语言-3

C - 3

2022-10-19 14:35:15 339 1

原创 scanf使用

C牛客题目

2022-10-19 11:18:32 118

原创 初识C语言-2

C语言第二课

2022-10-18 14:36:01 176 2

原创 初识C语言(1)

C语言第一课

2022-10-15 19:56:41 191

原创 结构体内存对齐原则

先来说一下结构体内存对齐原则:1、第一个成员在与结构体偏移量为0的地址处。2、其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。注意:对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。VS中默认的对齐数为83、结构体总大小为:最大对齐数(所有变量类型最大者与默认对齐参数取最小)的整数倍。4、如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。接下来用代码实际演示一次:计算类A1

2022-05-20 10:28:42 5454 2

原创 视觉SLAM14讲——视觉里程计1(PNP,ICP)

得到1、PNPPnp是求解3D-2D点对运动的方法,在双目或者深度相机中不需要用对极约束解决,可以直接使用PnP来解决问题。1、直接线性变化问题如下:已知一组3D点的位置,以及它们在某个相机中的投影位置,求该相机的位姿。如果把3D点看成在另一个相机坐标系中的点的话,也可以用来求解两个相机的相对运动问题。空间点P,齐次坐标为:,假设在图像I1中,投影到特征点x1=此时R,t未知。我们将R,t定义为一个增广矩阵,将其展开写为:通过最后一行把s消掉:为了简化,定义T的行向量:

2022-05-17 16:37:08 488 1

原创 视觉SLAM14讲——视觉里程计1(2D-2D对极几何)

1、对极几何1、对极约束从上一讲中,我们知道了如何匹配特征点,一个特征点由关键点和描述子两部分组成,描述子的距离表示两个特征之间的相似程度。假设我们目前已经从两张图像中得到了一对配对好的特征点,如果有若干对这样的匹配点,我们就可以通过二维图像间的对应关系,恢复出两帧之间相机的运动。如图所示,我们希望知道两帧图像I1,I2之间的运动,设第一帧到第二帧的运动为R,t,两个相机中心分别为O1,O2,现在I1中有一个特征点p1,它对应在图像I2特征点为p2。两者是通过上一讲的特征匹配得到的,如果匹配正确

2022-05-17 11:12:11 353

原创 视觉SLAM14讲——视觉里程计1(特征点法)

前面说过视觉SLAM系统分为前端和后端两个内容,前端也叫做视觉里程计。视觉里程计的主要作用是根据相邻的两张图像的信息粗略的估计出相机运动,给后端一个较好的初始值。视觉里程计的两大算法为:特征点法和直接法。本讲主要是特征点法。1、特征点法视觉里程计最核心的问题是如何根据图像来估计相机运动。图像在计算机中是以矩阵的形式存储的,直接从矩阵的角度来估计图像是比较复杂的。一个简便的做法是:在图像中选取一些有代表性的点,这些点在相机视角发生少量变化后仍会保持不变,我们需要在各个图像中找到相同的点,在这些点的基础

2022-05-16 10:11:35 2353 1

原创 视觉SLAM14讲——非线性优化

1、状态估计问题1、批量状态估计与最大后验估计首先回顾以下经典SLAM模型:从前面的文章可以知道,xk就是相机的位姿,uk为传感器输入,zk,j为我们得到的像素位置,观测方程就是我们说过的针孔相机模型。在运动和观测方程中,我们通常假设两个噪声项wk,vk,j满足零均值的高斯分布,表示如下:在这些噪声的影响下,我们想通过已知的Zk,j和传感器数据u来推断出位姿x(定位)和地图y(建图)以及他们的概率分布,这样的问题我们称为状态估计问题。处理这类问题有批量式处理和增量式(滤波器)

2022-05-10 21:04:12 785

原创 视觉SLAM14讲——相机与图像

前面我们已经说过了视觉SLAM的运动方程和观测方程。在以相机为主的视觉SLAM中,观测主要是指相机成像的过程。1、相机模型常见的针孔相机模型如上图,在空间中有一点P,点P坐标为,点P经过光心O投影之后落在了物理成像平面O'-x'-y'上,成像点为P',坐标为,设物理成像平面到小孔的距离为f(焦距)。根据相似三角形可以得出:公式中的负号表示所成的像是倒立的。由于相机输出的图像并不是倒像,而且为了便于操作,我们可以等价的将成像平面对称的放在相机前方,和三维空间点一同放在相机的同一..

2022-05-10 10:29:02 1293

原创 视觉SLAM14讲——李群与李代数

前面的文章说过三维空间的刚体运动,介绍了旋转的表示。在SLAM中相机的位姿是不确定的,需要我们进行优化,常用的优化方法便是求导,但是旋转矩阵由于自身的特殊性(行列式为1的正交矩阵),使我们无法直接对旋转矩阵进行求导优化,所以引入了李群与李代数来简化求解方式。1、李群与李代数上一篇文章说过旋转矩阵构成了特殊正交群SO(3),变换矩阵构成特殊欧氏群SE(3)。首先我们来介绍下群这一概念。1、群无论从旋转矩阵还是变换矩阵,我们可以证明两个矩阵进行加法运算后便不再是旋转矩阵(行列式为1的正交

2022-05-09 14:34:41 966 3

原创 视觉SLAM14讲——三维空间刚体运动

1、旋转矩阵1、点,向量和坐标系我们生活在三维空间当中,三维空间由三个轴组成,空间中的任意一个位置可以由三个坐标来指定。对于视觉SLAM的研究,我们不仅要确定相机的位置,还有确定相机的位姿,也就是相机的朝向。用线性代数的知识来说,我们可以在一个线性空间中确定一个向量,并且这个向量在该线性空间内的坐标是确定的。例如确定向量a的坐标为:根据线性代数的知识我们可以对向量进行一定的运算,如加减,内积,外积,数乘等。向量间的内积可以表示为:内积可以用来描述向量间的投影关系。向量间外积可以表示为:

2022-05-06 22:18:33 470

原创 初识SLAM

高博士《视觉SLAM14讲》第一章所学内容的总结概括,如有纰漏还请指出。

2022-04-29 15:10:29 211

原创 Pandas进阶

1、数据转换1、apply,applymap应用apply对DataFrame中的某一Series进行操作,上例中将Python中的成绩统一加100,使用的是简单隐式函数。applymap是DataFrame中专有的,可以同时计算DataFrame中的每一个元素。applymap可以同时将DataFrame中的所有数据进行操作。2、transform使用1、对一列执行一种操作2、对一列执行多种操作3、对多列执行不同操作3、重排随机抽样哑变量...

2022-02-28 13:45:21 1332

原创 Pandas高级

1、数据筛选-赋值操作在原有数据基础上增添一列。将Python这一列的成绩统一增加十分:将索引为2的同学的Math成绩改为100分:想要批量修改多个数据时,将索引为2,4的Python和EN成绩改为100当想要获取更多的数据的时候,就需要将索引和切片配合使用。2、数据集成1、concat数据串联将1班和班的成绩合并在一起pd.concat将df1和df2的数据合并在一起,默认行合并。现在将df3和df1合并在一起。将df1和...

2022-02-26 21:43:22 855

原创 Pandas初级

一、数据结构1、一维结构Series创建一维的结构,data后为数据,index后为索引,索引可以使用列表,当不指定索引时,默认为数字从0开始排序。不指定索引index为默认索引。2、二维结构DataFrame创建二维结构,data创建一个二维的数组,index创建行索引,columns创建列索引。创建出来的表格和Excel类似,有行索引,有列索引。上面创建行列索引是通过列表创建,我们可以通过字典来创建DataFrame。创建DataFrame的第二种..

2022-02-25 11:12:11 804 2

原创 Numpy高级

索引切片对于二维数组的索引切片,需要将索引和切片配合使用。一、形状改变1、reshape数组重塑reshape将数组形状重塑,从三行五列变为五行三列,其中数组中的元素依次后移。如原来三行五列中的第一行的元素2重塑后变为第二行的元素。还有一种重塑方法用-1表示最后算,换句话来说如果设定reshap(-1,15)就会自动生成一行,reshape(-1,5)就会自动生成三行五列,但是要注意能够和原始数组对应起来,15个元素无法重塑为三行六列这一类。2、concatenate..

2022-02-23 21:23:04 573 1

原创 Numpy初阶

一、numpy数组创建Numpy数组是python中的一种开源数值计算扩展,不同于python中的列表,numpy可以用来储存和处理大型矩阵。创建数组最简单的方法是使用array函数,将python中的list转化为数组。我们也可以利用numpy中的内置函数来创建数组,示例如下:1、内置函数ones创建全为1的数组:开头import numpy as np 是将numpy包进行导入,shape = 10表示生成10个数。2、内置函数zeros创建全为0的数组:

2022-02-23 12:25:56 3748 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除