SLAM学习笔记

发布时间:2026/7/21 18:17:46

SLAM学习笔记
1. 笛卡尔坐标系也称为直角坐标系就是普通的x,y平面直角坐标系和x,y,z空间直角坐标系2.lio-sam建立地图建立先验地图priori map生成的点云地图文件格式为.pcdrosbag info 数据集名称 :查看数据集话题信息3.安装liosam过程遇到的问题/usr/include/pcl-1.10/pcl/point_representation.h:308:7: required from here /usr/include/pcl-1.10/pcl/point_representation.h:252:48: error: the value of ‘NrDims’ is not usable in a constant expression安装过程参考https://blog.csdn.net/weixin_57071388/article/details/139114050?utm_mediumdistribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-0-139114050-blog-122322116.235^v43^pc_blog_bottom_relevance_base8spm1001.2101.3001.4242.1utm_relevant_index2解决过程核心问题是PCL点云库版本与 LIO-SAM 代码兼容性冲突LIO-SAM 原始代码基于 Ubuntu 16.04ROS Kinetic PCL 1.7/1.8开发若当前系统是 Ubuntu 20.04ROS Noetic PCL 1.10必然存在兼容性问题优先通过修改代码适配新版 PCL避免降级系统库。在cmakelist中添加set(CMAKE_CXX_STANDARD 14)强制编译器使用 C14 标准进行编译确保代码中使用的 C14 特性如智能指针增强、lambda 表达式改进、constexpr扩展等能被正确解析。LIO-SAM 代码中可能包含依赖 C11 及以上标准的语法如std::shared_ptr、范围 for 循环等指定CMAKE_CXX_STANDARD 14可避免因编译器默认标准过低导致的语法错误。4.运行rosdep update后liosam建图就报错了process[robot_b/lio_sam_original_imuPreintegration-1]: started with pid [12413] /home/ras/liosam_original_ws/devel/lib/lio_sam_original/lio_sam_original_imuPreintegration: symbol lookup error: /home/ras/liosam_original_ws/devel/lib/lio_sam_original/lio_sam_original_imuPreintegration: undefined symbol: _ZN5gtsam5ISAM26updateERKNS_20NonlinearFactorGraphERKNS_6ValuesERKSt6vectorImN3tbb13tbb_allocatorImEEERKN5boost8optionalINS_7FastMapImiEEEERKNSF_INS_8FastListImEEEESP_b [robot_b/lio_sam_original_imuPreintegration-1] process has died [pid 12413, exit code 127, cmd /home/ras/liosam_original_ws/devel/lib/lio_sam_original/lio_sam_original_imuPreintegration __name:lio_sam_original_imuPreintegration __log:/home/ras/.ros/log/d6af000e-f925-11f0-9133-453323bb98be/robot_b-lio_sam_original_imuPreintegration-1.log]. log file: /home/ras/.ros/log/d6af000e-f925-11f0-9133-453323bb98be/robot_b-lio_sam_original_imuPreintegration-1*.log原因运行 LIOSAM 的 imuPreintegration 节点时出现GTSAM 库符号未定义错误exit code 127这是rosdep update后rosdep update会更新系统的 ROS 依赖索引GTSAM 库版本不匹配或编译链接异常导致的典型问题解决方案重装GTSAM后重新编译LIOSAM,让 LIOSAM 链接新安装的 GTSAM 库a.进入GTSAM功能包里的build删除所有内容后在当前终端运行cmake ..cmake ....是一个路径表示「当前目录的上一级目录」。cmake .. 表示用上一级目录里的CMakeLists. txt在当前目录生成构建文件如 Makefileb.在当前终端中编译GTSAM, -j 后接CPU核心数比如4加速编译。make -j8c.安装 GTSAM 到系统目录sudo make install命令解释i.sudo获取管理员权限因为要把 GTSAM 安装到/usr/local/lib、/usr/local/include这类系统级目录普通用户没有写入权限必须用sudo提权否则会报 “Permission denied”权限拒绝错误。ii.make执行编译 / 安装指令make是 Linux 下的编译构建工具它会读取源码目录下的Makefile文件由之前的cmake ..生成执行里面定义的指令。iii.install: make 的 “安装” 目标make的一个指令参数类似函数的参数告诉make不要只编译还要执行 “安装” 步骤。你可以把这个过程类比成 “安装软件到电脑”cmake ..相当于 “配置安装路径、选择安装功能”比如勾选 “启用 TBB”make相当于 “把软件的安装包解压、编译成可运行的程序”但还在临时文件夹里sudo make install相当于 “把临时文件夹里的程序复制到电脑的 Program Files 目录让所有软件都能调用它”。d. catkin_make 重新编译LIOSAM并source ./devel/setup.bash5.slam相关知识数据集里面的发布数据话题一般来说imu数据话题是imu_correctgps数据是gps/fix点云数据是points_raw。先启动传感器(机器人底盘、相机、雷达、IMU、GPS)记录bag包之后运行bag包在运行liosam代码建立点云地图pcd图。slam中的坐标系查看建立的点云地图命令pcl_viewer GlobalMap.pcd10月11号桌面上有两个工作空间的名字不同但是内容相似的liosam代码liosam_ws和liosam_original_ws开机后必须先运行liosam_ws才可以成功运行liosam_original_ws。先运行liosam_original_ws会出现如下报错原因功能包重名导致路径优先级冲突两个工作空间的 package.xml 和 CMakeLists.txt 均声明包名为 lio_samROS 在查找包时通过 ROS_PACKAGE_PATH会优先选择先加载的路径导致 liosam_original_ws 实际引用 liosam_ws 的资源如参数、节点、消息。解决方法步骤一将 liosam_original_ws 的 package.xml 中 name 改为 lio_sam_originalCMakeLists.txt 中 project() 同步改为 lio_sam_original步骤二修正自定义消息的引用 全局替换源码中消息命名空间如 lio_sam::cloud_info 改为 lio_sam_original::cloud_info并在 CMakeLists.txt 中确保消息生成依赖正确add_dependencies 包含消息生成目标。步骤三更改launch 文件、params.yaml等配置文件中跟包名字相关的路径。步骤四彻底清理并重新编译删除 liosam_original_ws 的 build 和 devel 目录在全新终端中仅加载系统 ROS 环境重新编译并 source 新环境确保编译产物不依赖 liosam_ws。10月15日gtsam::Vector3表示 三维向量 的数据类型通常用于存储空间中的位置、速度、加速度、角速度等物理量或数学运算中的三维向量。可直接与 Eigen 库的 Eigen::Vector3d 互相转换方便调用 Eigen 的数学运算接口遇到问题滤除NAN点之后就可以建图了。vectorint indices;pcl::removeNaNFromPointCloud(*laserCloudIn, *laserCloudIn, indices);线程与线程锁锁的数量由需要保护的共享资源数量决定这里是imuQueue和odomQueue两个因此两个锁。线程数量由需要并行处理的任务数量决定这里是激光、IMU、里程计三个回调任务因此三个线程。ROS 中的线程如MultiThreadedSpinner创建的线程主要用于并行执行回调函数。当有多个回调函数如订阅多个传感器话题时多线程可以避免单个回调函数的耗时操作阻塞其他回调的执行。12月10日直接将bag包从回收站用鼠标拖出导致未建立索引终端中运行rosbag reindex命令修复索引

