一些计算受限平台上的SLAM整理

之前自己总结的计算受限平台上的SLAM,主要这么改,前端,改为直接法(甚至稀疏直接法)或者GPU加速,后端,改为滤波的形式。  
ROVIO可能是目前唯一一个前端直接法,后端滤波的,但是我还没有跑过,有时间可以试一试。  


SVO即使在低端计算平台上也能达到实时性,而在PC平台上则可以达到100多帧每秒的速度。在作者后续工作SVO 2.0中,速度更达到了惊人的400帧每秒。这使得SVO非常适用于计算平台受限的场合,例如无人机、手持AR/VR设备的定位。无人机也是弗斯特等人最初开发SVO的目标应用平台。

在FAST-LIO中,卡尔曼滤波被用于融合激光雷达和惯性测量单元的数据,实现高精度的位姿估计。   


【【开源】DSOL:一种快速直接稀疏里程计方案,处理速度提高5倍!宾夕法尼亚大学-哔哩哔哩】 https://b23.tv/4jpl8ob  
https://www.youtube.com/watch?v=yunBYUACUdg  
他们提出了一些算法和实现增强,即使在资源受限的平台上,计算速度也会显著提高(平均提高5倍)。速度的提高使他们能够以更高的帧速率处理图像,从而在快速运动时提供更好的结果。  
论文地址:https://arxiv.org/pdf/2203.08182.pdf  
代码地址:https://github.com/versatran01/dsol  

SchurVINS  
https://mp.weixin.qq.com/s/1g0CLzouo5RxPgBMzBr98w  
VINS主要包括两种方法:优化和滤波。基于优化的方法在定位的高精度方面很显著,但可能会受到高计算复杂性的影响。相反,基于滤波的方法实现了高效率,但牺牲了精度。因此,迫切需要开发一个结合了高精度和高效率的框架。受到基于优化的方法中的舒尔补的启发,作者充分利用了用于姿态和地标构建的高维残差模型中固有的稀疏结构,以实现EKF的高效性。因此,这篇文章提出了一种既实现了高效率又实现了高精度的基于EKF的VINS框架。  


FAST-LIVO   
是融合的FAST-LIO和SVO2,论文说可以在ARM平台做到实时运行。  
FAST-LIO是基于滤波的吧,SVO2是半直接法。   

FAST-LIVO2  
FAST-LIVO2可以在OrinNX和RK3588上实时运行。  


