Ubuntu20.04运行LIO-SEGMOT(LiDAR inertial odometry via synchronized self-motion Est):报错解决(一篇成功运行)

目录

写在前面

​编辑运行SE-SSD-ROS

小坑一

安装cuda11.8以及pytorch2.0.0

ModuleNotFoundError: No module named ‘Cython‘

THC/THC.h: No such file or directory Cause of the problem and a series of solutions 

ModuleNotFoundError: No module named 'torch._six'

 error: more than one operator "!=" matches these operands:

numpy的一个错误

编译运行LIO-SEGMOT

 [lio_segmt_mapOptimization-4]

Point cloud timestamp not available

更改opencv以及修改CMakeLists.txt中C++=14


写在前面

        LIO-SEGMOT作为一款使用雷达进行目标检测以及跟踪的较新的论文,值得学习,这篇文章比较新,参考资料都比较少,并且官方提供的代码使用的环境比较旧,本人在Ubuntu20.04上运行这篇文章的代码,耗费了比较长时间,特此记录自己遇到的问题以及解决方案,仅供参考,如果有其他更好的方法,欢迎留言共同学习进步。

        官方Github仓库链接:GitHub - StephLin/LIO-SEGMOT: LiDAR-Inertial Odometry via Simultaneous Ego-motion Estimation and Multiple Object Tracking (ICRA 2023)

        这篇文章作为目标检测的论文,使用到了预测器,这个预测器对应的环境的配置花费了我比较长的时间。官方提供了两个预测器:一个为Kitti数据集提供的。一个为固态激光雷达Livox提供的,我选择为Kitti数据集提供的。下面将分别介绍自己运行预测器以及源码遇到的问题。

运行SE-SSD-ROS

        官方Github链接:GitHub - StephLin/SE-SSD-ROS: SE-SSD 3D LiDAR detection with ROS wrapper (designed for LIO-SEGMOT)

        官方提供的编译版本使用的是cuda10.2和配套的pytorch1.6,这个版本对于大多数30系显卡以及所有40系显卡都不支持,本人使用的是4060显卡,支持算力是89,官方推荐的cuda以及ptorch版本对于我都不适用。

小坑一

        在编译软件之前并没有cuda相关知识,直接按照文档说明并且搜索了cuda10.2版本安装,安装解决了大部分问题后,出现如下错误: 

ValueError: Unknown CUDA arch (8.9) or GPU not supported 报错处理

         百度后有一种方案:修改.bashrc文件强制指定当前计算机算力:在.bashrc文件中添加如下代码:

sudo vim ~/.bashrc
# 在配置文件中添加如下一行
export TORCH_CUDA_ARCH_LIST=8.6  # 因为是CUDA11.0,对应的算力为8.6
source ~/.bashrc

        修改后确实能够通过编译,但是运行时显示当前计算机不支持此算力(大致就是这个意思)。本菜鸡第一次接触cuda并不理解,又花费时间查到一篇博客说的内容大致是:驱动是向下兼容的,高cuda能在低显卡上运行,低cuda却不能在高显卡上运行。即使前面编译成功了,但却不能够运行,事实证明强制指定计算机算力的方式不可取,狠狠的坑了我。

安装cuda11.8以及pytorch2.0.0

        我的计算机是4060对应cuda版本是11.8就可以,读者具体安装cuda版本可以根据Nvidia官网查询对应的cuda版本:https://developer.nvidia.com/cuda-gpus#collapse2

        进入官网点击下述查看RTX显卡对应cuda版本:

        查询到对应cuda版本后参考下述两篇介绍ubuntu20.04安装cuda11.8以及对应cuDNN文件(这两篇按照步骤就可以解决安装遇到的问题):

【Ubuntu 20.04LTS系统】安装CUDA11.8、cuDNN,可进行CUDA版本切换_ubuntu20.04安装cuda11.8-CSDN博客

