当前位置: 首页 > news >正文

ubuntu20.04(ROS noetic版)安装cartographer

前言:

        博主在做完二轮差速移动机器人的仿真后,想着可不可以把之前的slam绘图技能弄回来,于是便开始安装起了cartographer,其实之前安装的时候感觉没有这么多问题,主要还是环境问题导致的,所以写这片文章来记录一下。

        其实,要我推荐的话,我觉得这几篇文章写的安装教程是比较全面的。

思岚激光雷达+cartographer建图_思岚a1与cartographer-CSDN博客文章浏览阅读5.8k次,点赞7次,收藏99次。思岚+cartographer_思岚a1与cartographer https://blog.csdn.net/shsh0810/article/details/122360539?spm=1001.2014.3001.5506Cartographer(1)源码安装,rosdep问题解决_cartographer: [libabsl-dev] defined as "not availa-CSDN博客文章浏览阅读6.5k次,点赞28次,收藏159次。cartographer完美安装,rosdep问题解决两个思路(好用),官方demo验证,依赖问题解决……全在这里呀_cartographer: [libabsl-dev] defined as "not available" for os version [bioni https://blog.csdn.net/qq_46274948/article/details/126889695?spm=1001.2014.3001.550620.04/cartographer源码保姆级教程(全是坑已经踩完,太折磨了)_cartographer安装教程保姆级-CSDN博客文章浏览阅读4.8k次,点赞58次,收藏74次。源码安装编译cartographer_cartographer安装教程保姆级 https://blog.csdn.net/qq_53004665/article/details/142057918?spm=1001.2014.3001.5506        但是,最经典的还得是官方教程。

Compiling Cartographer ROS — Cartographer ROS documentationhttps://google-cartographer-ros.readthedocs.io/en/latest/compilation.html#building-installation

正文:

        其实前言介绍的已经很多了,跟着上面的文章也可以编译并且安装好cartographer,但是,为了记录和分享我的心路历程,我还是写一下我的安装步骤。

一、ros安装

        如果,你的系统是才新装的系统,还没有安装ros的话,那么就需要你安装下对应的ros,这个在我的博文Ubuntu下基于ROS开发QT人机交互界面和PCL点云处理软件_ros qt-CSDN博客文章浏览阅读4k次,点赞42次,收藏108次。仁兄加油吧,活到老,学到老。持续关注博主,将会更新PCL的滤波、平滑、拟合(贪婪三角化)等点云操作方法。_ros qt https://blog.csdn.net/qq_60640693/article/details/134811948?spm=1001.2014.3001.5502的第一个模块有详细介绍以及一键安装的脚本。

二、依赖安装

        按照官网的来的话,我们主要是安装以下这些依赖

sudo apt-get update
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow

        当然,我建议检查一下上面有些博主说的其他依赖有没有,没有的话最好也安装好(创建一个脚本来运行下面的代码)。这一步不做影响也不大

