- 博客(34)
- 收藏
- 关注
原创 llm-graphRAG-环境搭建
使用 Microsoft GraphRAG 的 CLI ,官方建议的 前开发环境中已经安装了 Python 版本在 3.10 ~ 3.12之间,所以大家需要先确保当 Python ,并且版本在 3.10 ~ 3.12之间。2. 执行两个并行提取:实体提取用于识别人名、地名、组织名等实体,关系提取:查找不同数据块中实体之间 的关系,比如朋友、同事,员工等;3. 创建知识图谱,其中节点表示实体,边表示它们之间的关系,比如张三是李四的朋友, 张三是王五的同事;4. 通过识别密切相关的实体来构建社区;
2025-06-30 01:54:32
330
原创 【无标题】
原始帧数: 5512 → 剩余帧数: 4947。原始帧数: 6414 → 剩余帧数: 5045。已保存到: traj_trimmed.txt。已保存到: gt_trimmed.txt。
2025-05-21 15:04:25
152
原创 修改代码后,pv.point_w异常值
模块编号功能描述主要变量是否影响状态更新①点云是否为空检查❌②打印当前状态_state❌③检查参考点云❌④输出点云大小❌⑤判断是否绘图plot_time❌⑥视觉帧配准✅(但只更新图像对齐)⑦状态标志刷新_state→❌(未改变状态)⑧点云 + 图像可视化发布❌⑨输出状态fout_out❌。
2025-04-22 23:00:23
1071
1
原创 FastLIVO sync_packages() 核心伪代码流程
fastlivo的sync_packages部分,根据设置is_lidar_end来判断激光更新还是雷达更新,而is_lidar_end的数值是由雷达数据或者激光数据谁先满足条件可以打包,然后就执行一次更新,所以是可以说谁先到谁更新是吗。缓冲区中取出最前面的一条 IMU 数据,加入当前测量包。,用于存放与当前 LiDAR 帧对齐的 IMU 数据;:把当前最早的一条 IMU 数据添加到当前测量包。:把刚刚添加进去的这条 IMU 数据从缓存中移除;取出队列中最早的 IMU 消息。
2025-04-14 18:19:30
428
原创 【无标题】
变量名生命周期说明slam_mode_程序启动时设置,只设一次表示系统运行模式(是否使用图像)每帧都重新设置当前帧是做 LIO 还是 VIO场景打包结果后续执行没图像LIO 更新图像在 lidar 之后LIO 更新图像在 lidar 中间图像 + imu + 偏移视觉残差更新。
2025-04-14 17:05:37
980
原创 fastlivo2-ekf-voxelmap函数总结
✅Fast-LIVO2 使用的是顺序更新机制,在每一帧更新中,将视觉残差和雷达残差在同一次 EKF 优化循环中依次融合,形成真正的紧耦合联合优化框架。这也是 Fast-LIVO → Fast-LIVO2 最核心的系统性进化之一。i++)//遍历降采样后的点云数据 feats_down_body_;//取出每个点的坐标并转换为 Eigen 向量 V3D 类型(Vector3d);M3D var;把 body 坐标下的点转换为 world 坐标;
2025-04-08 18:53:06
1474
原创 FSATLIVO-ESIKF代码
这段代码利用雷达残差,通过高斯-牛顿法解出误差状态增量δx,并将其叠加到当前状态state,从而完成 EKF 的一次状态更新,同时判断是否收敛,为后续更新协方差和地图做准备。🧠将当前状态中的旋转(四元数 or 旋转矩阵)转换为欧拉角表示变量名类型含义或李群SO3类型当前状态中的最终旋转矩阵函数把旋转矩阵转换为欧拉角(单位:弧度)euler_cur当前状态的欧拉角表示,通常用于调试/发布姿态信息你贴的这段是EKF 主循环中的“收敛判断 + Rematch 控制 + 协方差更新 + 停止判断”模块。
2025-04-06 21:46:06
924
原创 slam-preprocess.h
• 使用 PCL 的 PointXYZINormal 类型,表示点的基本属性(坐标 x, y, z,强度 intensity,法向量 normal 等)。• 提取点云中的特征点,包括平面点(Plane)、跳变点(Edge Jump)、线点(Wire)等,用于后续的 SLAM 算法。• 根据不同雷达类型(如 Livox、Velodyne、Ouster 等),对点云数据进行格式转换、特征提取和分类。• 定义时间单位,分别为秒(SEC)、毫秒(MS)、微秒(US)、纳秒(NS)。
2024-12-13 18:43:00
855
原创 slam-imu_proprecessing.cpp
• Lidar_T_wrt_IMU / Lidar_R_wrt_IMU:初始化雷达与 IMU 的外参为单位矩阵。• Lidar_R_wrt_IMU / Lidar_T_wrt_IMU:雷达到 IMU 的外参(旋转和平移)。• 外参(Lidar_R_wrt_IMU / Lidar_T_wrt_IMU)实现雷达和 IMU 数据的对齐。• mean_acc / mean_gyr:初始化阶段计算的加速度和角速度均值。• imu_need_init_:标记是否需要重新初始化 IMU。
2024-12-13 18:42:37
730
原创 slam-preprocess.cpp【4】
• 调用 PCL 的 toROSMsg 函数,将输入的 PCL 点云(PointCloudXYZI)转换为 ROS 格式(sensor_msgs::PointCloud2)。2. 转换点云格式:将 PCL 格式的点云数据(PointCloudXYZI)转换为 ROS 格式的点云消息(sensor_msgs::PointCloud2)。• 转换后的 ROS 点云消息,符合 ROS 点云消息格式,包含点云数据和头信息。
2024-12-13 18:30:03
779
原创 slam-proprecess.cpp[4]
• 使用 PCL 的 fromROSMsg 函数,将 ROS 点云消息(sensor_msgs::PointCloud2)转换为 PCL 点云格式(pcl::PointCloud<pcl::PointXYZI>)。1. 接收 ROS 点云消息(sensor_msgs::PointCloud2)并将其转换为 PCL 点云格式(pcl::PointCloud<pcl::PointXYZI>)。• 转换点云数据为统一的自定义点类型 PointType,并存储在目标点云容器中,便于后续处理。
2024-12-13 18:20:09
918
原创 slam-preprocess.cpp【3】
以下是逐段解析及其在整体逻辑中的作用。• 在 Preprocess::process 中,具体雷达处理函数会进一步使用构造函数中初始化的参数(如 blind、point_filter_num)来执行点云清洗和分组。• 输出点云数据(pcl_out)与前一个 process 函数保持一致,表明该类的核心功能是处理不同类型点云数据,并将其标准化为统一格式。• pl_full 和 pl_buff 是临时存储结构,最终点云特征提取的结果会存储到 pl_surf 和 pl_corn 中。
2024-12-13 18:12:00
659
原创 slam-preprocess.cpp【1】
• 类型:点云指针,通常是 PCL(Point Cloud Library)中的点云数据结构,如 pcl::PointCloud::Ptr。这段代码定义了 Preprocess 类的一个核心函数 process,其作用是对输入的激光雷达数据进行处理,并将处理后的点云数据输出到指定的点云指针中。// 禁用特征,切换到雷达类型2,盲区距离0.01,滤波参数1。• 这些参数包括激光雷达类型、点云的滤波器配置、跳变检测的阈值,以及一些数学运算(如角度到余弦的转换)。
2024-12-13 17:15:55
587
原创 laserMapping主函数分析【12】
它负责初始化 ROS 环境、读取参数、启动订阅和发布节点、处理点云与 IMU 数据、并运行激光雷达和地图的核心算法。ROS 节点初始化 --> 参数加载 --> IMU & 外参初始化 --> ROS 订阅/发布初始化。点云 & IMU 数据同步 --> 去畸变 & 预处理 --> 分割局部地图 --> 增量更新地图。1. 数据同步:通过 sync_packages 同步点云和 IMU 数据。4. 数据发布:发布里程计、轨迹、点云、地图等数据。
2024-12-06 18:47:28
719
原创 h_share_model【11】
• 调用 ikdtree.Nearest_Search 从地图中找到点 point_world 最近的 NUM_MATCH_POINTS。• 当前状态变量,包括旋转矩阵(rot)、平移(pos)、外参(offset_R_L_I 和 offset_T_L_I)等。• feats_down_body 和 feats_down_world:降采样后的点云(局部坐标系和全局坐标系)。• 遍历所有点,筛选有效点(point_selected_surf[i] == true)。
2024-12-06 18:42:12
1014
原创 publish_odometry里程计信息,publish_path轨迹记录【10】
• 调用之前定义的 set_posestamp 函数,将当前帧的位置信息(state_point.pos)和姿态信息(geoQuat)赋值到 odomAftMapped.pose。• 使用 tf::TransformBroadcaster 将从全局坐标系(camera_init)到机器人本体坐标系(body)的变换广播到 ROS 的 tf 树中。• 将当前帧的位置信息(state_point.pos)和姿态信息(geoQuat)赋值给 msg_body_pose 的 pose 成员。
2024-12-06 18:39:19
1013
原创 publish_effect_world,publish_map,set_posestamp【9】
• 创建一个点云容器 laserCloudWorld,用于存储从局部坐标系(Body Frame)转换到全局坐标系(World Frame)的有效特征点。1. 将有效的特征点(laserCloudOri)从激光雷达坐标系(Body Frame)转换到全局坐标系(World Frame)。转换目标 激光雷达到全局坐标系,仅针对特征点 激光雷达到全局坐标系,针对整帧点云 激光雷达到 IMU 坐标系,针对整帧点云。
2024-12-06 18:31:08
2009
原创 publish_frame_body函数
1. 将当前帧的点云数据从激光雷达坐标系(Lidar Frame)转换到 IMU 坐标系(Body Frame)。• publish_frame_body 将点云转换到 IMU 的局部坐标系(Body Frame)。• publish_frame_world 将点云转换到全局坐标系(World Frame)。• 遍历当前帧点云的每个点,将它们从激光雷达坐标系转换到 IMU 坐标系。• 创建一个新的点云对象,用于存储转换到 IMU 坐标系的点云数据。
2024-12-06 18:15:01
957
原创 publish_frame_world 函数(当前帧点云坐标变换『8』
• 如果启用了密集点云发布(dense_pub_en),使用去畸变后的点云(feats_undistort)。2. 设置点云消息的时间戳为 lidar_end_time,帧的参考坐标系为 "camera_init"。• 保存间隔满足条件(scan_wait_num >= pcd_save_interval)。• 保存点云可能影响实时性能,需要根据硬件资源设置合理的 pcd_save_interval。• 将转换后的点云累积到 pcl_wait_save 中,用于批量保存。
2024-12-06 17:46:32
1813
原创 pcl库和pcd文件【7】
PCL,全称 Point Cloud Library,是一个开源的点云处理库,用于处理三维点云数据。在你的项目中,PCL 是处理点云数据的核心工具,用于管理点云、转换坐标、发布数据,以及保存和加载点云文件(如 PCD 文件)。• 点云存储:PointCloudXYZI 是 PCL 的数据类型,用于存储点云信息(如坐标和强度)。• 在代码中,PCD 文件的保存是为了记录处理后的点云,便于后续的离线分析或地图构建。• PCD 文件是用于存储三维点云数据的标准格式,广泛应用于点云存储和处理。
2024-12-06 17:45:12
2288
原创 map_incremental动态更新地图点云数据添加到地图中(降采样)【6】
• 如果当前点在地图中有与之接近的点(说明当前点与地图点云相关),并且 EKF 已完成初始化(可以提供可靠的位姿估计),就执行降采样和筛选逻辑,判断是否需要将当前点加入地图。如果当前点在地图中有最近点(Nearest_Points[i] 非空),并且 EKF 已初始化(flg_EKF_inited == true),进入降采样和筛选逻辑。• 将当前点的坐标映射到降采样网格的中心(mid_point),并计算当前点到网格中心的距离。
2024-12-06 16:35:28
827
1
原创 slam-【5】
• 提取缓冲区中的第一帧激光雷达数据(lidar_buffer.front())和其起始时间(time_buffer.front()),存入 meas.lidar 和 meas.lidar_beg_time。• 如果 IMU 缓冲区的最新数据时间戳早于激光雷达扫描结束时间 lidar_end_time,说明数据不足,无法同步,返回 false。• meas.lidar_beg_time 和 meas.lidar_end_time:当前帧激光雷达扫描的起止时间。
2024-12-06 15:58:26
584
原创 FSATLIO-LsaerMapping imu_cbk函数(4)
• 函数通过调整 IMU 时间戳(time_diff_lidar_to_imu 和 timediff_lidar_wrt_imu),确保激光雷达和 IMU 数据能够在时间上对齐。• time_diff_lidar_to_imu 和 timediff_lidar_wrt_imu:激光雷达和 IMU 的时间差,用于同步时间。• 调整 IMU 数据的时间戳,补偿激光雷达和 IMU 之间的时间差 time_diff_lidar_to_imu。
2024-11-29 18:41:02
938
原创 代码解析:lasermap_fov_segment 函数(3)-地图管理
这段代码的作用是动态管理 局部地图(Local Map),通过检测激光雷达相对于地图的相对位置,判断是否需要移动局部地图的范围,并更新 KD 树中的点云数据。以下是详细的逐步解析及与之前代码的联系。
2024-11-29 18:37:08
895
原创 FASTLIO-LaserMapping.cpp函数部分分析(2)
2.1这段代码定义了一个信号处理函数 SigHandle,用于处理程序中断信号(如用户通过 Ctrl+C 或其他信号终止程序)。2.1这段代码定义了一个信号处理函数 SigHandle,用于处理程序中断信号(如用户通过 Ctrl+C 或其他信号终止程序)。以下是逐步的详细解释:代码结构函数原型• SigHandle 是一个信号处理函数,通常由信号机制(如 POSIX 信号)调用。
2024-11-29 18:04:15
1106
原创 SLAM-FASTlio日志1 LaserMapping.cpp参数预处理分析
在 FastLIO 中,extrinT 和 extrinR 以及 position_last, Lidar_T_wrt_IMU, Lidar_R_wrt_IMU 是两种不同的数据结构,它们都用于描述激光雷达和 IMU 的外参(即相对关系)及位姿信息,但各自有特定的用途和表现形式。• 两者在功能上是互补的,extrinT 和 extrinR 是初始来源,Lidar_T_wrt_IMU 和 Lidar_R_wrt_IMU 是优化计算的最终表现形式。cube_len 表示一个三维地图网格的边长。
2024-11-29 16:42:56
896
原创 Ubuntu实用软件分享(包含微信)
用ubuntu20.04想下载微信时看到一个好的网站:是先看到博文(根据反馈241版本存在登录失败的情况,请下载238版本安装!然后找到去解压下载20.04亲测可用。
2024-11-23 15:51:26
201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