0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用VScode搭建ROS開發(fā)環(huán)境

新機(jī)器視覺 ? 來源:CSDN ? 2023-04-17 10:18 ? 次閱讀

俗話說"工欲善其事必先利其器",之前在Ubuntu上運(yùn)行的ROS項(xiàng)目都是用vim或者gedit編寫和修改代碼,然后在終端編譯運(yùn)行,很不方便,函數(shù)跳轉(zhuǎn)查看都沒辦法實(shí)現(xiàn)。

所以今天我決定找一個(gè)方便的開發(fā)工具,也就是找一個(gè)像Windows上的VS那樣的集成開發(fā)工具(IDE),ROS官網(wǎng)上有一個(gè)不同IDE的對比文章,網(wǎng)址在:

http://wiki.ros.org/IDEs

我選擇使用VScode.下載安裝好VScode后,在擴(kuò)展欄安裝C/C++,CMake,CMake Tools,Code Runner,ROS,Chinese 這些插件.接下來用一個(gè)簡單的話題發(fā)布栗子來演示操作過程

創(chuàng)建ROS工作環(huán)境

首先新建一個(gè)文件夾,我命名為test_ros,在該文件夾中打開終端,執(zhí)行以下命令來創(chuàng)建ROS工作環(huán)境:

mkdir src && cd src
catkin_init_workspace
cd ../
catkin_make

然后在VScode中打開test_ros文件夾,此時(shí)的文件目錄如下

7ecca2a8-dcb1-11ed-bfe3-dac502259ad0.png

右鍵單擊src,選擇Create Catkin Package,Package命名為helloworld

7ed1b5fe-dcb1-11ed-bfe3-dac502259ad0.png

添加roscpp, rospy作為依賴項(xiàng)

7edd7074-dcb1-11ed-bfe3-dac502259ad0.png

之后src目錄下會(huì)出現(xiàn)以下文件:

7ee6f66c-dcb1-11ed-bfe3-dac502259ad0.png

繼續(xù)在src/helloworld/src目錄下添加一個(gè)cpp文件,命名為helloworld.cpp,內(nèi)容如下:

#include 
#include 
#include 
using namespace std;


#include "ros/ros.h"
#include "std_msgs/String.h"


int main(int argc, char** argv)
{
 ros::init(argc, argv, "talker");
 ros::NodeHandle n;
 ros::Publisher chatter_pub = n.advertise("chatter", 1000);
 ros::Rate loop_rate(10);
 int count = 0;
 while(ros::ok())
 {
  std_msgs::String msg;
  std::stringstream ss;
  ss << "hello world " << count;
  msg.data = ss.str();
  ROS_INFO("%s", msg.data.c_str());
  chatter_pub.publish(msg);
  ros::spinOnce();
  loop_rate.sleep();
  count++;
 }
 return 0;
}

此時(shí)會(huì)提示找不到ros/ros.h和std_msgs/String.h,我們繼續(xù)通過后面的步驟來解決。

配置.json文件

接下來配置

c_cpp_properties.json,launch.json,tasks.json分別如下:

c_cpp_properties.json,用于指定C/C++類庫和包含路徑以及配置

按住Fn+F1,找到C/C++:編輯配置(JSON)

7eee85d0-dcb1-11ed-bfe3-dac502259ad0.png

之后就會(huì)生成c_cpp_properties.json文件,修改文件內(nèi)容如下,其中"/opt/ros/melodic/include"是

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

其中/opt/ros/melodic/include為ROS相關(guān)頭文件所在的路徑,此時(shí)可能仍然找不到ros/ros.h和std_msgs/String.h,繼續(xù)運(yùn)行以下命令即可在build文件夾下生成compile_commands.json文件

catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=1

然后就可以找到ros/ros.h和std_msgs/String.h了

launch.json,用于調(diào)試

按住Fn+F5啟動(dòng)調(diào)試,就會(huì)生成launch.json,修改launch.json文件內(nèi)容如下:

