从零开始学习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插件
-
Chinese (Simplified) Language Pack/中文语言包
Clion汉化包,本人英文水平不好,有能力的同学建议使用英文原版 -
Indent Rainbow
彩色空格对齐的插件,辅助代码阅读 -
Rainbow Brackets Lite-Free and OpenSource
彩虹括号对齐插件,辅助代码阅读 -
Json Parser
Json数据格式化阅读插件,辅助Json数据阅读 -
Translation
翻译工具,可以在百度翻译官网上注册key后配置(原谅我英语无能) -
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里面进行单独编译一个节点,快速跳转代码位置,打断点进行调试等工作。