- 博客(66)
- 资源 (2)
- 收藏
- 关注
原创 Fastlio系列算法中向后传播backward propagation的理解
向后传播是Fastlio系列算法的重点,用于消除点云运动畸变。直接理解起来是容易的,但是代码细节需要仔细理解一下。主要通过以下图片理解“imu_processing.hpp”中的对应代码。2、根据图片下方的加粗黑字理解绿色方框中的公式,可参考以下链接中的表述,个人认为比黑字好理解一些。imu_state.pos和imu_state.pos。1、一帧点云(最后一个点)结束时间的位姿为。,前面所有点都根据这个位姿进行推断,这也是。3、用向量的方式思考绿框第二行公式。
2024-09-24 21:17:54
337
原创 激光雷达点云格式对比与转换,速腾、Velodyne、Ouster
用于不同开源代码的传感器接入。激光雷达点云格式对比与转换,速腾、Velodyne、Ouster
2024-07-24 20:07:05
1066
原创 激光雷达点云投影到图像
多传感器融合一直是自动驾驶领域非常火的名词, 但是如何融合不同传感器的原始数据, 很多人对此都没有清晰的思路. 本文的目标是在KITTI数据集上实现激光雷达和相机的数据融合. 然而激光雷达得到的是3D点云, 而单目相机得到的是2D图像, 如何将3D空间中的点投影到图像平面上, 从而获得激光雷达与图像平面相交的区域, 是本文研究的重点. 其次本文会介绍相机这个大家常见的传感器, 以及讲解如何对相机进行畸变校准.
2024-02-24 16:47:03
1309
原创 记录labelImg上手过程
修改E:\labelimg-master\data\predefined_classes.txt里面的标签为自己需要的标签。进入anaconda虚拟环境后,cd到labelimg文件夹,然后输入命令。
2023-11-30 16:37:25
549
原创 Ubuntu20.04清理垃圾vscode缓存
使用VM虚拟机安装了Ubuntu系统,主目录空间越来越小,硬盘扩容之后很快又空间不足,甚至出现了开机卡黑屏的情况,这里记录一下解决过程。
2023-11-24 09:01:49
3386
1
原创 velodyne_msgs/VelodyneScan数据流消息转化为sensor_msgs/PointCloud2点云帧消息
在查看一个开源数据集时,点云信息格式为velodyne_msgs/VelodyneScan,无法在rviz中显示,需要转换为sensor_msgs/PointCloud2。主要的使用过程都在参考博客里写的很清楚,这里针对遇到的问题进行说明:1、不能使用VLP16_points.launch文件,根据激光雷达型号,从velodyne驱动包里找到相应的启动文件32e_points.launch2、但是没有显示点云,提示:Failed to transform from frame [/velodyne] t
2023-09-03 15:44:01
1023
原创 使用sh脚本启动ROS功能包
一个工程用到多个节点时,单独启动比较麻烦,使用launch文件是一种方法,但是觉得配置的不方便,按照一次性启动更加简单便捷。要先给文件权限,访问改为“读取和写入”,勾选“允许文件作为程序执行”,然后打开终端,输入
2023-08-23 09:50:55
604
原创 应用纯跟踪算法(pure pursuit)跟踪运动轨迹
以rosrun的方式启动程序时,ctrl+c可以终止程序,但是返回不到命令行状态。但是以roslaunch的方式启动时可以,可以返回到命令行,比较慢。算法封装为class PurePursuit,还需要在此基础上编写一个主函数运行算法。解决方法:手动增加信号量就好了,没有向其他博客那样加。可以封装一个roslaunch文件便于修改参数。执行语句就可以退出了,不知道怎么回事。没有这一行的话无法循环ROS。
2023-08-17 23:21:57
591
原创 运动路径规划,ROS发布期望运动轨迹
想让机器人/智能车无人驾驶,要有期望路径,最简单的是一条直线,或者是一条光滑曲线。可以人为设定几个关键点,拟合出直线或曲线作为期望路径。分别使用C++和Python在ROS下实现直线插值和三次样条插值
2023-08-16 16:51:14
1634
1
原创 ROS之rviz显示GNSS/INS运动轨迹
ROS在rviz中实时显示轨迹(nav_msgs/Path消息的使用)_nav_msgs/path.h默认代码的画圆速度很慢,改变ROS周期可以调整;gnss/ins轨迹,机器人运动轨迹
2023-08-14 09:26:44
1519
原创 上位机(Ubuntu)与下位机(Arduino)通讯控制机器人前轮转角
方案一:判断了旋转方向就向下位机发布指令,可以实现转向,但是会出现咯噔咯噔的卡顿现象,因为下位机接收到了指令频率太高了。方案二:在上个方案的基础上增加判断条件,也就是电机工作状态量,用大小为2的队列实现。实现基础:1、上位机、下位机通讯;2、ROS读取前轮转角传感器速度。
2023-07-06 20:39:41
982
原创 cam_lidar_calibration代码详解(三)点云重投影部分
assess_node节点文件src/assess_calibration.cpp用途:读取标定结果,提前一组图像/点云数据进行重投影,计算lidar——>camera变换矩阵,对点云进行投影和可视化。
2023-07-04 16:51:25
890
原创 读取拉线位移传感器(RS485协议)的ROS驱动包
软件环境:Windows 10 + VMware 16 + Ubuntu 20.04+ Noetic硬件包括:布瑞特拉线位移传感器,RS485协议,1024分辨率(10bit),UT-890A串口线。读取拉线位移传感器(RS485协议)的ROS驱动包。刚开始想的是解析RS485协议,找了好多资料都不能用,包括一个ROS的modbus包,版本太老了不能用。后来意识到解析RS485协议是多此一举的,直接对串口数据进行解析就可以!
2023-06-28 15:03:38
2941
3
原创 cam_lidar_calibration代码详解(二)优化计算过程
两套计算内容,旋转矩阵、变化矩阵。先优化求解最优旋转矩阵,再以此为初始值,优化旋转矩阵和平移向量,提高精度。设置遗传算法的适应函数、交叉、变异、评估精度、初始化基因。先对特征点提取和优化过程进行了梳理,见博客:cam_lidar_calibration代码详解(一)采样优化部分_可见一班的博客-CSDN博客这篇博客主要对优化计算的过程及代码进行整理,用到的是遗传算法。主要包含3个文件:openga.h,遗传算法的实现optimiser.h,定义旋转矩阵
2023-06-12 11:13:30
1008
原创 cam_lidar_calibration代码详解(一)采样优化部分
cam_lidar_calibration代码采样优化部分进行详细解释,注意包括 FeatureExtractor中的各个函数。激光雷达板的误差超过真值的10%,则拒绝该采样。说明该次截取的点云检测效果不佳。终端报错"Plane fitting error, LiDAR board dimensions incorrect; discarding sample - try capturing again"
2023-06-07 00:24:59
1560
原创 cam_lidar_calibration标定速腾激光雷达和单目相机外参
Ubuntu 20.04 + Noetic用camera_lidar_calibration标定激光雷达和相机。激光雷达:速腾聚创32线激光雷达 RS-LIDAR-32单目相机:acA1920-40gc(GigE接口)
2023-05-13 11:21:50
3649
33
原创 VSCODE配置ROS编译环境
用VSCode编辑ROS程序时,会出现一大串红色波浪线,让人挠头。在VSCode配置ROS环境,以提高工作效率和配置可移植性,现对配置步骤进行记录。VSCODE配置ROS编译环境
2023-05-11 23:13:26
1676
原创 ROS功能包camera_calibration标定相机内参
ROS功能包camera_calibration标定相机内参,--size 10x7: 为当前标定板的内点数量,即内部小正方形角点的交点--square 0.05:为每个小棋盘格的边长,单位是米image:=/camera_raw:标定当前订阅图像来源自名为/camera/image_raw的topiccamera:=/camera_raw:为摄像机名通过不停的移动标定板:直到X、Y、Size、Skew四个都变成绿色,点击“CALIBRATE”界面卡住,开始计算标定,完成后可点击“save”进行保存,
2023-05-11 22:13:51
1965
2
原创 win11安装双系统ubuntu20.04指导
联想笔记本电脑Y7000P 2023双系统安装,win11+ubuntu20.04安装流程及建议。解决WIFI 6E AX211在ubuntu系统下没有wifi,没有标识的问题,解决报错RCPI BI0S Error (bug): Failure creating named object,升级系统内核,解决新版本内核无法进入系统
2023-04-27 10:39:40
4561
原创 basler相机ROS硬触发程序补充camera_info话题
相机型号:acA1920-40gc(GigE接口)触发方式:GNSS的PPS硬触发运行环境:Ubuntu20.04 (64-Bit)程序依赖:pylon Release 6.3.0。先调试出来相机外部硬触发,并且可以由ROS采集图像。编写符合sensor_msgs/CameraInfo格式的camera_info话题
2023-04-12 11:31:46
1061
原创 上位机系统Ubuntu 20.04与下位机arduino UNO通讯
上位机系统Ubuntu 20.04与下位机arduino UNO通讯,chbook/libraries/ros1ib/ros/node handle.h:121:45:错误:'nullpt r'在此作用域中尚未声明
2023-03-13 21:36:47
1394
原创 Ubuntu系统用shell脚本批量重命名pcd点云文件
在对激光雷达点云进行处理时,多数时候要把bag格式转换成pcd格式,文件名是每一帧点云的时间戳。那么,需要批量读取pcd点云文件时,时间戳文件名很不友好。写一个脚本进行批量重命名。
2023-02-27 16:37:41
298
原创 PCL库根据动态名称输出pcd格式文件
在处理点云的过程中,需要for循环处理点云,然后提取出其中一部分点云并保存,例如欧式聚类,把每个聚类出的点云保存成一个文件,如果用常规的保存方式,文件名一致,只能保存最后一次循环的提取结果。writer.write(ss.str(), *cloud_cluster, false);ss
2023-02-24 15:51:54
313
原创 C++三种计时方法pcl::console::TicToc
Ubuntu环境下测试了两种测量代码运行时间的函数,二者精度接近,结果相似,但是个人更倾向于第一种,更简洁。clock()和gettimeofday(),pcl::console::TicToc
2023-02-21 15:42:01
983
原创 华测导航GPCHC协议ROS驱动包,CGI610、410接收机,NavSatStatus、GPSFix和普通格式
Ubuntu 20.04 + noetic 华测CGI 610——RS232-C——GPCHC 一、消息类型1.1 sensor_msgs/NavSatFix。sensor_msgs/NavSatStatus;gps_common::GPSFix把GPCHC数据流分割成一个一个的字段,然后进行相应的定义
2023-02-18 15:11:44
4991
8
原创 自定义速腾激光雷达点云XYZIRT格式并调用PCL库进行滤波
速腾激光雷达的ROS程序包可以输出XYZIRT格式,但是PCL库的点没有这种类型,需要进行自定义,并可以进行直通滤波和体素滤波等下采样处理。PCL中有两个函数直接解决了两者的转换关系:1.pcl::fromPCLPointCloud2()2.pcl::toPCLPointCloud2()//cloud_filtered转换为cloud_pass,从pcl::PCLPointCloud2格式转换为模板点云pcl::PointCloud\1、pcl::fromPCLPointCloud2
2023-02-09 22:11:56
1894
原创 CMakeLists分文件编写C++工程
在VS Code中新建文件,写入上述代码,并ctrl+s保存。选择系统里的编译器编译时报错:undefined reference to `swap(int, int)'在VS Code中新建文件,写入上述代码,并ctrl+s保存。添加到tasks.json中,使其链接到子函数源文件。记得保存一下再编译!可以点击小三角编译,也可以在终端输入指令编译。要用双引号包含子函数的头文件,第二行。要用双引号包含子函数的头文件,第一行。包含通用 iostream,第一行。
2023-02-02 22:12:07
779
原创 地心地固坐标系WGS84经纬度与笛卡尔直角坐标系相互转换的推导、理解与代码实现(C++和matlab)
日本在1918年之前,使用的是“日本东京1892年大地坐标系(JTD1892)”,又称“旧东京坐标系”,坐标原点在东京麻布旧东京天文台(旧海军观象台)子午仪中心点,采用1841年贝塞尔椭球,a=6377397.155米,1/f=299.1528。由于东京坐标系与WGS84坐标系的差异产生的问题日益突出。其二,在20世纪70年代末期,利用天文大地测量资料通过统一整体平差,建立了“1980年国家大地坐标系”,使用UGG75椭球,大地原点位于陕西省西安市北泾阳县永乐镇,又称“1980年西安大地坐标系”;
2022-12-13 20:35:30
18949
18
原创 车载GNSS/INS/LiDAR坐标系定义与理解
坐标轴定义:注意:坐标轴定义:注意:坐标轴定义:注意:坐标轴定义:原点在车体质心,XYZ轴的定义标准不同,与导航坐标系的东北天配套使用的话,使用右前上坐标系比较方便。X轴指向车体右方,Y轴指向车体前方,Z轴垂直XOY平面向上,构成右手笛卡尔坐标系。注意:ISO定义的车体坐标系在车辆动力学分析中较为常见;SAE定义的车体坐标系与航空航天领域常用的机体坐标系相一致;基于IMU定义的车体坐标系,则在IMU的相关应用中较为常见。我们选这个。坐标轴定义:坐标轴定义:设备本身的坐标系定义为右前上右手笛卡尔坐标系,
2022-12-03 22:51:41
4426
转载 标定激光雷达-IMU
LiDAR是自动驾驶领域的重要传感器,LiDAR与IMU的外参是LiDAR局部坐标系与世界坐标系之间转换的桥梁,是数据使用的关键参数。LiDAR--IMU外参标定有以下几种方法。
2022-11-22 16:38:39
4202
原创 LiDAR点云转换到大地坐标系——简单粗标定
速腾聚创激光雷达:RS-LIDAR-32华测导航接收机:CGI-610。一、LiDAR和IMU位姿标定为了获取更多的车前信息,将激光雷达向下倾斜一定角度安装。这样就会导致点云的Z坐标不对,前方离平台越远的点的Z轴坐标越大,甚至是个正值,这很不利于进行直通滤波等点云预处理。1.1安装角度标定在设计雷达安装结构的时候,设计了两个定位销,而且雷达是360°水平视角,暂不考虑点云yaw的安装误差,仅对pitch和roll进行标定。一种简单的半自动标定方法:
2022-11-22 16:02:18
6948
2
原创 Cloudompare使用记录
使用cloudcompare旋转查看点云的时候,中间的圈看着很不爽,Meshlab和CloudCompare截图时去除“旋转圈”有时为了截图,Meshlab和CloudCompare软件自带的用于浏览的圈就很多余,如:Meshlab:cloudcompare:这种”圈“:很影响截图,因此,我们可以把它们去除。:Never visible即可。Meshlab和CloudCompare截图时去除“旋转圈”_fb_help的博客-CSDN博客_cloudcompare meshlab。
2022-11-22 10:52:59
1359
原创 根据两向量求旋转矩阵(C++)
ctrl+shift+P——>C/C++:Edit Configuration中增加库的文件路径,库文件通常在/usr/include/中,或者对应上自己库的位置就可以。#include 需要Eigen库的依赖,如果只添加了PCL库,这一条头文件还会有波浪线,可以自己试一下看看。4的,变换矩阵最后一列是平移向量。求两向量的旋转矩阵由Eigen完成,省去很多敲公式的时间。
2022-11-14 16:15:25
2334
原创 速腾聚创RS-LiDAR激光雷达点云格式转换
对自己用速腾激光雷达采集的点云数据转换成pcd文件,转换过程中终端显示如图所示,显示了点个数,文件名,以及包含的xyz,intensity,ring,timestamp。pcd是二进制文件,vscode会有如下提示,点击“仍然打开”,可以看到和书上介绍的一样的pcd文件格式了,DATA binary下一行开始是具体数据,显示为乱码。 cloudcompare查看可以根据intensity、ring、time的渲染去查看点云,比较好,数据格式
2022-11-08 15:01:01
3388
3
原创 PCL学习记录——点云滤波
问题出现于示例代码的voxel_grid和extract_indices中。从GitHub下载的部分代码不能编译通过,对pcl点云格式pcl::PCLPointCloud2::Ptr进行学习和理解。源代码是sensor_msgs::PointCloud2,显然是运行于ROS里的。另外,涉及到点云数据格式的转换。这个示例的运行方式不一样,如果只在终端输入./remove_outliers ,会提示:please specify command line arg '-r' or '-c'正确输入指令为:
2022-11-02 21:34:56
378
基于ROS的seria接收节点,上位机读取解析RS485协议的拉线位移传感器数据
2023-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人