{
  // 使用 IntelliSense 了解相關(guān)屬性。
  // 懸停以查看現(xiàn)有屬性的描述。
  // 欲了解更多信息,請?jiān)L問: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
      {
      "name": "(gdb) Launch",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/devel/lib/helloworld/helloworld",// 表示可執(zhí)行程序所在的路徑,其中,${workspaceRoot}表示VScode加載的文件夾的根目錄
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      //"preLaunchTask": "make build"http://最好刪了,不然會(huì)影響調(diào)試,每次調(diào)試都直接執(zhí)行make build
    }
  ]
}

tasks.json,用于編譯

按住Fn+F1,找到任務(wù):配置任務(wù),創(chuàng)建tasks.json文件,修改tasks.json文件內(nèi)容如下:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "catkin_make", //代表提示的描述性信息
      "type": "shell", //可以選擇shell或者process,如果是shell代碼是在shell里面運(yùn)行一個(gè)命令,如果是process代表作為一個(gè)進(jìn)程來運(yùn)行
      "command": "catkin_make",//這個(gè)是我們需要運(yùn)行的命令
      "args": ["-DCMAKE_EXPORT_COMPILE_COMMANDS=1"],//如果需要在命令后面加一些后綴,可以寫在這里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
      "group": {"kind":"build","isDefault":true},
      "presentation": {
        "reveal": "always"//可選always或者silence,代表是否輸出信息
      },
      "problemMatcher": "$msCompile"
    },
  ]
}

修改CMakeLists.txt

繼續(xù)修改src/helloworld/CMakeLists.txt文件,在其中添加以下程序:

catkin_package(
 CATKIN_DEPENDS
)
# 頭文件路徑
include_directories(
include
 ${catkin_INCLUDE_DIRS}
)
# 生成可執(zhí)行文件
add_executable( helloworld src/helloworld.cpp )
# 鏈接庫
target_link_libraries(helloworld ${catkin_LIBRARIES})

結(jié)果測試

按住Ctrl+Shift+B編譯該程序,就可以看到與catkin_make一樣的編譯過程

7efebf0e-dcb1-11ed-bfe3-dac502259ad0.png

最后測試生成的可執(zhí)行文件.新開一個(gè)終端,運(yùn)行ROS的master節(jié)點(diǎn),然后按住Fn+F5運(yùn)行生成的可執(zhí)行文件,結(jié)果如下;

7f11ff38-dcb1-11ed-bfe3-dac502259ad0.png

在另一個(gè)終端中輸出該程序發(fā)布的話題:

7f1f6420-dcb1-11ed-bfe3-dac502259ad0.png

這樣,VScode的ROS開發(fā)環(huán)境就搭建好了

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4235

    瀏覽量

    61965
  • ROS
    ROS
    +關(guān)注

    關(guān)注

    1

    文章

    276

    瀏覽量

    16882
  • vscode
    +關(guān)注

    關(guān)注

    1

    文章

    152

    瀏覽量

    7558

