ros项目调试:vscode下配置开发ROS项目的详细教程

引言

在vscode下面配置用于ROS项目开发的环境

包括头文件目录的配置,catkin_make命令的配置,GDB debug的配置,以及ROS插件。

vscode头文件目录配置安装“c/c++”插件

到vscode左边栏的EXTENSIONS中,搜索“C/C++”并安装

生成c_cpp_properties.json

vscode自身配置文件全部在./.vscode/目录下

但是,在最开始对自己新建的目录和文件进行编辑后,文件夹里面是没有.vscode目录的

同时,我们的cpp文件代码中的 #include <> 这句话是有下划线警示的,提示找不到文件

这时使用鼠标悬浮功能,点击“红色灯泡”,点击edit c_cpp_properties.json选项,vscode会自动在配置文件夹中新建.vscode/文件夹,同时在里面初始化了c_cpp_properties.json文件

输出编译命令文件

这时,可能还有一些头文件找不到,比如ros/ros.h,我们还需要配置一些东西。

用命令行编译我们写的c++代码,同时输出编译信息文件,这里以ROS为例

catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes

这个命令会输出一个compile_commands.json文件在ROS工作空间的build文件夹下面

然后在c_cpp_properties.json文件添加下面一段话

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

修改后的c_cpp_properties.json文件如下所示:

{
  "configurations": [
    {
      "name": "Linux",
      "includePath": [
        "${workspaceFolder}/**"
      ],
      "defines": [],
      "compilerPath": "/usr/bin/gcc",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "intelliSenseMode": "clang-x64",
      "compileCommands": "${workspaceFolder}/build/compile_commands.json"
    }
  ],

  "version": 4
}

这样,就基本可以找到全部头文件了,然后就可以使用代码提示来码代码了。

catkin_make设置

vscode没有内置make功能,需要借助Task功能进行配置

Ctrl+shift+P进入命令模式,键入tasks: Configure Task

此时会在.vscode文件夹下面自动生成task.json文件,如下所示:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "catkin_make", //代表提示的描述性信息
      "type": "shell", //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
      "command": "catkin_make",//这个是我们需要运行的命令
      "args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
      "group": {"kind":"build","isDefault":true},
      "presentation": {
        "reveal": "always"//可选always或者silence,代表是否输出信息
      },
      "problemMatcher": "$msCompile"
    },
  ]
}

其中,这行设置

"group": {"kind":"build","isDefault":true},

代表将我们定义的这个task添加到build组里面,这样就可以中Ctrl+Shift+B快捷键来找到编译命令,命令名称就是在label里面定义的,如果"isDefault":true那么就代表直接执行command,如果为false还需要在build下拉里面选一下,我们这里就是label名字:catkin_make

还需要提一下,我们打开vscode一定要在我们的ROS工作空间目录打开:

code .

因为这样你的vscode的Base path就是你打开vscode的位置,在我们执行catkin_make的时候,需要用的这个Base path,必须是我们的ROS工作空间来可以正常catkin_make

这样配置好了之后,我们之后再进行编译ROS工作空间的时候,就可以方便的使用快捷方式

Ctrl+Shift+B

GDB debug的配置

GDB调试器是调试C++代码的神器,ROS项目本质上也是一个ROS项目,因此也可以用GDB进行调试

在vscode里面已经继承了GDB调试器,我们需要做的就是配置launch.json文件

点击左侧工具栏”Debug“,点击”齿轮“按钮,此时.vscode文件夹下面就会自动生成launch.json文件,如下所示

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) Launch", // 配置名称,将会在调试配置下拉列表中显示
      "type": "cppdbg", // 调试器类型 该值自动生成
      "request": "launch", // 调试方式,还可以选择attach
      "program": "${workspaceRoot}/devel/lib/waypoint_follower/pure_persuit", //要调试的程序(完整路径,支持相对路径)
      "args": [], // 传递给上面程序的参数,没有参数留空即可
      "stopAtEntry": false, // 是否停在程序入口点(停在main函数开始)
      "cwd": "${workspaceRoot}", // 调试程序时的工作目录
      "environment": [], //针对调试的程序,要添加到环境中的环境变量. 例如: [ { "name": "squid", "value": "clam" } ]
      "externalConsole": false,  //如果设置为true,则为应用程序启动外部控制台。 如果为false,则不会启动控制台,并使用VS Code的内置调试控制台。
      "MIMode": "gdb", // VSCode要使用的调试工具
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

