从零开始学习cartographer源码 | 番外:如何在wsl内使用clion阅读cartographer源码

news2024/11/9 0:13:33

从零开始学习cartographer源码 | 番外:如何在wsl内使用clion阅读cartographer源码

  • 安装WSL2及Clion
    • 安装WSL2-Ubuntu20.04
    • 安装Clion
    • 安装ROS
  • 安装Cartographer
    • 一键安装Cartographer
  • 在Clion打开cartographer工程
    • 安装gdb
    • 手动创建CMakeLists.txt
    • 打开项目
    • 配置wsl工具链
    • 配置CMake选项
    • 处理报错
  • 完成

安装WSL2及Clion

wsl2和clion不是本文重点,csdn上有大量文章介绍如何安装相关内容我暂时略写。

安装WSL2-Ubuntu20.04

参考Windows官方文档安装wsl2,建议安装wsl2,wsl2默认支持wslg,支持ros的各种可视化工具,如rqt,Rviz等。
适用于 Linux 的 Windows 子系统文档
如果从win10升级win11启动wsl2,可能无法使用wslg启动gui应用程序,建议别折腾了,重装win11系统吧。
同样的安装步骤笔者笔记本电脑安装毫无问题,从win10升级的win11就无法使用GUI的应用程序,笔者翻遍了CSDN,GitHub都没有解决。

安装Clion

引用CLion安装、配置、使用、调试,按照对应的步骤安装即可。
推荐一下我个人使用的几个Clion插件

  1. Chinese (Simplified) Language Pack/中文语言包
    Clion汉化包,本人英文水平不好,有能力的同学建议使用英文原版

  2. Indent Rainbow
    彩色空格对齐的插件,辅助代码阅读

  3. Rainbow Brackets Lite-Free and OpenSource
    彩虹括号对齐插件,辅助代码阅读

  4. Json Parser
    Json数据格式化阅读插件,辅助Json数据阅读

  5. Translation
    翻译工具,可以在百度翻译官网上注册key后配置(原谅我英语无能)

  6. XML Layout Extractor
    XML格式高亮显示

安装ROS

安装ROS是为了要ROS的各种工具链及开发环境,非必须。建议使用鱼香ROS的一键安装超级省事,感谢小鱼大神给我们提供的便利工具地址如下
鱼香ROS主页
一键安装工具
在终端输入一键安装指令输入1回车

wget http://fishros.com/install -O fishros && . fishros

在这里插入图片描述
连续2次输入1,回车。更换系统源并清理第三方源
在这里插入图片描述
笔者选择自己比较熟悉的ROS1进行安装,ROS2在阅读cartographer源码上应该影响不大
在这里插入图片描述

安装Cartographer

一键安装Cartographer

使用一键安装安装Cartographer
在这里插入图片描述
完成安装后在终端输入命令,等待编译完成

 cd cartographer_ws/
 catkin_make_isolated

在这里插入图片描述

在Clion打开cartographer工程

安装gdb

在终端中键入以下命令安装gdb

sudo apt-get install gdb

在这里插入图片描述

手动创建CMakeLists.txt

进入cartographer_ws/src目录下,使用vim创建CMakeList.txt

 cd src
 vim CMakeList.txt

将下面内容复制粘贴进去,注意这两行对应自己的ros版本,:wq保存退出(不了解的朋友直接使用gedit也可以)
set(CMAKE_PREFIX_PATH “/opt/ros/noetic” )
set(CMAKE_MODULE_PATH “/opt/ros/noetic/share/catkin/cmake”)

cmake_minimum_required(VERSION 3.1.0)
project(cartographer_ws)
set(CMAKE_CXX_STANDARD 11)

# catkin sets this to "on" by default, which causes linking problems
set(CMAKE_PREFIX_PATH "/opt/ros/noetic" )

set(CMAKE_MODULE_PATH "/opt/ros/noetic/share/catkin/cmake")
set(BUILD_SHARED_LIBS OFF)
file(GLOB GLOG_LIBRARIES /usr/local/lib/libglog.so)
set(GLOG_INCLUDE_DIRS /usr/include)
# find GMock globally from here, or else it will complains about duplicated GTest/GMock targets
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/src/cartographer/cmake/modules/")


# use configuration files from the source location instead of the install location
set(CARTOGRAPHER_CONFIGURATION_FILES_DIRECTORY "${CMAKE_SOURCE_DIR}/src/cartographer/configuration_files"
  CACHE PATH ".lua config file directory")

