搞科研中遇到的一些bug问题

1、编译问题

问题1.1

问题1.1描述:

CMake Error at CMakeLists.txt:32 (FIND_PACKAGE):
  By not providing "FindTorch.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Torch", but
  CMake did not find one.
  
	Could not find a package configuration file provided by "Torch" with any of
  the following names:
  
    TorchConfig.cmake
    torch-config.cmake
    
  Add the installation prefix of "Torch" to CMAKE_PREFIX_PATH or set
  "Torch_DIR" to a directory containing one of the above files.  If "Torch"
  provides a separate development package or SDK, be sure it has been
  installed.

问题1.1解决:
问题原因:找不到torch在哪里,需要我们自己指定。指定不难,难在有的时候找不到torch的文件夹在哪里,因为我是jetson平台,安装torch时是用的特殊版本安装的,所以我从正常的python路径中没找到torch在哪里。

#分享一个python中找文件的方法
#在终端中输入:
python
import torch
print(torch.__file__)
#如果安装了torch就会显示torch的路径,我的路径是~/.local/lib/python3.8/site-packages/torch/share/cmake/Torch
#所以接下来我在编译前指定torch的路径即可
export Torch_DIR=~/.local/lib/python3.8/site-packages/torch/share/cmake/Torch  // find your path
#然后再进行编译即可
问题1.2

问题1.2描述:
在配置Gaussian SLAM过程中,在虚拟环境中安装simple-knn时报如下错误:

OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA.

问题1.2解决:
问题原因及解决:一开始以为是CUDA环境变量未设置,检查后发现应该是pytorch装成了cpu版本。本来装的pytorch是gpu版本的,但由于在安装torchvision和torchaudio时,用的是conda install的命令,所以系统直接在虚拟环境中自动安装了pytorch,但安装的是cpu版本。所以此处将cpu版本的pytorch卸载,然后重新安装一遍gpu版本的pytorch就解决问题了。
注意点:由于用的是jetson嵌入式平台,所以可能安装pytorch之类的都是默认装cpu版本的,并且在安装torchvision和torchaudio时,如果用的是conda install的命令,会自动安装cpu版本的pytorch、torchvision和torchaudio,所以之后要注意,pytorch、torchvision和torchaudio的gpu版本不能直接用conda命令安装,其中pytorch可以参考这个博主进行安装,而torchvision和torchaudio直接用pip install安装。

问题1.3

问题1.3描述:
在编译运行orbslam2过程中遇到的编译问题:

CMake Error at CMakeLists.txt:25 (find_package):
  Found package configuration file:

    /usr/local/lib/cmake/Pangolin/PangolinConfig.cmake

  but it set Pangolin_FOUND to FALSE so package "Pangolin" is considered to
  be NOT FOUND.  Reason given by package:

  Pangolin could not be found because dependency Eigen3 could not be found.

问题1.3解决:
问题原因:eigen版本和pangolin版本不对等
解决:我的情况是把pangolin版本改低一点即可,将最新版的pangolin改成了0.6版本即解决

问题1.4

问题1.4描述:
在运行jetson AGX orin开发板anaconda设置的虚拟环境中运行MonoGS时遇到的问题,未安装PyQt5:

No module named ‘PyQt5’.
但直接在jetson AGX orin开发板的虚拟环境中安装PyQt5:pip install PyQt5又会报如下错误:
attributeerror:module sipbuild.api has no attibute prepare_metadata_for_build_wheel
即无法直接在虚拟环境中通过pip安装PyQt5

问题1.3解决:
首先直接在linux系统中安装pyqt5*以及python3-pyqt5

sudo apt install pyqt5*
sudo apt-get install python3-pyqt5

将系统中安装的PyQt5和sip链接到要用的虚拟环境中,将后面的路径替换成自己的虚拟环境路径。
ln -s /usr/lib/python3/dist-packages/PyQt5/ path_to_anaconda/anaconda/envs/your_vitual_env_name/lib/python3.x/site-packages/
ln -s /usr/lib/python3/dist-packages/sip* path_to_anaconda/anaconda/env/your_vitual_env_name/lib/python3.x/site-packages/

问题1.5

问题1.5描述:
在运行一个python代码时,遇上如下问题。因为是直接copy的get_xyz函数,所以自我感觉没什么问题,但就是报错

self.xyz_gradient_accum = torch.zeros((self.get_xyz.shape[0], 1), device="cuda")
def get_xyz(self):
        return self._xyz
# 报错信息:
# AttributeError: 'function' object has no attribute 'shape'
# 指的就是get_xyz是函数对象,没有shape的属性。

问题1.3解决:
后来再认真检查了一遍,发现在get_xyz函数定义的前面漏了@property,即修改代码如下:

self.xyz_gradient_accum = torch.zeros((self.get_xyz.shape[0], 1), device="cuda")

@property
def get_xyz(self):
        return self._xyz

查了才知道原因:在Python中,@property 装饰器用于将一个类的方法转换为属性访问器。当你在类的方法定义前加上 @property 装饰器时,这个方法就可以像访问属性一样被调用,而不是作为方法调用。所以加上了@property之后就相当于可以将get_xyz函数当作self._xyz属性的访问器,所以可以在后面直接接shape。

2、ros部分

问题2.1

问题2.1描述: RLException: [xx.launch] is neither a launch file in package [x] nor is [x] a launch file name
问题2.1解决:
可能原因1: launch拼写错误
可能原因2: 环境变量没有设置。在每个新开的终端中,要运行相应的代码都要设置一下环境变量。
指令: source ./devel/setup.bash
可能原因3:xx.launch要放到相应的launch文件夹下面!!

3、其他

问题3.1

问题3.1描述: clion运行输出界面出现乱码,例如[1;32m initializing
问题3.1解决: 参考解决方案,原博主写的是中文乱码,但我的代码中会出现一些print输出内容以外的文字,也可以通过这个链接解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值