相关新闻

【AI搜索过滤黄金法则】:20年搜索架构师亲授3层语义过滤模型,精准剔除99.2%无关信息

【AI搜索过滤黄金法则】:20年搜索架构师亲授3层语义过滤模型,精准剔除99.2%无关信息

2026/7/21 18:17:46

更多请点击: https://kaifayun.com 第一章:AI搜索过滤无关信息的演进与挑战 早期搜索引擎依赖关键词匹配与PageRank等静态指标,难以区分语义相关性与表面词汇重合。随着Transformer架构普及,现代AI搜索系统转向基于上下文理解的意…

3个数据透视魔法:如何从CodexBar中提取AI使用统计的隐藏价值

3个数据透视魔法:如何从CodexBar中提取AI使用统计的隐藏价值

2026/7/21 18:17:46

3个数据透视魔法:如何从CodexBar中提取AI使用统计的隐藏价值 【免费下载链接】CodexBar Show usage stats for OpenAI Codex and Claude Code, without having to login. 项目地址: https://gitcode.com/GitHub_Trending/co/CodexBar 你是否曾好奇&#xff0…

从SQL到DAG一键生成:基于RAG增强的AI-ETL引擎如何解决Schema漂移难题

从SQL到DAG一键生成:基于RAG增强的AI-ETL引擎如何解决Schema漂移难题

2026/7/21 18:17:46

