最近迷上了vscode,发现它的功能更全,使用更加方便,于是想总结一下他的使用技巧,使得想使用它的人能够快速上手,少走弯路。如果有写的不对的地方,欢迎大家指出。

内容大纲

一、软件配置
1、软件安装
2、禁用gpu加速
二、ROS功能包编译
1、插件配置
2、创建工程
3、功能包创建
(1)终端创建
(2)使用vscode创建
4、编译配置
(1)终端输出编译命令文件
(2)直接使用编译文件
(3)自动检索编译文件
三、ROS功能包调试
1、使用gdb单节点调试
2、使用roslaunch单节点调试
参考网站:ubuntu安装vscode的两种方法
ros项目调试:vscode下配置开发ROS项目
ubuntu 下vscode 禁用gpu 加速
IDEs-ROS Wiki
VS Code创建、调试ROS项目

一、软件配置
1、软件安装
关于vscode的安装,建议不要使用ubuntu的软件中心进行一键式安装,不利于后续修改启动器,设置相关参数,推荐从官网手动下载deb包,进行手动安装。

sudo  dpkg  -i   code_1.31.1-1549938243_amd64.deb
sudo apt-get -f install # 如果安装出错

2、禁用gpu加速

使用vscode多了之后,会发现它莫名其妙就非常卡,那是因为vscode后台使用了gpu加速进行代码解析,可以直接关闭,这样使用起来更加流畅。

gedit /usr/share/applications/code.desktop

在Exec=/usr/share/code/code 后面添加 --disable-gpu即可

[Desktop Entry]
Name=Visual Studio Code
Comment=Code Editing. Redefined.
GenericName=Text Editor
Exec=/usr/share/code/code --disable-gpu -no-sandbox --unity-launch %F
Icon=/usr/share/pixmaps/com.visualstudio.code.png
Type=Application
StartupNotify=false
StartupWMClass=Code
Categories=Utility;TextEditor;Development;IDE;
MimeType=text/plain;inode/directory;
Actions=new-empty-window;
Keywords=vscode;

X-Desktop-File-Install-Version=0.24

[Desktop Action new-empty-window]
Name=New Empty Window
Exec=/usr/share/code/code  --disable-gpu --no-sandbox --new-window %F
Icon=/usr/share/pixmaps/com.visualstudio.code.png

二、ROS功能包编译

1、插件配置首先需要安装插件,相关插件如下图所示。

在这里插入图片描述在这里插入图片描述

2、创建工程
首先,需要最基本的ROS工作空间,包括build,devel,src文件,同时在src下通过“catkin_init_workplace”进行李初始化。
打开vscode,选择文件->打开文件夹,或者在“欢迎使用界面”选择启动->打开文件夹,打开刚才创建的ros工作空间即可。
注意是工作空间的顶层目录,选择确定即可!
在这里插入图片描述

3、功能包创建(1)终端创建可以在终端输入指令,手动创建一个功能包:

在这里插入图片描述

2)使用vscode创建
右键点击"src"文件夹,右键弹出选项中,点击"Create Catkin Package",输入包的名称beginner_tutorials,按Enter确认,输入包的依赖“std_msgs rospy roscpp”,空格隔开,按Enter确认。
当准备好ROS功能包之后,还需要做以下准备工作才能打开ROS工程。

4、编译配置
关于编译配置,也就是配置catkin_make编译指令,这里有几种方法,分别介绍一下。

(1)终端输出编译命令文件
首先,在用vscode编译之前,需要在终端手动catkin_make编译一下,在终端输入指令:

catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes

或者,将该指令

## 设置自动生成compile_commands.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

添加到顶层cmakelist.txt当中:

cd catkin_ws
sudo gedit src/CMakeLists.txt

直接catkin_make也行:

catkin_make

然后,在.vscode/c_cpp_properties.json中添加一句指令:

"compileCommands": "${workspaceFolder}/build/compile_commands.json"

