如果您希望 conda 的基础环境在启动时不被激活,请将 auto_activate_base 参数设置为 false
,命令如下:
conda config --set auto_activate_base false
当然这一条命令执行完毕后,想要再次进入conda的base环境,只需要使用对应的conda指令即可,如下:
conda activate base
注:我最后的测试发现不删掉也可以运行。
(2)修改有错误的文件:
-
进入Dynaslam的src中
viewer.cc
中,按Ctrl+F查找imshow,我们可以看到2个imshow,而且调用之前没有判断,会在某些情况导致程序终止。我们将两句话依次对应替换即可(其实就是先if(!image.empty())判断一下)
pangolin::FinishFrame();
cv::Mat im = mpFrameDrawer->DrawFrame();
//cv::imshow("DynaSLAM: Current Frame",im); //替换为如下if语句
if(!im.empty())
cv::imshow("DynaSLAM: Current Frame",im);
cv::Mat im_dyn = mpFrameDrawer->GetDynamicFrame();
//cv::imshow("DynaSLAM: Dynamic Frame", im_dyn); //替换为如下if语句
if(!im_dyn.empty())
cv::imshow("DynaSLAM: Dynamic Frame", im_dyn);
我测试的是不修改这个会闪退
注意:
master分支``viewer.cc
是这样的
(3)报错:/usr/include/c++/9/bits/stl_map.h:122:71:
error: static assertion failed: std::map
must have the same value_type as its allocator
//打开LoopClosing.h,将
typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;
(4)报错:
In file included from /home/cgm/DynaSLAM/src/Conversion.cc:9:/home/cgm/DynaSLAN/include/
Conversion.h:17:10: fatal error: ndarrayobject.h:没有那个文件或目录
17|
#include "ndarrayobject.h"
compilation terminated .
解决办法:在
anaconda3/envs
下搜索
ndarrayobject.h
,复制其路径,添加到
ndarrayobject.h
上
//Conversion.h
#include "ndarrayobject.h"
//改为正确的python2.7下的路径
#include "/home/cgm/anaconda3/envs/MaskRCNN/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h"