Ubuntu 20.04安装CUDA & CUDNN 手把手带你撸_ubuntu20.04安装cuda-CSDN博客

        上述第二篇链接主要降低gcc、g++编译版本太高以及安装后验证cuda以及cuDNN是否安装正确。

        安装了cuda后,按照预测器官方继续执行即可:其中torch版本原本的1.6.0以及不适用于cuda11.8需要修改为对应版本。(我是通过脚本的方式安装的,如果使用Docker安装遇到的问题请自行百度)

        直接在pytorch官网查询cuda11.8对应的pytorch版本,链接:Previous PyTorch Versions | PyTorch,由于是通过pip方式安装,主要找寻Wheel对应的信息,如下所述,我安装的是torch2.0.0以及torchversion0.15.1。

               安装torch后验证安装是否正确:验证参考如下链接(非常有用):

2023最新pytorch安装(超详细版)-CSDN博客

        如果最终没有显示True请再次安装,必须检验ptorch安装是否成功。

ModuleNotFoundError: No module named ‘Cython‘

        直接通过pip安装Cython即可。

python3 -m pip install Cython

THC/THC.h: No such file or directory Cause of the problem and a series of solutions 

        由于升级了pytorch到2.2.0,有很多东西不支持,需要修改,THC/THC.h这类错误均需要替换或者直接删除对应头文件,主要参考下述解决,如果下面几篇文章中没有提出如何解决对应的头文件报错,那就直接把对应的头文件注释掉就可以了。

Maskrcnn/Faster-rcnn依赖项安装过程中THC.h: No such file or directory/THCeilDiv Undefined/分配内存空间等问题的解决方案_error: identifier "thcceildiv" is undefined-CSDN博客

THC/THC.h: No such file or directory 问题原因及一系列解决方案_thcgeneral.h: no such file or directory-CSDN博客 配置SE-SSD环境遇到的问题解决_[synth 8-151] case item 32'b0000000000000000000000-CSDN博客

项目环境由pytorch1.10升级1.11中间要改的东西_thcceildiv-CSDN博客

ModuleNotFoundError: No module named 'torch._six'

        出现这个问题的原有查询PyTorch和代码不兼容,在某些情况下,代码可能依赖于PyTorch的早期版本中的特定模块或功能。解决方案可能有以下几种:
1、升级或降级你的PyTorch版本以匹配你的代码。你可以使用pip或conda来安装特定版本的PyTorch

2、自定义string_classes:

        我这里采用的是第二种方式,直接自定义string_classes解决。

        还有一个地方是torch._six.RX3类似的,直接将torch._six替换为torch就可以了。

 error: more than one operator "!=" matches these operands:

        这个错误查询博客后指出是由于cuda和spconv库有冲突,导致编译器识别到两个符号,出错,解决方案直接找到代码报错的地方找到对应的代码,将spconv中的判断符号附近的代码注释掉,完美解决。

numpy的一个错误

  

        直接升级一下numpy版本就可以解决:

python3 -m pip install numpy=1.23.4

编译运行LIO-SEGMOT

        官方Github链接:GitHub - StephLin/LIO-SEGMOT: LiDAR-Inertial Odometry via Simultaneous Ego-motion Estimation and Multiple Object Tracking (ICRA 2023)

 [lio_segmt_mapOptimization-4]

        直接按照官方链接编译就可以,如果你运行的时候出现[lio_segmt_mapOptimization-4]此类错误。

        我查询到有一种将gtsam安装后的一个.so文件拷贝到/usr/opt/noetic/lib文件夹中,但自己安装后根本找不到对应的.so文件,后来自己安装gtsam4.0.3,安装是make ..时指定参数可以解决这个问题。

        参考下面博客: Ubuntu20.04安装GTSAM,运行LIO-SAM_gtsam4.0.3-CSDN博客

Point cloud timestamp not available

        这个问题自己暂时没有解决,查找到一篇LIO-SAM作者的回复,这个问题貌似不影响:

KITTI Datasets not working · Issue #362 · TixiaoShan/LIO-SAM

更改opencv以及修改CMakeLists.txt中C++=14

        ubuntu20.04自带的opencv为4系版本,头文件已经修改了。

参考链接

ValueError: Unknown CUDA arch (8.9) or GPU not supported 报错处理-CSDN博客           

[解决bug]CUDA error: no kernel image is available for execution on the device-CSDN博客

小白跑deep snake(巨详细)_thcnumerics.cuh(196): error : more than one operat-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值