Cartographer编译方法及编译出错(glog库链接错误)解决方法

Ceres-Solver 安装与卸载ubuntu20.04 Ceres-Solver 安装ubuntu20.04 阅读详情

最近在重新调试Carto代码,想把自己的代码加入到Carto中,原本想在IDE中调试,然而Carto编译方式比较奇葩(

catkin_make_isolated --install --use-ninja)试了Clion、VScode、Qt(ros版)编译都会出问题。

不过Clion讲道理应该是可以编译的,不过要安装插件,由于我的版本太低了,就放弃了。具体参考https://github.com/larics/cartographer_superbuild。

最后只能在命令行编译,使用glog将中间变量值保存下来用来调试,有更好的调试方法的小伙伴可以留言~

按照官网步骤按照完成好Carto,参考

https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html

编译完成并没有报错,然而在跑例程的时候节点会直接死掉

roslaunch cartographer_ros offline_backpack_2d.launch bag_filenames:=/home/le/b2-2016-04-05-14-44-52.bag 
... logging to /home/le/.ros/log/b7666ebc-0b88-11ea-a0d3-1831bf0f22e1/roslaunch-God-9181.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://localhost:41953/

SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.14
 * /use_sim_time: True

NODES
  /
    cartographer_occupancy_grid_node (cartographer_ros/cartographer_occupancy_grid_node)
    cartographer_offline_node (cartographer_ros/cartographer_offline_node)
    rviz (rviz/rviz)

ROS_MASTER_URI=http://localhost:11311

WARNING: Package name "GNSS_INS" does not follow the naming conventions. It should start with a lower case letter and only contain lower case letters, digits, underscores, and dashes.
process[rviz-1]: started with pid [9198]
process[cartographer_occupancy_grid_node-2]: started with pid [9199]
process[cartographer_offline_node-3]: started with pid [9200]
/home/le/cartographer/install_isolated/lib/cartographer_ros/cartographer_offline_node: symbol lookup error: /home/le/cartographer/install_isolated/lib/cartographer_ros/cartographer_offline_node: undefined symbol: _ZN6google7LogSink8ToStringB5cxx11EiPKciPK2tmS2_mi
[cartographer_offline_node-3] process has died [pid 9200, exit code 127, cmd /home/le/cartographer/install_isolated/lib/cartographer_ros/cartographer_offline_node -configuration_directory /home/le/cartographer/install_isolated/share/cartographer_ros/configuration_files -configuration_basenames backpack_2d.lua -urdf_filenames /home/le/cartographer/install_isolated/share/cartographer_ros/urdf/backpack_2d.urdf -bag_filenames /home/le/b2-2016-04-05-14-44-52.bag echoes:=horizontal_laser_2d __name:=cartographer_offline_node __log:=/home/le/.ros/log/b7666ebc-0b88-11ea-a0d3-1831bf0f22e1/cartographer_offline_node-3.log].
log file: /home/le/.ros/log/b7666ebc-0b88-11ea-a0d3-1831bf0f22e1/cartographer_offline_node-3*.log

其中symbol lookup error表示没有链接到指定库上,然而查看多次都可以看见已经安装了glog库

又重新将Carto编译了一遍,然后在编译过程中出现如下失败,但是编译可以通过,之前并没有发现

 Failed to find installed gflags CMake configuration, searching for gflags build directories exported with CMake.