# add the libcartographer directory

# point the catkin packages to the special Findcartographer.cmake module which is run when find_package(cartographer)
# is called; this module just checks if libcartographer is in the build tree at this point
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/src/cmake/modules/")

# add catkin packages
add_subdirectory(cartographer_ros/cartographer_ros_msgs)
add_subdirectory(cartographer_ros/cartographer_ros)

# The rviz plugin has to be built as a shared library
set(BUILD_SHARED_LIBS ON)
add_subdirectory(cartographer_ros/cartographer_rviz)
add_subdirectory(cartographer_ros/docs)

打开项目

打开Clion,点击打开,找到wsl目录内 home/用户名/cartographer_ws/src
作为项目打开,信任项目
在这里插入图片描述
在这里插入图片描述

配置wsl工具链

在弹出的窗口中点击管理工具链,增加wsl。系统会自动识别各种所需的路径。点击确定。
在这里插入图片描述
在这里插入图片描述

配置CMake选项

在Cmake配置页面修改构建类型CMake 选项构建目录,注意将下面的用户名替换成你自己的用户名。

  • 构建类型:Release
  • CMake 选项:-DCMAKE_INSTALL_PREFIX=/home/用户名/cartographer_ws/devel_isolated/cartographer
  • 构建目录:\wsl$\Ubuntu-20.04\home\ 用户名\cartographer_ws\build_isolated(不用自己输入,直接点击尾部的文件夹可以选)

在这里插入图片描述

处理报错

笔者在安装的时候遇到报错找不到Sphinx,查了一下是一个文档生成的工具,我安装后也无法加载到clion的环境变量内,不装它也不影响我们正常学习cartographer源码。在我们使用命令编译的时候也没有报错,那找到它的位置把它注释掉就行。
注释过后刷新Cmake即可。
在这里插入图片描述
在这里插入图片描述

完成

这样我们就完成了在clion内配置阅读cartographer源码的工作,后面我们还可以在Clion里面进行单独编译一个节点,快速跳转代码位置,打断点进行调试等工作。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1928034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一款简单的音频剪辑工具

Hello,大家好呀,我是努力搬砖的小画。 今天小画给大伙分享一款强大的音频剪辑工具--【剪画】,无需下载就能使用,支持对MP3、M4A、AAC等多种格式文件进行剪辑、分割、拼接、混音、变声、淡入淡出、音频格式转换、视频转音频、消除…

网关设备BL122实现Modbus RTU/TCP转Profinet协议

Modbus与Profinet是两种广泛应用于工业自动化领域的通信协议:Modbus因其简单性和兼容性,在许多工业设备中得到广泛应用;而Profinet提供了高速、高精度的通信能力,适合于复杂控制系统和实时应用,但两者之间的差异导致了…

安防视频监控/视频汇聚EasyCVR平台浏览器http可以播放,https不能播放,如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构,兼容性强、支持多协议接入,包括国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SD…

Pod网络、Service网络、网络插件Calico、网络插件Flannel(2024-07-12)

一、Pod网络 在K8S集群里,多个节点上的Pod相互通信,要通过网络插件来完成,比如Calico网络插件。 使用kubeadm初始化K8S集群时,有指定一个参数 --pod-networkcidr10.18.0.0/16 它用来定义Pod的网段。而我们在配置Calico的时候&…

LED显示屏中什么是光纤传输?什么是网线传输?

在科技日新月异的今天,LED显示屏已成为信息传播和视觉展示的重要工具。然而,一块亮丽的LED显示屏背后,数据传输技术发挥着至关重要的作用。今天,我们就来一起探索LED显示屏中两种常见的数据传输方式:光纤传输和网线传输…

护网--2

实验要求: 1、办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 2、分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器 3、多出口环境基于带宽比例进行选路,但是,…

力扣 二叉树 相关题目总结2

目录 一、101 对称二叉树 题目 题解 方法一:递归(推荐) 方法二:迭代 二、100 相同的树 题目 题解 方法一:递归法 方法二:深度优先搜索 三、111 二叉树的最小深度 题目 题解 方法一&#xff1…

单点触摸屏和多点触摸屏介绍以及原理简略