从ORBSLAM3论文里的这张图可以看出,前端是直接法的后端基本是优化,后端是滤波的前端基本是特征点法。我感觉可能是直接法本身的特性决定的,直接法本身就是基于最小化广度误差求解位姿。SchurVINS 看着似乎既有直接法又有滤波,但是注意它基于的SVO2.0其实只能算半直接法,提取了特征点的,只是没有计算描述子。  
https://blog.youkuaiyun.com/weixin_45947476/article/details/123595935  
![](https://gitee.com/maxibooksiyi/maxi_slam_md_file_repo1/raw/master/202307231907.png)  


Edge-SLAM  
边缘同步定位:边缘辅助视觉同步定位和建图  
Edge-SLAM - Edge-Assisted Visual Simultaneous Localization And Mapping  
用ORB-SLAM2作为一个原型视觉slam系统,并将其修改为edge和移动设备之间的分割架构。我们将跟踪计算保留在移动设备上,将剩余的计算,即局部映射和环路闭合,移动到边缘。  


Jetson-SLAM  
这个Jetson-SLAM我看了下代码,应该明显是基于ORBSLAM改的,但是似乎没有完全开源  
https://mp.weixin.qq.com/s/cxoFXBnlj2k4FiMyJByw0g  
https://mp.weixin.qq.com/s/TStBnrteGAGkMN4LKMtG5g  
标题:High-Speed Stereo Visual SLAM for Low-Powered Computing Devices  
作者:Ashish Kumar, Jaesik Park, Laxmidhar Behera  
机构:Indian Institute of Technology (IIT)、Seoul National University (SNU)  
原文链接:https://arxiv.org/abs/2410.04090  

代码链接:https://github.com/ashishkumar822/Jetson-SLAM
我们提出了一个精确的和GPU加速的立体视觉SLAM设计,称为Jetson-SLAM。它在NVIDIA的低功耗10W Jetson-NX嵌入式计算机上显示出60FPS以上的帧处理速率,在桌面级200W GPUs上显示出200FPS以上的帧处理速率,即使在立体声配置和多尺度设置中也是如此。我们的贡献有三个方面:(1)一种有界校正技术,以防止在快速检测中将许多非角点标记为角点,提高SLAM准确性。(2)一种新的金字塔剔除和聚集(PyCA)技术,通过利用GPU设备,在高速抑制冗余特征的同时,产生鲁棒的特征。PyCA使用我们针对GPU的新的多位置每线程剔除策略(MLPT)和线程高效Warp-Allocation (TEWA)方案,使Jetson-SLAM在嵌入式设备上实现高精度和高速度。(3)Jetson-SLAM图书馆通过数据共享机制实现资源效率。我们在三个具有挑战性的数据集上的实验:KITTI、EuRoC和KAIST-VIO,以及两个高度精确的SLAM后端:Full-BA和ICE-BA表明,Jetson-SLAM是可用的最快的精确和GPU加速SLAM系统。 

<think>好的,我现在要处理用户关于无人机、激光雷达和SLAM算法实现的查询。首先,我需要理解用户的具体需求。用户提到想了解或实现与这三者相关的技术方案或算法,并询问代码实现。根据之前的引用内容,用户可能是在尝试搭建一个无人机结合激光雷达的SLAM系统,可能用于导航或路径规划。 首先,我应该回顾用户提供的引用内容,看看有哪些相关算法和实现方法被提到。引用中提到了多个激光雷达SLAM算法,如LOAM、LEGO-LOAM、Hector SLAM、Cartographer等。特别是引用4详细描述了在ROS中使用Hector SLAM进行无人机建图的流程,包括节点之间的数据流和TF坐标变换。此外,引用5提到了在TX2上部署Cartographer,这可能涉及到硬件配置和ROS环境设置。 用户可能需要一个具体的实现步骤,包括算法选择、代码示例、硬件配置以及数据处理流程。考虑到无人机平台,实时性和计算效率很重要,因此需要选择适合嵌入式系统的算法,比如Hector SLAM或Cartographer,它们在资源受限的设备上表现较好。 接下来,我需要整理实现步骤。通常,实现这样的系统需要以下几个步骤: 1. 硬件选型:选择合适的激光雷达(如RPLIDAR)和无人机平台,确保IMU和雷达的兼容性。 2. 环境搭建:安装ROS和相关SLAM包,如hector_slam或cartographer。 3. 数据采集与处理:获取激光雷达数据,并进行预处理,比如去噪、滤波。 4. 算法实现:配置SLAM节点,处理传感器数据,生成地图和位姿估计。 5. 集成与控制:将SLAM输出的位姿信息传递给飞控,实现自主导航。 代码示例部分可能需要ROS节点之间的通信,比如订阅激光雷达的/scan话题,发布TF变换。引用4中的计算图展示了节点间的交互,可以据此编写launch文件和节点代码。 此外,需要注意坐标系的转换,无人机的姿态数据(来自IMU)需要与激光雷达数据融合,这涉及到TF的配置,如base_link到laser的变换。引用4提到使用imu_attitude_to_tf_node来处理IMU数据,这可能是一个关键点。 用户还可能关心如何优化算法性能,比如使用特征提取(如LOAM中的边缘和平面特征)或改进的扫描匹配方法(如ICP或NDT)。引用2中提到的LOAM和LEGO-LOAM的优化方法可以作为参考。 最后,应该考虑生成相关问题,帮助用户深入理解,比如如何选择适合的SLAM算法,如何处理传感器噪声,或者如何进行实时性能优化。这些都需要基于之前的引用内容,确保答案的准确性和相关性。</think>以下是关于无人机激光雷达SLAM算法实现的技术方案及代码框架解析: ### 一、技术实现路径 1. **硬件选型**:建议采用$360^\circ$扫描的单线激光雷达(如RPLIDAR A1)[^4],搭配无人机飞控(PX4)和嵌入式平台(NVIDIA Jetson TX2)[^5] 2. **算法选择**:推荐基于Hector SLAM的改进方案,其优势在于: - 无需IMU即可实现2D建图 - 支持非平面运动补偿(通过IMU姿态融合)[^4] - 计算效率满足实时性要求 3. **坐标系定义**: $$ \begin{cases} base_{link} \xrightarrow{tf} laser \\ imu_{frame} \xrightarrow{quaternion} base_{stabilized} \end{cases} $$ 需通过`tf`库实现坐标变换[^4] ### 二、ROS核心代码框架 ```python # 激光雷达驱动节点 rosrun rplidar_ros rplidarNode _serial_port:=/dev/ttyUSB0 # Hector SLAM主节点 rosrun hector_mapping hector_mapping _scan_topic:=/scan _map_resolution:=0.05 _pub_map_odom_transform:=true # IMU姿态转换节点 rosrun hector_imu_attitude_to_tf imu_attitude_to_tf_node _imu_topic:=/mavros/imu/data _target_frame:=base_link ``` ### 三、关键算法模块 1. **扫描匹配优化**: - 使用双线性插值加速栅格地图访问 - 通过高斯-牛顿法求解最优位姿: $$ \Delta \xi = -H^{-1}J^T\Sigma^{-1}e $$ 其中$H$为Hessian矩阵,$J$为雅可比矩阵[^2] 2. **运动畸变补偿**: ```cpp // 基于IMU数据的线性插值补偿 for (int i=0; i<scan_msg->ranges.size(); ++i) { double scan_time = scan_msg->header.stamp.toSec() + i*time_increment; Eigen::Vector3f pose = interpolateIMUData(imu_buffer, scan_time); correctLaserPoint(scan_points[i], pose); } ``` ### 四、性能优化策略 1. **多分辨率地图**:构建0.1m/0.5m/1.0m三级地图金字塔 2. **特征提取**:提取地面平面特征约束高度漂移[^2] 3. **内存管理**:采用滑动窗口法限制地图存储范围
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗筱涵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值