-- Failed to find an installed/exported CMake configuration for gflags, will perform search for installed gflags components.
-- Performing Test GFLAGS_IN_GOOGLE_NAMESPACE
-- Performing Test GFLAGS_IN_GOOGLE_NAMESPACE - Success
-- Found Gflags: /usr/include  
-- Found Google Flags header in: /usr/include, in namespace: google
-- No preference for use of exported glog CMake configuration set, and no hints for include/library directories provided. Defaulting to preferring an installed/exported glog CMake configuration if available.
-- Failed to find installed glog CMake configuration, searching for glog build directories exported with CMake.
-- Failed to find an installed/exported CMake configuration for glog, will perform search for installed glog components.
-- Found Glog: /usr/local/include  
-- Found Google Log (glog). Assuming glog was built with gflags support as gflags was found. This will make gflags a public dependency of Ceres.
-- Building with OpenMP.
-- Performing Test COMPILER_HAS_CXX11_FLAG
-- Performing Test COMPILER_HAS_CXX11_FLAG - Success
-- Looking for C++ include unordered_map
-- Looking for C++ include unordered_map - not found
-- Looking for C++ include tr1/unordered_map
-- Looking for C++ include tr1/unordered_map - found
-- Found tr1/unordered_map/set in std::tr1 namespace.
-- Looking for C++ include memory
-- Looking for C++ include memory - found
-- Performing Test HAVE_SHARED_PTR_IN_STD_NAMESPACE
-- Performing Test HAVE_SHARED_PTR_IN_STD_NAMESPACE - Failed
-- Performing Test HAVE_SHARED_PTR_IN_TR1_NAMESPACE
-- Performing Test HAVE_SHARED_PTR_IN_TR1_NAMESPACE - Failed
-- Looking for C++ include tr1/memory
-- Looking for C++ include tr1/memory - found
-- Performing Test HAVE_SHARED_PTR_IN_TR1_NAMESPACE_FROM_TR1_MEMORY_HEADER
-- Performing Test HAVE_SHARED_PTR_IN_TR1_NAMESPACE_FROM_TR1_MEMORY_HEADER - Success
-- Found shared_ptr in std::tr1 namespace using <tr1/memory> header.
-- Building Ceres as a static library.

后来分析发现,比较坑爹的是 carto中的库,无论是abls还是glog都是使用它自己稍微有点改动的,并不是普通的那种,找了一下午加一晚上终于发现了问题

到~/cartographer/install_isolated/lib/cartographer_ros文件夹下,使用ldd命令查看ros节点对应的链接库

 ldd cartographer_node |grep glog

得到输出(这个是修改好的正确的,之前报错的时候,库链接到的是usr/local里面自己下载的部分)

libglog.so.0 => /usr/lib/x86_64-linux-gnu/libglog.so.0 (0x00007f38d53a2000)

 可以修改cmakelist改变库的链接 或者将原本多安装的其他版本的glog库卸载

卸载的方法可以底下的参考博客,要根据你的安装方法来卸载

1、使用sudo apt-get install libgoogle-glog-dev安装则可以直接使用sudo apt-get remove libgoogle-glog-dev来卸载,比较方便

2、如果像我一样使用的是源码安装的话,则可以先通过

locate glog

来确定安装位置,一般是在

~$ locate glog
/usr/local/include/glog
/usr/local/include/glog/config.h
/usr/local/include/glog/log_severity.h
/usr/local/include/glog/logging.h
/usr/local/include/glog/raw_logging.h
/usr/local/include/glog/stl_logging.h
/usr/local/include/glog/vlog_is_on.h
/usr/local/lib/libglog.a
/usr/local/lib/cmake/glog

接着执行

sudo rm -rf /usr/local/include/glog/
sudo rm -rf /usr/local/lib/libglog*

就成功把glog卸载了

之后再将这三个文件夹删除再重新编译一般carto即可

Caption

 

 

参考

https://answers.ros.org/question/300549/failed-to-install-google-cartographer/

https://blog.youkuaiyun.com/guangyacyb/article/details/85165231

https://blog.youkuaiyun.com/u012348774/article/details/80620685

Cartographer ROS上的编译安装和配置 Cartographer是google推出的基于激光雷达的SLAM算法。 Cartographer官方的编译安装步骤可以在https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html#上查看。但是在国内由于网络的原因,这个步骤并不适用。这里介绍它在国内网络环境下的安装和配置。 首先需要安装ROS,这里就不涉及,可以参考ROS的文档进行。ROS具体的版本没有影响,可以是Kinetic或者Melodic。 阅读详情

相关推荐