单点和多点触摸屏技术是现代触摸设备的基础,下述简单解释这两种技术及其差异。 单点触摸屏 单点触摸屏只能在某一时刻检测一个触摸点的位置。这种触摸屏适用于简单的触摸交互,如点击和拖动。 工作原理 单点触摸屏主要通过以下几种技术实现&#xff1…

VS编译和使用modbus库

一.libmodbus 库 免费的开源的,modbus 开发库,支持 RTU 和 TCP 官网:libmodbus.org 在线文档:https://libmodbus.org/reference/ 二.源码简介 项目说明doc 目录各 API 接口的详细说明文档src 目录源码都在这个目录下tests 目录…

【Redis从0到1进阶】Redis 持久化

笔记内容来自B站博主《遇见狂神说》:Redis视频链接 Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所有Redis 提供了持久化功能! 一、RDB&#xff…

pixelRNN与pixelCNN

目的:为了找到一个最能解释得到的生成样本的模型 PixelRNN 我们需要利用概率链式法则将图像x的生成概率转变为每个像素生成概率的乘积,也就是每个通道生成概率的乘积。 公式: 公式解释:p(x)是每个图像x的概率;右侧为…

一文快速接入银行卡识别API

银行卡识别API 能通过机器学习和图像识别技术来解析银行卡相关信息,根据用户上传卡片自动识别内容,返回该卡的卡号、所属银行及银行类型等信息。可以在用户需要输入银行卡等相关信息时使用该功能,帮助用户快速输入正确信息,简化用…

PE文件(十一)移动导出表和重定位表

移动表的原因 一个PE文件中有很多节,每个节都存储不同的数据。而PE文件中的各种表也都分散存储在这些节当中。此时各种表的信息与程序的代码和数据相互混合在一起,如果我们直接对整个程序进行加密,那系统在初始化程序时就会出问题。比如&…

2024年7月9日~2024年7月15日周报

目录 一、前言 二、完成情况 2.1 特征图保存方法 2.1.1 定义网络模型 2.1.2 定义保存特征图的钩子函数 2.1.3 为模型层注册钩子 2.1.4 运行模型并检查特征图 2.2 实验情况 三、下周计划 一、前言 本周的7月11日~7月14日参加了机器培训的学习讨论会,对很多概…

iredmail服务器安装步骤详解!如何做配置?

iredmail服务器安全性设置指南?怎么升级邮件服务器? iredmail是一个功能强大的邮件服务器解决方案,它集成了多个开源软件,使您能够快速部署和管理邮件服务。AokSend将逐步引导您完成安装过程,无需深入的编程知识即可轻…

springboot的Filter过滤器拦截资源

配置拦截器,要加上ServletComponentScan和WebFilter(urlPatterns "/*")注解一起使用

基于Java的斗地主游戏案例开发(做牌、洗牌、发牌、看牌

package Game;import java.util.ArrayList; import java.util.Collections;public class PokerGame01 {//牌盒//♥3 ♣3static ArrayList<String> list new ArrayList<>();//静态代码块//特点&#xff1a;随着类的加载而在加载的&#xff0c;而且只执行一次。stat…

如何评估代理的可靠性和安全性

使用IP代理最主要的是要看是否安全&#xff0c;代理IP是否稳定可靠&#xff0c;但是又如何评估一个代理IP的安全性与可靠性呢&#xff0c;下面具体介绍一下。 评估代理的可靠性 服务稳定性 代理服务的稳定性直接影响到业务的连续性和效率。评估代理的服务稳定性重点查看下面…

vue2学习笔记1-官网使用指南和搭建开发环境

官网使用指南 官网地址&#xff1a;介绍 — Vue.js 1、学习 1.1 教程和API 最重要的两个板块。API是VUE的字典&#xff0c;需要时来查阅。 1.2、风格指南 如何写出风格优雅的VUE代码。规则分为四类&#xff1a;必要的&#xff0c;强烈推荐、推荐、谨慎使用。 1.3、示例 …

正点原子STM32(基于HAL库)6

目录 TFTLCD&#xff08;MCU 屏&#xff09;实验TFTLCD 简介TFTLCD 简介液晶显示控制器FSMC 简介FSMC 关联寄存器简介 硬件设计程序设计FSMC 和SRAM 的HAL 库驱动程序流程图程序解析 下载验证 LTDC LCD&#xff08;RGB 屏&#xff09;实验RGBLCD<DC 简介RGBLCD 简介LTDC 简介…