自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 资源 (10)
  • 收藏
  • 关注

原创 海量点云渲染方法

还有一点就是点云的裁剪,每一个八叉树体素都可以生成一个包围盒,如果在渲染的过程中,发现有一些点云投影后是在屏幕外,那么就没有必要对其进行渲染,这样就减少了渲染工作量。基于八叉树的lod模型生成:假设现在八叉树构建完毕,点都存储在了叶子节点上,这时候,可以把同一个父节点的几个叶子结点中的点,使用均匀降采样或者随机降采样的方式,缩减点云数量,然后把这些点存储在父节点中,同时删除子节点中的该点。这样在渲染的时候,可以使用八叉树的某一层来进行渲染,当然,如果是想渲染更详细,就需要渲染叶子节点。

2025-07-28 11:02:42 181

原创 fast-livo硬件同步stm32代码学习

ccr就是一个比较值,如果向上计数,cnt小于ccr,那么就是低电平,如果cnt大于ccr,那么就是高电平。看tim2, arr= 999, psc= 7199, 那么stm32108c他的主频是72M,也就是72*10的6次方。,也就是说ccr= arr/2,就是500。在看stm32代码的时候,在想他是如何做的同步,仔细看了看程序,发现竟然逐渐看懂了。两个都是向上计数的话,那么一个是先高电平后低电平,一个是先低电平后高电平。tim3配置了中断,那么一秒的中断次数和tim3定时器的频率是一致的。

2025-07-23 17:09:00 362

原创 xavier nx上编译fast-livo过程中出现的问题记录

二、编译的时候,出现了“c++: fatal error: Killed signal terminated program cc1plus“,个人感觉,应该是编译的时候太占内存了,内存不够了。坐着貌似实在nuc上编译的,本人是在xavier nx上编译的,所以还是有点差异,也遇到了网页中所没有遇到的问题。一、安装了海康相机后,再安装fast-lio等用到pcl库的工程,就一直出现liuusb错误。打开vikit工程中的common的文件夹中的CMakeLists.txt,改成这个样子。

2025-07-20 17:25:03 233

原创 2D和3D激光slam的点云去运动畸变

在使用激光雷达设备采集点云的时候,我们都知道,激光雷达是边运动边采集的,每一个点云采集时的激光雷达的中心和姿态都是不一样的,如果不加以矫正,那么这一帧数据就会出现问题,比如采集一个平面的结构的时候,所采集的数据呈现出来的可能就是一个非平面。直接使用插值所的的旋转矩阵把雷达点变换到世界坐标系中,然后使用start点的旋转矩阵求逆,然后乘上世界点,就可以把imu世界点变换到start点所在的当前坐标系下,也就是假设start点的坐标系旋转矩阵是单位矩阵,平移矩阵是(0,0,0)。这样就完成了点的畸变矫正。

2025-07-14 18:17:24 969

原创 ros topic和service的使用

在做ldiar slam的时候,最常用的当属topic,偶尔也会用一下service,action则很少使用。现在一块来看一下topic的使用。以spawn为例子,学习service的使用。这个例子比较简洁,这样很容易学会。topic的消息订阅和发布。二、service的使用。一、topic的使用。

2025-07-11 17:21:52 178

原创 sensor_msgs中常用的传感器数据格式以及c++操作

sensor_msgs中常用的一些传感器有imu、图像、点云、激光雷达点云、里程计信息等等信息。接下来,我们俩看一下这些传感器数据,以及数据如何操作。

2025-07-11 16:05:10 139

原创 loam的scanRegistration.cpp文件学习

那么想象一下,startori处于0度到180度,假设为90度,ebdori减去startori之后,小于PI,假设endori为160度,那么显然转了一个周期,才转了70度是不太合理的,所以endori要加上2PI,为520度。就是把imu世界坐标系下的当前点速度,减去imu世界坐标系下的start点速度,得到了一个imu世界坐标系下的速度矢量,然后通过R.inverse()把imu世界坐标系下的速度矢量,变换到了start点坐标系下。比较好看懂,都是在imu世界坐标系中计算得到的。

2025-07-08 14:31:39 735

原创 LOAM中消除重力影响和预积分(R,V、P)的计算(超详细)

AccumulateIMUShift()函数中从imu当前坐标系变换到imu世界坐标系中,用的是roll(z)---pitch(x)---yaw(y),所以imu的安置就是z轴指向前进方向,x轴指向左边,y轴指向上,也就是imu按照。位置就是根据s = s0+ v*t +1/2*a*t*t得到的,这个位置是imu世界坐标系下的位置。左(x)---上(y)---前(z),所以重力在该坐标系下矢量是多少呢?那么用imu当前坐标系中的加速度减去g,就可以得到当前坐标系中的去除重力后的加速度。