需要注意的是,这里面的“program”参数是需要自己给定的,比如我要调试一个ROS节点,那么就需要找到这个节点生成的可执行目标,就是可执行的二进制文件,然后添加到“program”参数后面,如果要调试其他节点,那么还需要手动修改这里

除此之外,因为我们不是roslaunch启动的节点,还需要一个终端运行roscore,否则会找不到ROS MASTER

"request"参数里面,gdb在vscode里面提供了launch和attach两个配置任务。两者的区别是launch实际上是启动一个node执行指定代码,同时可以在vscode里面打断点调试。 attach是执行监听的任务。

使用vscode进行调试的手段主要包括单步执行,观察跟踪变量值等等

更多的GDB调试命令可以在vscode下方的DEBUG_CONSOLE窗口直接输入GDB命令 但是要注意需要在原来的GDB命令前面家加上一个前缀“-exec”,如下所示:

-exec b main

有关于常用的GDB命令总结:GDB的使用

还需要注意的是在Watch窗口添加需要Watch的变量时候,变量名称要写全局名称,包括前面的命令空间都要写上

基于上面的描述,我们就可以开心的debug了

添加ROS插件安装

打开vscode的快捷输入窗口(Ctrl+P)

输入以下命令,即可安装ROS插件

ext install ajshort.ros

用法

可以在右键点击一个文件夹,然后选择creat catkin package,创建一个ROS package

还可以按下(Ctrl+Shift+P),输入

ros::showMasterStatus

这个命令可以显示出当前ROS通信系统的详细信息,包括当前的所有话题,已经话题的所有发布者和订阅者

基本上这个vscode的ROS插件就这两个有用

