3D激光slam,cartographer的使用,第一视角点云

本文介绍了如何使用Cartographer进行3D激光SLAM,包括编译安装Cartographer和point_cloud_viewer,详细阐述了建图生成.pbstream文件的过程,并指导如何将pbstream文件转换为ply文件,最后通过point_cloud_viewer的web_viewer以第一视角展示点云数据,特别提到了在实际操作中需要注意的配置和点云设备为禾赛科技的pandar40。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cartographer的使用

编译安装

cartographer的安装
cartographer的安装在cartographer_ros;有详细的步骤。偶尔出现ceres库clone不了,不过也不是大问题,下载后,粘贴过去也是可以的。
point_cloud_viewer的安装
安装步骤:point_cloud_viewer,显示的部分是基于node.js的web工程。

curl https://sh.rustup.rs -sSf | sh
# in the root of repo
cargo build --release   #这个时候在target/release下有build_octree二进制文件
 complie the web_viewer
cd web_viewer
cd client
# install [nvm](https://github.com/creationix/nvm)
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
# make sure i
### 激光SLAM算法原理 激光SLAM(Simultaneous Localization And Mapping),即同时定位与地图构建技术,依赖于激光雷达来精确测量周围环境中的障碍物角度和距离。该过程使得机器人能够在未知环境中自主导航并创建环境的地图。 #### 基础概念 - **传感器数据获取**:通过安装在移动平台上的激光扫描仪收集一系列反射信号,形成点云数据集。 - **特征提取**:从原始点云中识别出显著几何特性作为地标用于后续处理。 - **状态估计**:运用扩展卡尔曼滤波(EKF)[^1] 或其他贝叶斯推断方法更新机器人的位姿假设。 - **地图表示**:建立栅格化或拓扑结构形式的地图模型存储已知空间信息。 - **闭环检测**:当再次访问之前探索过的区域时能够识别出来以修正累积误差。 #### 主要类别 ##### 1. 基于滤波器的方法 这类方法主要包括EKF SLAM 和 FastSLAM (Particle Filter),它们都属于概率论框架内的解决方案。优点在于计算量相对较小且易于理解实现;缺点则是难以应对复杂动态变化较大的真实世界情况以及不适合构建大型全局一致性的地图。 ##### 2. 图优化法 代表作如g2o, GTSAM 及 Cartographer 等,则采取了另一种思路——将整个轨迹视为一张由节点(位置)边(约束关系)构成的大规模稀疏图,并借助非线性最小二乘求解最优路径配置问题。此类方案能更好地适应户外开阔场地作业需求并且支持多源异构传感融合[^3]。 ##### 3. 特征匹配型 LOAM(Lidar Odometry and Mapping), LIO-SAM(LiDAR Inertial Odometry & Mapping with Smoothing And Mapping) 属于此范畴。特别适合处理三维立体场景尤其是高楼林立的城市街区或者自然地形起伏不定之处的数据配准任务。由于采用了IMU惯导辅助机制从而提高了鲁棒性和精度水平[^2]。 ```python import numpy as np from scipy.spatial.transform import Rotation as R def compute_relative_pose(point_cloud_1, point_cloud_2): """ 计算两个连续帧之间的相对变换矩阵 参数: point_cloud_1 -- ndarray(Nx3): 第一时刻的点云坐标集合 point_cloud_2 -- ndarray(Mx3): 下一刻度时间戳对应的观测值 返回: T -- ndarray(4x4): 表达从第一个到第二个视角转换关系的姿态阵列 """ # 这里省略具体的ICP迭代最近点算法细节... rotation_matrix = ... # 得到旋转部分R translation_vector = ... # 平移分量t r = R.from_matrix(rotation_matrix) quaternion = r.as_quat() T = np.eye(4) T[:3,:3] = rotation_matrix T[:3,3] = translation_vector.flatten() return T ``` ### 应用领域 随着硬件成本降低和技术进步,如今激光SLAM已被广泛应用于自动驾驶汽车、无人机巡检、服务机器人等领域。特别是在物流仓储自动化方面表现出色,可帮助AGV小车高效完成货物搬运工作而不需铺设磁条轨道等额外设施[^4]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值