原文標(biāo)題:使用VScode搭建ROS開發(fā)環(huán)境

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    CW32 搭建VSCODE+GCC交叉編譯環(huán)境

    在win10下面創(chuàng)建vscode+gcc開發(fā)武漢芯源CW32L系列MCU的編譯環(huán)境
    的頭像 發(fā)表于 06-28 17:02 ?2.5w次閱讀
    CW32 <b class='flag-5'>搭建</b><b class='flag-5'>VSCODE</b>+GCC交叉編譯<b class='flag-5'>環(huán)境</b>

    VSCODE+STM32開發(fā)環(huán)境搭建方式

    史上最簡單的VSCODE+STM32開發(fā)環(huán)境搭建方式——基于IoT_Link寫在前邊現(xiàn)在用MDK開發(fā)STM32越來越惡心了,我天朝向來不缺乏
    發(fā)表于 08-03 08:20

    VSCode搭建STM32開發(fā)環(huán)境

    VSCode搭建STM32開發(fā)環(huán)境
    發(fā)表于 08-24 06:56

    求大佬分享基于IoT Link的VSCODE+STM32開發(fā)環(huán)境搭建方式

    求大佬分享基于IoT Link的VSCODE+STM32開發(fā)環(huán)境搭建方式
    發(fā)表于 10-11 09:18

    VSCode搭建類似Keil的開發(fā)環(huán)境

    強(qiáng)大的編輯器之后,就再也回不去了。再次面對Keil時(shí),感覺keil的代碼編輯或者閱讀代碼的功能實(shí)在是太不友好了,所以已經(jīng)習(xí)慣不了Keil了。于是,想著能不能在VSCode搭建類似Keil的開發(fā)
    發(fā)表于 11-19 07:44

    怎樣去搭建一種ROS Windows開發(fā)環(huán)境

    怎樣去搭建一種ROS Windows開發(fā)環(huán)境呢?怎樣在Windows中編譯ROS Qt功能包呢?
    發(fā)表于 11-22 06:59

    VScode + keil開發(fā)環(huán)境搭建

    GD32系列總結(jié) - VScode + keil開發(fā)環(huán)境搭建寫在前面Keil Assistant插件安裝與使用遇見的問題include波浪線警告中文備注亂碼last line of f
    發(fā)表于 11-30 07:56

    基于vscode編輯器的stm32 Arduino開發(fā)環(huán)境如何去搭建

    怎樣去下載并安裝vscode開發(fā)環(huán)境呢?基于vscode 編輯器的stm32 Arduino開發(fā)環(huán)境
    發(fā)表于 01-24 07:47

    如何搭建VSCode開發(fā)環(huán)境?

    如何搭建VSCode開發(fā)環(huán)境
    發(fā)表于 02-11 08:10

    求Windows下VSCode + kendryte插件 搭建K210開發(fā)環(huán)境指南

    手上有塊MaixDock K210,想在Windows環(huán)境下,嘗試用VSCode搭建開發(fā)環(huán)境。在VSCo
    發(fā)表于 06-04 22:22

    ubuntu18安裝vscode搭建嵌入式linux開發(fā)環(huán)境

    ubuntu18安裝vscode搭建嵌入式linux開發(fā)環(huán)境安裝vscode配置vscode(安
    發(fā)表于 11-01 16:57 ?10次下載
    ubuntu18安裝<b class='flag-5'>vscode</b><b class='flag-5'>搭建</b>嵌入式linux<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>

    VSCode搭建STM32單片機(jī)開發(fā)環(huán)境

    強(qiáng)大的編輯器之后,就再也回不去了。再次面對Keil時(shí),感覺keil的代碼編輯或者閱讀代碼的功能實(shí)在是太不友好了,所以已經(jīng)習(xí)慣不了Keil了。于是,想著能不能在VSCode搭建類似Keil的開發(fā)
    發(fā)表于 11-13 11:06 ?15次下載
    <b class='flag-5'>VSCode</b><b class='flag-5'>搭建</b>STM32單片機(jī)<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>

    GD32系列總結(jié) - VScode + keil開發(fā)環(huán)境搭建

    GD32系列總結(jié) - VScode + keil開發(fā)環(huán)境搭建寫在前面Keil Assistant插件安裝與使用遇見的問題include波浪線警告中文備注亂碼last line of f
    發(fā)表于 11-21 17:36 ?26次下載
    GD32系列總結(jié) - <b class='flag-5'>VScode</b> + keil<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>

    arduino / VScode+platformIO搭建esp32/esp8266編譯環(huán)境(一篇足矣)

    arduino/VScode+platformIO 搭建esp32/esp8266開發(fā)環(huán)境(一篇足矣)前言:入門開源硬件開發(fā),在
    發(fā)表于 12-05 14:06 ?31次下載
    arduino / <b class='flag-5'>VScode</b>+platformIO<b class='flag-5'>搭建</b>esp32/esp8266編譯<b class='flag-5'>環(huán)境</b>(一篇足矣)

    VScode+keil開發(fā)環(huán)境搭建安裝使用過程

    這篇文章主要介紹了VScode + keil開發(fā)環(huán)境搭建及安裝使用過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下。
    的頭像 發(fā)表于 10-21 09:19 ?4798次閱讀