Ubuntu16.04安装ceres报错:recipe for target 'bin/system_test' failed以及undefined reference to `google::bas

额,在ubuntu16.04上安装ceres,结果出现了下面的报错,搞了好久没有搞定,非常生气! 不过总之问题最后还是解决了~ 简而言之就是这样的 出现问题的原因: gcc和g++的版本太低了()! 解决的方法: 1.把gcc和g++的版本同时设置成为5.0以上的,然后设置gcc切换的方法剧可以参考这个:gcc/g++多版本切换使用 2.再build的文件里输入make cl...

Amazingren的博客 7928

Ubuntu 中 ceres-solver 安装问题

安装 google-glog + gflags。

jiayuansun的博客 1871

ROS Cartographer手动编译安装实战指南:解决ceres版本冲突与TF建图问题

Cartographer是ROS生态中主流的开源SLAM建图框架,其核心依赖Ceres Solver的版本兼容性、Protobuf序列化机制及TF坐标系对齐原理,共同决定了建图稳定性与精度。技术价值在于通过可控的手动编译链,规避apt二进制包引发的ABI冲突、符号未定义和时间戳漂移等工程顽疾;典型应用场景覆盖TurtleBot激光建图、室内2D栅格地图生成与轨迹优化,尤其适用于高校教学实验与嵌入式资源受限环境。本方案聚焦cartographer_turtlebot落地闭环与ros与slam入门教程所需的可调

cihongmo6452的博客 533

Windows安装Ceres

综述 Ceres Solver is an open source C++ library for modeling and solving large, complicated optimization problems. It can be used to solve Non-linear Least Squares problems with bounds constraints and g...

FrankDura的博客 3591

ROS2与LOAM实战:激光雷达与IMU融合的实时定位建图指南

在机器人自主导航中,同步定位与建图(SLAM)是核心技术之一。激光雷达与惯性测量单元(IMU)的融合,能够有效弥补单一传感器的不足:激光雷达提供高精度几何观测,而IMU以高频估计短时位姿,两者结合显著提升系统在复杂环境下的鲁棒性。LOAM(Lidar Odometry and Mapping)作为经典的三维激光SLAM算法,通过特征点提取与帧间配准,在有限算力下实现实时定位与建图。基于ROS2环境的实现,不仅具备分布式通信与QoS保障,还便于工程化部署。从无人驾驶到移动机器人,该技术广泛应用于室内外定位、地

weixin_30820077的博客 347

Android Termux 安装Kali Linux 或 kali Nethunter史诗级详细教程

Termux 安装kali

风云小虾米的博客 6万+

Cartographer安装教程及若干问题解决方法

可以按照下面的步骤看看是不是符合情况。尽量连接手机热点进行下面的下载操作。,编译完成并没有报错,然而在跑例程的时候节点会直接死掉。文件中,否则每次运行demo都需要输入一遍,否则找不到。另外一种错误可能是,下载的各个安装包里面的。,如果可以挂VPN可以不改。这个东西,有些包是有版本要求的,比如。不支持C++语言来进行编译,需要在。文件中,加入下面的命令来输出默认。最好是在靠前面一点的位置添加。的位置,注意这两条语句要放在。中,加入下面的命令,强制指定。将最后一个git来源网址由。),必须用上述方式安装。

qq_33346065的博客 934

Ubuntu系统 nano 编辑器使用教程

• 原因:文件编码不兼容(如 Windows 的 CRLF 换行符)。• 若使用 SSH 工具(如 PuTTY),确保终端设置中未占用。掌握这些操作后,你可以高效使用 nano 完成大部分文本编辑任务!• 底部快捷键栏:显示常用操作的快捷键(• 如果文件已修改,会提示是否保存:按。• 顶部状态栏:显示文件名和编辑状态。表示 Ctrl + G(查看帮助)。保存时自动生成备份文件(原文件名后加。• 强制保存只读文件:用。启动 nano 时添加。启动 nano 时添加。(重做)触发自动缩进。

qq_44534541的博客 2084

cartographer_node 编译没问题,但是运行直接挂掉的bug

[cartographer_node-3] process has died [pid 20529, exit code 127, cmd /home/pp/vm_ws/carto_ws/install_isolated/lib/cartographer_ros/cartographer_node -configuration_directory /home/pp/vm_ws/carto_ws/install_isolated/share/cartographer_ros/configuration_fi.

学之知之的博客 3900

管道机器人手臂机械结构设计cad【8张】+三维图+设计说明书+绛重

履带式管道机器人适用于各种管道环境,包括直管道、弯曲管道、水平管道、垂直管道等,其灵活性和适应性使得它可以应对不同形状和尺寸的管道,完成全面的检测和维护工作。管道机器人研究具有重要的现实意义和深远的社会影响,通过提高工作效率、降低人员风险、提升服务质量、节约成本资源和促进科技创新等方面的作用,为现代工程技术领域的发展和进步做出了积极的贡献。管道机器人是一种能够在管道内部执行各种任务的智能机器人,而管道机器人的机械臂对于管道机器人在管道内执行任务的灵活性、稳定性和效率至关重要。

kejigongjiang的博客 943

别再到处找资源了!WinCC 7.5 SP2官方下载与Windows 10保姆级安装避坑指南

本文提供了WinCC 7.5 SP2在Windows 10上的官方下载与安装全流程指南,重点解决了资源获取难、系统兼容性问题及分卷压缩处理等常见痛点。通过详细的步骤和实用技巧,帮助用户顺利完成安装并优化配置,适用于工控领域的学习者和从业者。

weixin_32924297的博客 477

编译cartographer时glog链接出错

catkin_make_isolated --install --use-ninja 用这个指令编译的时候,报错 对‘google::LogMessage::LogMessage(char const*, int, int, unsigned long, void ........ 往上翻一点发现一个CMake 的Warnning: runtime library [libglog.so.0] in /usr/lib/x86_64-linux-gnu may be hidden by file in /

稚与的博客 1814

知识见闻 - Salesforce公司发展史

不过,通过将自己开发的产品与公司收购的其它云产品进行结合,Salesforce可以为用户提供更多的产品种类,Salesforce可以继续强化自己的平台和产品套件属性,这一平台和套件的发展规模已经远远超出了一个单一的CRM的规模。他们围绕一个相对简单的产品向用户兜售云的概念,然后,他们开始开发其它产品,并寻找培育一个不断增长的生态系统的方法,最理想的情况是能驱动Salesforce的营收增长。现在,Salesforce通过打造更多的用例并改进自己产品的方式来直接应对竞争对手的竞争,从而捍卫自己现在的地位。

guoqx的专栏 1451

Cartographer与TurtleBot的SLAM入门:从编译原理到ROS集成

SLAM(同步定位与地图构建)是机器人感知环境的核心技术,其中Cartographer作为Google开源的高性能激光SLAM框架,以高精度、强鲁棒性著称;而TurtleBot则是ROS生态中最经典的入门级移动机器人平台。其技术价值在于将数学优化(如Ceres Solver非线性求解)、算法内核(独立于ROS的Cartographer Core)与机器人中间件(cartographer_ros封装)分层解耦,既保障性能又兼顾可移植性。典型应用场景包括室内2D建图、服务机器人导航、教学实验平台搭建等。本文聚焦

weixin_34348174的博客 396

STM32实现等精度测频

上一章介绍了利用STM32的TIM的捕获功能实现频率测量的方法,但测量误差受被测信号频率的影响,不适合测量频率变化较大的。本章将介绍等精度测频的方法以及STM32的实现。STM3...

zhang062061的专栏 3457

使用Gitlab 搭建私有镜像仓库(外置Nginx)

为了让团队尽快使用Gitlab的CI进行工作,必须做好Gitlab的初始化工作,大家都知道拉取镜像由于某些原因,会比较慢,因此构建自己的私有镜像仓库就成为了关键的一步。当然私有镜像仓库的搭建有很多种方式,这里直接使用Gitlab提供的镜像仓库功能。一揽子解决方案比较香。gitlab真的越来越好用了,有了这个镜像仓,也没必要再使用三方的镜像仓库了。Devops 真好用!

网尘的技术专栏 1829

cartographer_ros 编译运行

坐标变换 四元数《-》绕向量旋转《-》旋转矩阵R《-》欧拉角 tf_static中transform使用向量坐标。rotate使用四元数。 帧的概念,对应于坐标系 编译cartographer总出错: 开始总是undefind reference错误,重新下载编译后解决。 注意,自己下载的ceres要命名为ceres_src然后编译。 之后还有有问题,重新安装了glog和gflag就

yanzongt的 868

RuyiDify如何创建知识库API密钥:让程序安全访问知识库

知识库 API Key 是程序访问知识库的钥匙。创建它很简单,但真正重要的是知道它能做什么、应该放在哪里、不能暴露给谁。RuyiDify 讲这一步,不是为了让大家多记一个按钮,而是为了把知识库从“人工上传资料”推进到“程序化维护资料”。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 136

FAST_LIO室内建图实战:从环境配置到地图调优全流程

激光雷达SLAM是机器人自主导航的核心技术,其中激光雷达与惯性测量单元(IMU)的紧耦合融合能显著提升复杂环境下的定位稳健性。FAST_LIO作为一种高效的激光雷达惯性里程计方案,通过将IMU预积分与点云配准置于同一优化框架,在弱特征室内场景中仍能保持建图精度。本文基于实际项目经历,系统梳理了FAST_LIO在室内轮式机器人上的部署流程,涵盖依赖环境配置、源码编译、室内数据集适配、建图运行与参数调优等关键环节,并针对时间戳同步、外参标定等常见坑点给出解决建议。对于正在入门激光雷达SLAM或需要在室内场景落地

weixin_34326429的博客 400

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Ubuntu 20.04.05安装ceres-1.14.0

Ubuntu20.04.5安装ceres

zhiTjun的博客 3377

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

安装cartographer时遇到编译问题

/usr/bin/ld: /usr/local/lib/libabsl_synchronization.a(mutex.cc.o): relocation R_X86_64_PC32 against symbol `_ZNSt11this_thread5yieldEv' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: 最后的链结失败: 错误的值 collect2: error: ld returne