更多请点击: https://kaifayun.com 第一章:从SQL到DAG一键生成:基于RAG增强的AI-ETL引擎如何解决Schema漂移难题 传统ETL流程在面对上游数据源频繁变更(如字段增删、类型调整、嵌套结构重构)时,常因硬编码…

卷心菜食疗:胃黏膜修复的科学原理与烹饪技巧

卷心菜食疗:胃黏膜修复的科学原理与烹饪技巧

2026/7/21 23:08:06

1. 这道家常菜为何被称为"胃病克星"?作为一名长期受胃病困扰的过来人,我深知胃黏膜损伤带来的痛苦。烧心、反酸、胃胀这些症状反复发作,吃药只能暂时缓解。直到三年前,我在一位老中医那里得知了一个简单有效的食疗方子—…

Codex降价解析与AI编程实战指南

Codex降价解析与AI编程实战指南

2026/7/21 23:08:06

1. Codex降价背景与核心价值解析OpenAI近期释放出Codex服务即将大幅降价的重要信号,这将对AI开发领域产生深远影响。作为基于GPT-3的编程专用模型,Codex自推出以来就因其出色的代码生成能力备受开发者青睐,但较高的使用成本一直制约着其普及。…

Arthas 实战指南:从方法耗时定位到 JVM 变量热修改

Arthas 实战指南:从方法耗时定位到 JVM 变量热修改

2026/7/21 23:08:06

一、观察方法耗时——trace / stack 1.1 命令说明 命令用途前提trace追踪方法调用链及每一层耗时有流量经过实例stack输出方法被调用的调用路径有流量经过实例 1.2 实战案例:接口慢在哪里? 千阶智能外呼系统接口出现响应超时,第一步就是用…

如何快速批量下载哔咔漫画:多线程下载器完整使用指南

如何快速批量下载哔咔漫画:多线程下载器完整使用指南

2026/7/21 23:08:06

如何快速批量下载哔咔漫画:多线程下载器完整使用指南 还在为网络不稳定无法畅快阅读哔咔漫画而烦恼吗?每次追更时突然加载失败,收藏的漫画无法离线保存,手动一页页保存耗时费力……这些问题都将成为过去!今天我要介绍…

本地部署Whisper.cpp+Llama.cpp+ElevenLabs实现GPT-4o级语音交互

本地部署Whisper.cpp+Llama.cpp+ElevenLabs实现GPT-4o级语音交互

2026/7/21 23:08:06

1. 项目概述:在本地跑出接近GPT-4o语音交互体验的完整链路“Whisper.cpp Llama.cpp ElevenLabs: Local GPT-4o-like Voice Heaven”——这个标题不是营销噱头,而是我过去三个月反复打磨、压测、拆解再重装的实操成果。它描述的是一条完全脱离云端大模型…

Spring AI对话记忆管理:ChatMemory机制与实战配置

Spring AI对话记忆管理:ChatMemory机制与实战配置

2026/7/21 22:58:05

1. Spring AI对话短期记忆的核心价值 大型语言模型(LLM)本质上是无状态的——它们不会记住之前的对话内容。这种特性在需要连续对话的场景中会带来明显的局限性,比如当用户问"我刚才说了什么?"时,模型无法给…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/21 9:56:14

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/21 3:09:32

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

GraphRAG Local + Ollama:微软知识图谱本地化

GraphRAG Local + Ollama:微软知识图谱本地化

2026/7/21 0:06:35

普通 RAG 有个老毛病:你问它「这堆文档整体在讲什么」,它答不上来。因为它只会把问题切成向量,去几十个文本块里捞最相似的几段拼给模型看。可「整体讲什么」这种问题,答案根本不在任何单独一段里——它散在全篇的联系里。 微软的…

AI 数据产品化思考:让分析能力变成可售卖的数据服务

AI 数据产品化思考:让分析能力变成可售卖的数据服务

2026/7/21 0:06:35

AI 数据产品化思考:让分析能力变成可售卖的数据服务 大家好,我是朱大喜。这周一直在复盘具体的项目和技术,最后一篇聊点不一样的东西——数据产品化。做了这么多年数据分析,我发现一个规律:能卖出去的从来不是"分…

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

2026/7/21 0:06:35

本文完整呈现了企业级 AI Coding 落地的核心方法论:从 Harness 工程的微观/宏观定义,到 Loop 工程的六大构建模块,再到基于 SDD(规范驱动开发)的工程化落地路径。干货较多,建议收藏细读。 我从 22 年开始就…