#!/bin/bash# 需要检查的依赖列表
dependencies=(cmakeg++gitgoogle-mocklibboost-all-devlibcairo2-devlibeigen3-devlibgflags-devlibgoogle-glog-devliblua5.2-devlibsuitesparse-devlibwebp-devninja-build
)# 存储未安装的依赖项
missing_deps=()# 检查每个依赖是否已安装
for dep in "${dependencies[@]}"; doif ! dpkg -s "$dep" &> /dev/null; thenmissing_deps+=("$dep")echo "未安装: $dep"elseecho "已安装: $dep"fi
done# 如果有未安装的依赖项则安装
if [ ${#missing_deps[@]} -gt 0 ]; thenecho -e "\n以下依赖未安装,正在安装..."sudo apt-get updatesudo apt-get install -y "${missing_deps[@]}"
elseecho -e "\n所有依赖已安装!"
fi

        但是,这里有一个坑需要注意下,ubuntu20.04安装的protobuf库默认是3.6.x版本的,但我担心大家的情况不一,所以,需要查一下自己的版本。这个重要

protoc --version 

如果是3.6.x(我这里就是libprotoc 3.6.1) 其实就没问题,因为20.04的cartographer需要3.6.x的版本的。但是,你不是这个,比如你是3.4.1,那么就需要你升级下了,这个我刚好在上片博文的 编译异常处理 下的 第2点 有说到解决办法。

ROS下gazebo仿真夹爪抖动问题_ros gazebo 夹爪仿真-CSDN博客文章浏览阅读694次,点赞12次,收藏14次。​其实,发散下思维我们可以看到,这个libroboticsgroup_upatras_gazebo_mimic_joint_plugin.so和libroboticsgroup_upatras_gazebo_disable_link_plugin.so 目前是位于 你的工作空间/devel/lib 下的 也就是说 你不在该工作空间下或者不刷新环境 肯定就使用不到他的功能了;所以,我们把它们放到ros的主环境下,那么就可以像gazebo_ros_control一样使用了。_ros gazebo 夹爪仿真 https://blog.csdn.net/qq_60640693/article/details/145774149?spm=1001.2014.3001.5502

三、创建工作空间

        接下来,就是创建工作空间,下载源码和配置了。

mkdir catkin_ws
cd catkin_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src

        源码下载完毕后,src下就有了cartographer和cartographer_ros两个包了。然后,我们就可以运行下面的命令来安装他们的依赖包了。

        这里用 1 的话大多数同学的网络环境都会报错,所以我推荐用小鱼的rosdepc命令(2),关于这个的安装,我在上面的ros安装里推荐的博文中有写。

1、

sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

2、       

sudo rosdepc init
rosdepc update
rosdepc install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

报错: 

你发现无论是1还是2都会报:

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
cartographer: [libabsl-dev] defined as "not available" for OS version [focal]

所以我们需要打开 cartographer包里面的package.xml文件将46行屏蔽掉,再运行就不会报错了。

所有依赖安装完成后会提示

#All required rosdeps installed successfully

现在,你的工作空间已经配置完成了。

四、安装abseil-cpp

        按照官网教程来就好了,不过建议你先卸载自带的abseil-cpp,避免版本冲突。

sudo apt-get remove ros-${ROS_DISTRO}-abseil-cpp

进入cartographer包下的scripts目录,执行

./install_abseil.sh

保证网络环境下,这个脚本便会下载abseil-cpp并编译到系统环境中去,如果你这个在终端一直不能git下来的话,那么你就自己去脚本中的链接下载,下载下来后改为abseil-cpp名字放到这个脚本目录下,然后把脚本的下载git clone https://github.com/abseil/abseil-cpp.git命令用#屏蔽掉再执行脚本就好了。

五、编译cartographer

        做完上述一切,就可以开始编译我们的工作空间了。回到工作空间目录下,执行:

catkin_make_isolated --install --use-ninja

        一般来说,编译后运行demo就没有什么大问题,不过博主的情况比较复杂,所以,我在这里提前说一下。 

由于,我的环境中安装了pcl1.13的库,而cartographer在ubuntu20.04上需要的是pcl1.10,我编译通过了是没有多大问题的,不过再运行时会报下面的错:        然后,我用

ldd devel_isolated/cartographer_ros/lib/cartographer_ros/* | grep pcl

看了一下,我编译的cartographer链接的pcl动态库,发现都是1.13版本的。

 解决办法,进入cartographer_ros下的cartographer_ros包,打开CMakeLists.txt可以看到45行的find_package(PCL REQUIRED COMPONENTS common),我们把他修改为

set(PCL_DIR "/usr/lib/x86_64-linux-gnu/cmake/pcl")
find_package(PCL 1.10 REQUIRED)

然后,再清除工作空间下除了src的所有内容,再执行上面的编译命令,就好了。

六、运行demo

        我们下载官方提供的demo数据集,然后再运行开始画图。

# 下载数据集
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag# 进入你的工作空间 刷新环境
source devel_isolated/setup.bash 
# 开始画图
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

        画图,得到这样的效果。

结语:

        网上教程千奇百怪,还得是官方教程最为客观。不过,这次我重装了太多次系统才发现,最干净的系统做安装测试最为合适,其实就是我的pcl版本问题,不然的话早就成功了,唉...所以说,诸位仁兄,还得学习,还得不断尝试。哈哈哈...

相关文章:

  • leetcode28. 找出字符串中第一个匹配项的下标_简单KMP
  • 基于Django的权限管理平台
  • Pgvector+R2R搭建RAG知识库
  • 问道数码兽 怀旧剧情回合手游源码搭建教程(反查重优化版)
  • 前缀和-724.寻找数组的中心下标-力扣(LeetCode)
  • OpenAI图像生成gpt-image-1登场,开启创意新可能
  • GPT-4o最新图像生成完全指南:10大应用场景与提示词模板
  • 【Vue】TypeScript与Vue3集成
  • Java学习手册:JSON 数据格式基础知识
  • 1Panel+Halo快速部署:简化服务器管理与网站搭建流程探索
  • 并发设计模式实战系列(6):读写锁
  • 立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务
  • 设计仿真 | Adams回调函数功能解析
  • 上岸率85%+,25西电先进材料与纳米科技学院(考研录取情况)
  • 通过阿里云Milvus与通义千问VL大模型,快速实现多模态搜索
  • ARINC818协议一些说明综述
  • QMT学习课程Day1
  • 针对密码学的 EM 侧信道攻击
  • OpenCV 图形API(62)特征检测-----在图像中查找最显著的角点函数goodFeaturesToTrack()
  • day36图像处理OpenCV
  • 中国与肯尼亚签署共同发展经济伙伴关系框架协定
  • 期待会师!神二十与空间站完成对接
  • 南宁市委常委、组织部部长陈川已任广西医科大学党委书记
  • 再放宽!新版市场准入负面清单发布,无人驾驶航空器、电子烟等新业态被纳入
  • 俄罗斯戏剧《大师与玛格丽特》来沪,剧长8小时一天内演完
  • 杨国荣丨《儒耶对话与中国现代思想的生成和发展》序