2025-07-07 18:58:27 361

原创 标定系列(三):lidar-gnss标定

接着看代码是怎么实现体素占据的,实际上不是构建的优化函数来优化的,实际上相对于是不断的尝试试出来的,这里面的iter*direction[j]和xyz_resolution和rpy_resolution是一些参数,这些参数构成了一个deta_transform,附加在粗参数基础上,然后一个参数一个参数的去实验,看看哪一个参数可以减少体素占用数量。然后使用BALM中的王个划分方法,也就是八叉树划分方法,把点云划分到体素中,在每一个体素中进行平面拟合,然后在优化的时候就是直接优化的点到平面的距离最小。

2025-07-05 21:20:27 261

原创 标定系列(二):lidar-camera相机标定 -使用线特征

p_l_2d就是激光线点投影点,p_c_2d就是查找到的像素最临近点,direction_cam就是使用查找到的最临近的像素点计算得到的方向,directon_lidar就是查找到的激光雷达最临近投影点所计算得到的方向。这个函数,首先在每一个体素中,初始化了一个平面提取模型,然后在体素内多次提取平面,那么在该体素中就行成了一个plane_list,如果列表中平面数量大于2,则进行相交实验,我们看,转到了一个。然后用kdtree查找,查找到最临近的点,如果最临近的点满足一定的要求,则认为是可靠的线点。

2025-07-03 21:12:18 883

原创 rosbag的使用

1.使用代码操作bag文件。

2025-07-03 14:55:50 87

原创 vscode中c_cpp_properities.cpp文件生成和作用

