问题1 :
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
GMOCK_LIBRARY (ADVANCED)
linked by target "time_conversion_test" in directory /home/a/carto/src/cartographer_ros/cartographer_ros
linked by target "configuration_files_test" in directory /home/a/carto/src/cartographer_ros/cartographer_ros
linked by target "msg_conversion_test" in directory /home/a/carto/src/cartographer_ros/cartographer_ros
linked by target "metrics_test" in directory /home/a/carto/src/cartographer_ros/cartographer_ros
-- Configuring incomplete, errors occurred!
See also "/home/a/carto/build_isolated/cartographer_ros/CMakeFiles/CMakeOutput.log".
See also "/home/a/carto/build_isolated/cartographer_ros/CMakeFiles/CMakeError.log".
<== Failed to process package 'cartographer_ros':
Command '['/home/a/carto/install_isolated/env.sh', 'cmake', '/home/a/carto/src/cartographer_ros/cartographer_ros', '-DCATKIN_DEVEL_PREFIX=/home/a/carto/devel_isolated/cartographer_ros', '-DCMAKE_INSTALL_PREFIX=/home/a/carto/install_isolated', '-G', 'Ninja']' returned non-zero exit status 1.
Reproduce this error by running:
==> cd /home/a/carto/build_isolated/cartographer_ros && /home/a/carto/install_isolated/env.sh cmake /home/a/carto/src/cartographer_ros/cartographer_ros -DCATKIN_DEVEL_PREFIX=/home/a/carto/devel_isolated/cartographer_ros -DCMAKE_INSTALL_PREFIX=/home/a/carto/install_isolated -G Ninja
解决方案:
sudo apt install libgmock-dev
问题2 :
代码运行时
[FATAL] [1713248900.406892955]: F0416 14:28:20.000000 7921 lua_parameter_dictionary.cc:83] Check failed: status == 0 (2 vs. 0) [string "include "map_builder.lua"..."]:35: attempt to index field 'pure_localization_trimmer' (a nil value)
在lua中pure_localization_trimmer的设置可能找不到,需要对比一下出处是否有定义或则定义内容更改等。经对比发现TRAJECTORY_BUILDER中对该内容进行注释。所以找不到。
TRAJECTORY_BUILDER = {
trajectory_builder_2d = TRAJECTORY_BUILDER_2D,
trajectory_builder_3d = TRAJECTORY_BUILDER_3D,
-- pure_localization_trimmer = {
-- max_submaps_to_keep = 3,
-- },
collate_fixed_frame = true,
collate_landmarks = false,
}
问题3
编译过程找不到
FAILED: docs/CMakeFiles/build_doc /work/ws/carto/build_isolated/cartographer/install/docs/CMakeFiles/build_doc
cd /work/ws/carto/build_isolated/cartographer/install/docs && /usr/bin/sphinx-build -b html /work/ws/carto/src/cartographer/docs/source /work/ws/carto/build_isolated/cartographer/install/docs/html
Traceback (most recent call last):
File "/usr/bin/sphinx-build", line 11, in <module>
load_entry_point('Sphinx==1.8.5', 'console_scripts', 'sphinx-build')()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 490, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2854, in load_entry_point
return ep.load()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2445, in load
return self.resolve()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2451, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/lib/python3/dist-packages/sphinx/cmd/build.py", line 25, in <module>
from sphinx.application import Sphinx
File "/usr/lib/python3/dist-packages/sphinx/application.py", line 48, in <module>
from sphinx.util.tags import Tags
File "/usr/lib/python3/dist-packages/sphinx/util/tags.py", line 11, in <module>
from jinja2 import nodes
File "/usr/lib/python3/dist-packages/jinja2/__init__.py", line 33, in <module>
from jinja2.environment import Environment, Template
File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 15, in <module>
from jinja2 import nodes
File "/usr/lib/python3/dist-packages/jinja2/nodes.py", line 23, in <module>
from jinja2.utils import Markup
File "/usr/lib/python3/dist-packages/jinja2/utils.py", line 676, in <module>
from markupsafe import Markup, escape, soft_unicode
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/
python3.8/dist-packages/markupsafe/__init__.py)
ninja: build stopped: subcommand failed.
<== Failed to process package 'cartographer':
Command '['ninja', '-j8', '-l8']' returned non-zero exit status 1.
Reproduce this error by running:
==> cd /work/ws/carto/build_isolated/cartographer && ninja -j8 -l8
解决方案:
pip3 install markupsafe==2.0.1
问题 4
FAILED: docs/CMakeFiles/build_doc /work/ws/carto/build_isolated/cartographer/install/docs/CMakeFiles/build_doc
cd /work/ws/carto/build_isolated/cartographer/install/docs && /usr/bin/sphinx-build -b html /work/ws/carto/src/cartographer/docs/source /work/ws/carto/build_isolated/cartographer/install/docs/html
Running Sphinx v1.8.5
Extension error:
Could not import extension sphinx.builders.latex (exception: cannot import name 'contextfunction' from 'jinja2' (/usr/local/lib/python3.8/dist-packages/jinja2/__init__.py))
[50/387] Building CXX object googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
ninja: build stopped: subcommand failed.
<== Failed to process package 'cartographer':
Command '['ninja', '-j8', '-l8']' returned non-zero exit status 1.
原因:
sphinx和jinja2版本不匹配
解决方案:
重新安装sphinx
pip3 uninstall Sphinx
pip3 uninstall jinja2
pip3 install Sphinx
问题5
编译ceres报错
CMake Error at CMakeLists.txt:417 (message):
Can't find Google Log (glog). Please set either: glog_DIR (newer CMake
built versions of glog) or GLOG_INCLUDE_DIR & GLOG_LIBRARY or enable
MINIGLOG option to use minimal glog implementation.
解决方法:
# MiniGLog.
set(MINIGLOG 1)#增加该指令
if (MINIGLOG)
message("-- Compiling minimal glog substitute into Ceres.")
set(GLOG_INCLUDE_DIRS internal/ceres/miniglog)
问题6
编译出现
undefined reference to
google::protobuf::internal::OnShutdownDestroyMessage(void const*)'`
问题
解决方案:参考Ubuntu卸载protobuf并安装3.6.0版本的protobuf
1.卸载系统上自带的protocbuf
sudo apt-get remove libprotobuf-dev
which protoc
rm /usr/local/bin/protoc (上一指令输出目录)
2、源码安装protoc高阶版本 如:protobuf.3.6
# git clone -b v3.6.0 https://github.com/protocolbuffers/protobuf.git
// 上述命令表示克隆版本为3.6.0的protobuf源码
# cd protobuf
# git submodule update --init --recursive
// 该命令表示克隆protobuf的子模块,主要是gtest
3、编译
// 进入到克隆的protobuf目录
# cd protobuf
# ./autogen.sh
# ./configure
# make
// 如果没有克隆子模块,make check会失败但是可以继续make install,但是使用某些功能时可能会出错
# make check
# sudo make install
# sudo ldconfig
// 输出protobuf版本信息则表示安装成功
# protoc --version
问题7
没有定义上面出现的ceres::LocalParameterization
。
最新的ceres版本里没有local_parameterization.h
解决方案:
下载2.1.0版本
Ubuntu安装ceres与更换ceres版本
问题8
编译报错Building CXX object googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o ninja: build stopped: subcommand failed.
解决方案:
git clone https://github.com/google/googletest
cd googletest
mkdir build
cd build
cmake ..
make