比如,像下面这样的:

{
    "configurations": [
        {
            "browse": {
                "databaseFilename": "",
                "limitSymbolsToIncludedHeaders": true
            },
            "name": "ROS",
            "intelliSenseMode": "gcc-x64",
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "gnu11",
            "cppStandard": "gnu++14",
            "compileCommands": "${workspaceFolder}/build/compile_commands.json"
        }
    ],
    "version": 4
}

如果没有c_cpp_properties.json,则需要自己手动生成c_cpp_properties.json。如果发现cpp文件代码中的 #include <> 这句话是有下划线警示的,提示找不到文件,这时可以使用鼠标悬浮功能,点击“红色灯泡”,点击edit c_cpp_properties.json选项,vscode会自动在配置文件夹中新建.vscode/文件夹,同时在里面初始化了c_cpp_properties.json文件。

(2)直接使用编译文件
首先,在用vscode编译之前,直接在终端手动catkin_make编译即可:

catkin_make

然后,在.vscode/settings.json中添加如下指令:

 "cmake.sourceDirectory": "${workspaceFolder}/src",
  "cmake.buildDirectory": "${workspaceFolder}/build",

像这样的:

{
    "python.autoComplete.extraPaths": [
        "/home/bran/catkin_ws/devel/lib/python2.7/dist-packages",
        "/opt/ros/melodic/lib/python2.7/dist-packages"
    ],
     "cmake.sourceDirectory": "${workspaceFolder}/src",
  "cmake.buildDirectory": "${workspaceFolder}/build"
}

(3)自动检索编译文件
该方法不需要json文件,也不需要任何设置,直接让vscode寻找cmakelist.txt,然后自动配置工程参数。但是该方法设置后,只能用于ROS相关工程的开发,如果是其他工程,可能需要作其他更改。
该方法也非常简单,就是配置cmake插件的cmakelist.txt的检索目录。
打开vscode的设置->用户->插件,设置一下Cmake: Source Directory和Cmake: Build Directory的路径:
在这里插入图片描述

在这里插入图片描述

其实,很快就能发现,这一步其实和方法(2)差不多,唯一的区别就是该方法设置了整个IDE的编译环境,这样只要是开发ROS工程,就不需要重复配置了。
还需要提醒一点的就是,文件夹.vscode的配置文件叫做“工作区的配置”,会自动覆盖IDE的默认配置。

最后,通过以上任意一种方法的配置,就可以直接通过vscode进行工程编译了。选择最下栏中的“Build”齿轮,就会初始化工程编译参数:
在这里插入图片描述

然后,在最上方出现编译工具选择,鼠标选择“catkin_make”即可。

在这里插入图片描述

三、ROS功能包调试

最精彩的要属Vscode的调试功能了,
首先,在当前工程的cmakelist.txt中需要添加编译类型指令“set(CMAKE_BUILD_TYPE Debug) ”,比如这样:

cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)

set(CMAKE_BUILD_TYPE Debug)  

然后,选择断点,进行编译即可。

1、使用gdb单节点调试

再然后,点击左侧“瓢虫按钮”,点击创建launch.json文件->选择默认配置即可。

在这里插入图片描述

launch.json文件会像下面这样:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) run_talker",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/devel/lib/beginner_tutorials/talker",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

然后,再单开一个终端启动roscore,就能进行debug了。

在这里插入图片描述

2、使用roslaunch单节点调试

点击左侧“瓢虫按钮”后,左上角运行处,选择下拉菜单->添加配置:

在这里插入图片描述

然后,再选择ROS:Launch即可,填写roslaunch的绝对路径。

在这里插入图片描述

比如下面这样,

        {
            "name": "ROS: Launch_listener",
            "type": "ros",
            "request": "launch",
            "target": "/home/bran/catkin_ws/src/beginner_tutorials/launch/listener_up.launch"
        },

最后,就能通过roslaunch启动ros节点了。