到此这篇关于ros项目调试:vscode下配置开发ROS项目的详细教程的文章就介绍到这了,更多相关vscode配置开发ROS项目内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用VScode搭建ROS开发环境的教程详解

    俗话说"工欲善其事必先利其器",之前在Ubuntu上运行的ROS项目都是用vim或者gedit编写和修改代码,然后在终端编译运行,很不方便,函数跳转查看都没办法实现.所以今天我决定找一个方便的开发工具,也就是找一个像Windows上的VS那样的集成开发工具(IDE),ROS官网上有一个不同IDE的对比文章,网址在这里 我选择使用VScode.下载安装好VScode后,在扩展栏安装C/C++,CMake,CMake Tools,Code Runner,ROS(deprecated),Chinese

  • ros项目调试:vscode下配置开发ROS项目的详细教程

    引言 在vscode下面配置用于ROS项目开发的环境 包括头文件目录的配置,catkin_make命令的配置,GDB debug的配置,以及ROS插件. vscode头文件目录配置安装"c/c++"插件 到vscode左边栏的EXTENSIONS中,搜索"C/C++"并安装 生成c_cpp_properties.json vscode自身配置文件全部在./.vscode/目录下 但是,在最开始对自己新建的目录和文件进行编辑后,文件夹里面是没有.vscode目录的 同

  • Centos7下安装和配置MySQL5.7.20的详细教程

    1.在官网下载MySQL5.7安装包:mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz. 下载地址:https://dev.mysql.com/downloads/mysql/ 2.通过SSH Secure Shell Client远程访问CentOS7 3.卸载系统自带的Mariadb数据库 4.创建mysql用户组和mysql用户 5.将MySQL安装包上传到CentOS7服务器/root目录下并解压(这里我是用filezilla去登陆远程服务然后把安装包

  • 搭建PhpStorm+PhpStudy开发环境的超详细教程

    刚开始接触PHP开发,搭建开发环境是第一步,网上下载PhpStorm和PhpStudy软件,怎样安装和激活就不详细说了,我们重点来看一看怎样搭配这两个开发环境. 前提:现在假设你已经安装完PhpStorm和PhpStudy软件. 我的PhpStorm使用的是默认安装目录,这个没什么疑问的,PhpStudy软件我选择解压的目录是G:\Program Files\ . 在PhpStudy软件的解压目录下的www文件夹就是我们的网站根目录. 现在我们使用PhpStorm新建一个新工程. 第一步:打开P

  • Spring Boot 开发环境热部署详细教程

    在实际的项目开发过中,当我们修改了某个java类文件时,需要手动重新编译.然后重新启动程序的,整个过程比较麻烦,特别是项目启动慢的时候,更是影响开发效率.其实Spring Boot的项目碰到这种情况,同样也同样需要经历重新编译.重新启动程序的过程. 只不过 Spring Boot 提供了一个spring-boot-devtools的模块,使得 Spring Boot应用支持热部署,无需手动重启Spring Boot应用,,提高开发者的开发效率.接下来,聊一聊Spring Boot 开发环境热部署

  • vs code 配置c/c++环境的详细教程(推荐)

    写在前面的一段话 我这个配置方法反正在win10上是可以用的,我自己的笔记本就是win10的系统.但是在实验室蹭的学长的主机却是win7的系统,按道理来说这个配置应该是不分系统的?但是我确实是折腾了好几天,看了很多博客的配置方法,也问过稍微会一些的人,没有一个能解决我问题的,也希望有人能评论解决我的问题,我的vscode问题是c++只能编译运行无法debug.每次按F5都是一闪而过,无法调试,再按就显示调试程序正在运行.-------2019.5.3 实验室我把系统换了,用了自己喜欢很久的ubu

  • win10下安装Go和Goland的详细教程

    go和golang之间有区别吗? go和golang之间没有区别,go就是golang,全名是golang,简称go语言. Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型.编译型语言.Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算. Go的语法接近C语言,但对于变量的声明有所不同.Go支持垃圾回收功能.Go的并行模型是以东尼·霍尔的

  • windows7配置Nginx+php+mysql的详细教程

    最近在学习php,想把自己的学习经历记录下来,并写一些经验,仅供参考交流.此文适合那些刚刚接触php,想要学习并想要自己搭建Nginx+php+mysql环境的同学. 当然,你也可以选择集成好的安装包,比如 wamp等,不过我推荐大家还是自己手动搭建一下环境比较好,这样能够更好的了解php及其运行流程.下面直接进入正题. 步骤: 1.准备安装包等 (1)nginx-1.10.1.zip,下载链接为http://nginx.org/en/download.html .我个人选择了稳定版. (2)p

  • CentOS8 配置本地yum源的详细教程

    centos8发行版通过 BaseOS 和应用流 (AppStream) 仓库发布,AppStream 是对传统 rpm 格式的全新扩展,为一个组件同时提供多个主要版本 centos8 自带封装了NGINX,这篇文章给大家介绍CentOS8 配置本地yum源,具体内容如下所示: 1.创建目录 mkdir /mnt/cdrom 2.挂载你的cdrom文件. 2.1光驱方式 采用光驱的方式,对于vmware用户来说,可以直接用镜像,如图所示 sudo mount /dev/cdrom /mnt/cd

  • MAVEN的安装配置与IDEA整合超详细教程

    去http://maven.apache.org/download.cgi下载你需要的Maven版本. 下载好以后,解压安装到一个目录,我的目录为 D:\Develop\apache-maven-3.5.2. 接着配置Maven环境:右键单击"此电脑"-属性-高级系统设置-高级-环境变量--新建- 新建系统变量MAVEN_HOME为你解压的目录 D:\Develop\apache-maven-3.5.2 ,如下图新建MAVEN_HOME变量: 找到变量名为Path的系统变量,编辑该变量

  • nginx配置https加密访问的详细教程

    环境: 1台 CentOS Linux release 7.5.1804 (Core) 关闭防火墙和selinux 开始部署: 1.安装nginx @1.1 依赖安装 yum -y install wget gcc gcc-c++ pcre-devel openssl-devel @1.2 nginx软件包下载 wget http://nginx.org/download/nginx-1.19.0.tar.gz @1.3 解压.编译.安装 [root@localhost ~]# tar xf n

随机推荐