weixin_59382946的博客 2953

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

CMake Error in cmake/OpenCVCompilerOptions.cmake:

Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) (Required is exact version "3.6.7") Traceback (most recent call last): File "&lt;string&gt;", line 1, in &lt;module&gt; Modu...

weixin_41674487的博客 3474

Cartographer从小白到跑通再到调试 天坑错误集(持续更新)

在研究slam算法的过程中遇到的错误集合!

weixin_64200441的博客 8715

启动cartographer_ros进行仿真错误process has died exit code -11

怀疑原因是pcl版本问题:https://ask.youkuaiyun.com/questions/3354161 先卸载原有pcl: sudo rm -r /usr/include/pcl-1.9 /usr/share/pcl-1.9 /usr/bin/pcl* /usr/lib/libpcl* 找到github 对应版本 https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.7.2 下载zip 解压缩 mkdir build c.

li4692625的博客 3353

cartographer报错解决: Failed to process package ‘cartographer‘: Command ‘[‘ninja‘, ‘-j8‘, ‘-l8‘]‘

其他教程中的解决办法是将protoc2升级,在我这不起作用,因为我的protoc版本就是3.10。,编译完成后就可以下载官方提供的rosbag进行测试。总结:推荐安装过程:小鱼的鱼香ros一键安装。可能的解决办法:将conda环境退出,之后,进入到工作空间进行编译。

qq_43738804的博客 2596

Cartographer(1)源码安装,rosdep问题解决

cartographer完美安装,rosdep问题解决两个思路(好用),官方demo验证,依赖问题解决……全在这里呀

旧势力底层学习者 7128
上一篇: 无法查找或打开 PDB 文件和VS新建工程头文件链接不上的问题解决方法
下一篇: ros多线程数据处理方法(在主函数中循环处理消息与回调函数循环冲突解决方法)
文锦渡
博客等级 码龄11年 122粉丝 28原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文锦渡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值