Bootstrap

【学习记录】CLINS配置与运行

今天下载了CLINS,记录下编译过程中遇到的一些问题与解决方法。

CLINS源码github:
https://github.com/APRIL-ZJU/clins

根据CLINS源码,编译CLINS需要:

  • Sophus
  • Ceres
  • yaml-cpp

1、Sophus安装

Sohpus用的是这个版本:https://github.com/NikolausDemmel/Sophus/tree/eaf1e404992675a42892fa648d69d5bd933ff219
下载后不要单独编译,只需要修改CLINS的CMakeLists.txt,include一下sophus的路径即可。

遇到问题1:static_assert failure问题。

/opt/homebrew/include/fmt/core.h:1732:3: error: static_assert failed due to requirement ‘formattable’ “Cannot format an argument. To make type T formattable provide a formatter specialization: https://fmt.dev/latest/api.html#udt” static_assert(

从github上找到了一些说法,例如:https://github.com/strasdat/Sophus/issues/366
解决办法就是,卸载当前的 fmt

sudo apt remove libfmt-dev

之后下载 8.1.1版本的fmt:https://github.com/fmtlib/fmt/releases/tag/8.1.1

遇到问题2:LZ4的冲突定义问题。

conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t

具体报错,就是/usr/include/flann/ext/lz4和pcl、ros等里面的一些头文件重复定义了这个类型。
解决方法:最简单的,就是重命名flann的文件:

sudo mv /usr/include/flann/ext/lz4.h /usr/include/flann/ext/lz4.h.bak
sudo mv /usr/include/flann/ext/lz4hc.h /usr/include/flann/ext/lz4.h.bak
sudo ln -s /usr/include/lz4.h /usr/include/flann/ext/lz4.h
sudo ln -s /usr/include/lz4hc.h /usr/include/flann/ext/lz4hc.h

2、Ceres安装

Ceres之前装过了,也没有遇到任何问题。

3、yaml-cpp安装

yaml-cpp安装时,遇到的问题:YAML::BadConversion。

error "YAML::BadConversion::BadConversion(YAML::Mark const&)

解决方法:安装yaml-cpp 0.5.1版本:

  • 首先卸载 /usr/include/yaml-cpp, /usr/local/lib 等路径下所有yaml-cpp.a, yaml-cpp.so所有文件;
  • 从yaml-cpp的repo的tag里面选择 0.5.1版本(https://github.com/jbeder/yaml-cpp/tree/release-0.5.1)
  • 编译、安装,即可。

4、其他问题

anaconda中
用vscode运行时,调用了anaconda中py37的lib中的:libstdc++.so.6,此时报错:

libstdc++.so.6: version `GLIBCXX_3.4.22’ not found

这个问题折腾了半天,比如vscode里面的一些设置等等,都不好用。
最终解决,还是到anaconda这个路径,把libstdc++.so.6改了个名字。md,能用就行。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;