最近深受vscode不知道如何补全困扰,没有补全功能将会极大的减弱开发效率,今天上午刚好试了试,发现可以了。这样,vscode会自动生成一个c_cpp_properities.cpp文件。1. 使用crtl+shift+p,然后填入c/c++,选择。3.再去cpp文件中编程,发现有提示,也有补全功能了。2.加入对应库的头文件所在的目录,以/**,结尾。

2025-07-03 14:45:43 306

原创 Jetson xavier nx安装 海康工业相机MVS

安装的时候要注意,解压出来的文件中,树莓派选择文件名中armfhf的两个文件,如果是linux-PC端可以选择x86_84,jetson选择aarch64,i386是32位的linux-PC.在linux安装MVS软件。如何不设置库目录,直接打开./MVS,将会发现缺少库配置。点击下载,然后解压提取到MVS文件夹中。

2025-07-02 10:26:23 204

原创 ubuntu下好用的软件

用的时候只需要双击一下图标就可以了。

2025-06-25 23:43:58 211

原创 ros (三) 使用消息传递imu

四、camkelists 修改。没显示出来imu不知道为啥。

2025-06-25 23:38:35 139

原创 ros (二) 使用消息传递点云+rviz显示

点击rviz左下角的add按钮,选择pointcloud2,显示点云,如果发现点云没有显示,则更改pub中的frame_id = “map”,就可以显示出来了。四、使用rviz接收消息。

2025-06-25 22:46:03 243

原创 ros使用(一) ubuntu以及ros的操作

3. pwd 获取当前所在路径。6.chmod +x 赋予权限。一、ubuntu 的常用命令。2.cd 进入或者退出文件夹。4.touch 生成文件命令。5.rm 移除文件或者文件夹。1.mkdir 生成文件夹。2.对于topic有。四、生成工作空间流程。

2025-06-25 14:33:52 175

原创 ros(一)使用消息传递图像+launch启动文件

然后使用catkin_make编译一下,看看书在devel/lib文件夹下是否生成了test_launch/img_pub和test_launch/img_sub可执行文件。首先在test_launch文件夹下新建一个launch文件夹,然后使用touch test_launch.launch命令,新建一个launch文件。在 test_launch/src文件夹下,新建一个img_pub.cpp和一个 img_sub.cpp文件。写完程序后,还需要修改一下Cmakelist.txt,具体的在。

2025-06-25 00:13:43 387

原创 ros程序编写的一些问题记录

2)roslaunch pkg node_exe启动后,想关闭执行的时候按ctrl+c无法关闭,这时候可以按ctrl+alt+t生成一个终端,然后再终端中查看rosnode list查看节点, 然后使用rosnode kill noide_name来关闭该节点。(1)build中生成了pkg, pkg下生了node也就是可执行文件,但是devel/lib文件夹下没有生成可执行文件,进而导致rosrun无法使用,这个问题需要怎么解决?这两个语句放错了位置,应该放在CmakeList.txt中的。

2025-06-24 23:59:13 134

原创 标定系列(一):lidar-camera-rgbd相机标定

主要是看的这一篇论文:Automatic Extrinsic Calibration Method for LiDAR and Camera Sensor Setups思想:因为标定的思想大概就分为两三类,一类就是有共视关系的,第二类就是刚体固连没有共视关系的,第三类就是利用结构特征的。那今天这一类算是利用共视关系+结构特征的。具体我们先看图:先看这幅图,有四个aruco标志,四个圆孔。

2025-06-16 11:25:30 349

原创 ros launch文件解析

如果为’log’,则stdout / stderr输出将发送到$ ROS_HOME / log中的日志文件,并且stderr将继续发送到屏幕。有时,节点1发布消息1给话题1(你可能需要该特定消息),而后,消息1进入了节点2,而节点2发布了消息2到话题2,消息2中包括了消息1的内容,消息2也被另一节点3接收。如果为true,则将当前文件中设置的所有args添加到为处理包含的文件而创建的子文件中。它启动一个单独的“talker”节点,该节点是“rospy_tutorials”软件包的一部分。

2025-06-15 16:48:38 772

原创 ros2消息和数据的转换

ros2可以和lidar、imu、相机、超声波雷达和小车控制等硬件相互通讯。通讯的过程中是按照一定的消息格式来通讯的,但是数据处理的时候则是直接对消息中的数据进行处理,因此消息和数据之间是需要进行转换的。那么怎么转换呢?

2025-06-15 16:34:20 957

原创 spining-lidar的电机和激光雷达体(lidar-imu)之间的标定

具体的,假设一点位于激光雷达坐标系中,然后通过激光雷达和电机之间的旋转和平移计算出来 点在电机转轴坐标系下的位置,然后根据电机转轴和IMU之间的旋转和平移矩阵计算出来,点在imu坐标系下的点位。2.电机转轴和lidar-imu的初值计算。当然位置这时候仍然假设激光雷达中心和电机转轴垂直的面 交于电机转轴的点为电机转轴的中心点。1.位置方面,显然,电机转轴是没有高度的,所以优化的相对量就是detax和detaY.1.lidar和imu的标定:电机不转,先进行imu-lidar之间的标定,得到一系列参数。

2025-06-01 18:40:49 377

原创 lidar和imu的标定(四)小结

2.然后就是激光里程计来计算每一激光雷达帧的位置和姿态,当然1中说了,雷达和imu之间的相对旋转和平移和重力是原始的,有误差的,所以生成的点云还存在一部分由于重力所导致的畸变。重力会影响一部分线加速度,进而影响一帧内点云的生成。1.lidar_imu_init和gril-calib和其他的imu和lidar标定算法中,原始的lidar和imu之间的旋转和平移应该假设是不准确的,但是我们也可以假设,安装精度比较高,可以使用imu的数据对激光雷达的点云计算得到初始的去畸变点云。

2025-06-01 18:17:42 278

原创 lidar和imu的标定(三)平面约束的方法

平面优化则很容易懂,就是标定出来了激光雷达到IMU之间的旋转平移之后,直接就把激光雷达中的点变换到IMU坐标系下,然后对符合平面的点进行平面拟合,然后呢?看了一篇:基于平面特征的地面机器人雷达-惯性里程计外参标定方法;它和GRIL-Calib不同之处,就是采用了平面优化和栅格优化。优化的就是旋转平移, 没有优化重力、imu偏置。栅格优化就不介绍了,感觉工程上不。

2025-06-01 18:09:31 261

原创 lidar和imu的标定(二)GRIL-Calib

公式24中dI就是IMU中心与地面平面之间的距离,dI是直接从地面量取的到IMU中心之间的距离,相当于是在G系中, 首先经过RGI变换到IMU坐标系中,然后通过RIL变换到激光雷达坐标系中,dL是从地面开始量取的到激光雷达中心的距离,也是在G系中,然后通过RGL变换到激光雷达坐标系中,相减后左乘e3,得到在铅锤方向上的投影长度。根据imu的角速度和线加速度,可以计算得到imu此时相对于地面的旋转矩阵,(xxxx - 感觉这时候必须假设地面时水平的,感觉实际上地面不一定是水平的),最后,再看这个,三合一了。

2025-06-01 17:57:46 435

原创 lidar和imu的标定(一)Robust Real-time LiDAR-inertial Initialization

角加速度乘上一个时间detaT是不是就得到了角速度的一个小增加量,加到原有的整采样间隔上的角速度上,是不是就得到了一个合成的角速度,而这个角速度经过随机游走噪声改正之后,它就应该等于对应时刻的激光雷达的角速度变换到IMU坐标系下,所以就牵扯了旋转变换R(LI),biasw,和detaT。主要用的就是这个公式,其中RAB就是AB帧间的旋转矩阵,WA就是A帧的角速度,ΩA表示A帧的角加速度,PB表示B帧的位置,aA表示A帧的线加速度,aB表示B帧的加速度。注意,这时候得到的参数,时间戳不一定对齐。

2025-06-01 17:29:04 414

原创 qml(十一) Switch,BusyIndicator ,ProgressBar

(二) BusyIndicator。(三)ProgressBar。

2025-04-17 11:02:18 105

原创 qml(十) Dialog,ColorDialog,FileDialog,FolderDialog和MessageDialog

【代码】qml(十) Dialog,ColorDialog,FileDialog,FolderDialog和MessageDialog。

2025-04-17 10:45:53 141

原创 qml(九)popup

【代码】qml(九)popup。

2025-04-17 10:24:25 123

原创 qml(九)label

【代码】qml(九)label。

2025-04-17 10:15:40 124

原创 qml(八)menuBar,menu,menuitem,action

2.menu的第二种用法。

2025-04-17 10:05:25 173

原创 qml (七)image和mousearea和textfield

(二)MouseArea。(三)textfield。

2025-04-17 09:52:16 104

原创 qml (六)column和row和grid rowlayout columnlayout

【代码】qml (六)column。

2025-04-17 09:19:55 138

原创 qml (五)timer

timer 的interval表示的是时间间隔,ontrigger表示定时器到达时间间隔后的回调函数。repeate是表示start后ontrigger回调一次还是连续回调。timer.start()表示开启定时器,restart()表示重新开启定时器,如果开没达到interval时间,则重新计时。stop()函数表示暂停。

2025-04-16 20:30:17 195

原创 qml (四) 信号与槽基础

在qml文件内定义一个信号,并定义一个槽函数,槽函数可以响应。

2025-04-13 19:07:34 109

原创 qml (三)check和radio控件

【代码】qml (三)check和radio控件。

2025-04-12 23:04:54 124

原创 qml (二)text

【代码】qml (二)text。

2025-04-12 22:42:05 126

原创 qml (一) button,RoundButton,

Window {width: 640Button{id:btn0width:50height:30x:300y:300elseelseButton{id: btn1width: 30height: 20Button{id: btn2width: 30height: 20x: 50Button{id: btn3width: 30。

2025-04-12 22:12:41 416

原创 重构(4)

一些词汇,创建(create,init,load),销毁(destroy,release,uninit,deinit),动词(get,fetch,load,read,write,find、serach,receive,pull),(set, write,put,push),更新(update,reset,refresh),添加/移除(add,remove,append,insert,delete);启动/停止(start,open,launch, close,stop,finish);

2025-01-22 18:04:26 967

realsense的ros2驱动包

realsense的ros2驱动包

2025-07-22

利用photoshop+perfecticon制作 程序图标

利用photoshop+perfecticon制作 程序图标,详细的教程,本人的制作流程. 附图

2015-10-22

flann-1.7.1-vs2010-x86

flann-1.7.1-vs2010-x86 32位, 这好似一个很好用的库.

2015-01-30

ICP最邻近点迭代法

ICP最邻近点迭代法的论文,清晰地描述了ICP的流程和思想

2015-01-30

好用的进度条

很好用的进度条!可以添加简单的文字,进行文字和进度显示

2015-10-07

CloudCompare_v2.6.1.beta_bin_x86

CloudCompare_v2.6.1.beta_bin_x86 32位可用,直接点exe,无须安装, 绿色环保安全,显示点云效果很好,请放心使用

2015-01-27

opengl库 完整版

里面对.h文件,lib文件,dll文件分别存放有利于您进行配置.

2015-03-29

OpenCV教程-基础篇

OpenCV教程-基础篇,是学习图像处理编程的入门必备利器.值得拥有!

2015-01-30

Morphology0.4.rar

浅墨的形态学处理代码 ,可以清晰地看到 各种方法的 运算连接过程,

2016-02-23

空空如也

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

TA关注的人

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