一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - 使用VScode搭建ROS開發環境的教程詳解

使用VScode搭建ROS開發環境的教程詳解

2021-09-22 14:39白鳥無言 C/C++

這篇文章主要介紹了使用VScode搭建ROS開發環境,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

俗話說"工欲善其事必先利其器",之前在Ubuntu上運行的ROS項目都是用vim或者gedit編寫和修改代碼,然后在終端編譯運行,很不方便,函數跳轉查看都沒辦法實現。所以今天我決定找一個方便的開發工具,也就是找一個像Windows上的VS那樣的集成開發工具(IDE),ROS官網上有一個不同IDE的對比文章,網址在這里

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

創建ROS工作環境

首先新建一個文件夾,我命名為test_ros,在該文件夾中打開終端,執行以下命令來創建ROS工作環境:

  1. mkdir src && cd src
  2. catkin_init_workspace
  3. cd ../
  4. catkin_make

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

使用VScode搭建ROS開發環境的教程詳解

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

使用VScode搭建ROS開發環境的教程詳解

添加roscpp, rospy作為依賴項

使用VScode搭建ROS開發環境的教程詳解

之后src目錄下會出現以下文件:

使用VScode搭建ROS開發環境的教程詳解

繼續在src/helloworld/src目錄下添加一個cpp文件,命名為helloworld.cpp,內容如下:

  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. using namespace std;
  5.  
  6. #include "ros/ros.h"
  7. #include "std_msgs/String.h"
  8.  
  9. int main(int argc, char** argv)
  10. {
  11. ros::init(argc, argv, "talker");
  12. ros::NodeHandle n;
  13. ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
  14. ros::Rate loop_rate(10);
  15. int count = 0;
  16. while(ros::ok())
  17. {
  18. std_msgs::String msg;
  19. std::stringstream ss;
  20. ss << "hello world " << count;
  21. msg.data = ss.str();
  22. ROS_INFO("%s", msg.data.c_str());
  23. chatter_pub.publish(msg);
  24. ros::spinOnce();
  25. loop_rate.sleep();
  26. count++;
  27. }
  28. return 0;
  29. }

此時會提示找不到ros/ros.hstd_msgs/String.h,我們繼續通過后面的步驟來解決.

配置.json文件

接下來配置c_cpp_properties.json,launch.json,tasks.json分別如下:

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

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

使用VScode搭建ROS開發環境的教程詳解

之后就會生產c_cpp_properties.json文件,修改文件內容如下:

  1. {
  2. "configurations": [
  3. {
  4. "name": "Linux",
  5. "includePath": [
  6. "${workspaceFolder}/**",
  7. "/opt/ros/melodic/include"
  8. ],
  9. "defines": [],
  10. "compilerPath": "/usr/bin/gcc",
  11. "cStandard": "c11",
  12. "cppStandard": "c++17",
  13. "intelliSenseMode": "clang-x64",
  14. "compileCommands": "${workspaceFolder}/build/compile_commands.json"
  15. }
  16. ],
  17. "version": 4
  18. }

其中/opt/ros/melodic/include為ROS相關頭文件所在的路徑,此時可能仍然找不到ros/ros.hstd_msgs/String.h,繼續運行以下命令即可在build文件夾下生成compile_commands.json文件

  1. catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=1

然后就可以找到ros/ros.hstd_msgs/String.h

launch.json,用于調試

按住Fn+F5啟動調試,就會生成launch.json,修改launch.json文件內容如下:

  1. {
  2. // 使用 IntelliSense 了解相關屬性。
  3. // 懸停以查看現有屬性的描述。
  4. // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
  5. "version": "0.2.0",
  6. "configurations": [
  7. {
  8. "name": "(gdb) Launch",
  9. "type": "cppdbg",
  10. "request": "launch",
  11. "program": "${workspaceFolder}/build/helloworld/helloworld",// 表示可執行程序所在的路徑,其中,${workspaceRoot}表示VScode加載的文件夾的根目錄
  12. "args": [],
  13. "stopAtEntry": false,
  14. "cwd": "${workspaceFolder}",
  15. "environment": [],
  16. "externalConsole": false,
  17. "MIMode": "gdb",
  18. "setupCommands": [
  19. {
  20. "description": "Enable pretty-printing for gdb",
  21. "text": "-enable-pretty-printing",
  22. "ignoreFailures": true
  23. }
  24. ],
  25. //"preLaunchTask": "make build"//最好刪了,不然會影響調試,每次調試都直接執行make build
  26. }
  27. ]
  28. }

tasks.json,用于編譯

按住Fn+F1,找到任務:配置任務,創建tasks.json文件,修改tasks.json文件內容如下:

  1. {
  2. "version": "2.0.0",
  3. "tasks": [
  4. {
  5. "label": "catkin_make", //代表提示的描述性信息
  6. "type": "shell", //可以選擇shell或者process,如果是shell代碼是在shell里面運行一個命令,如果是process代表作為一個進程來運行
  7. "command": "catkin_make",//這個是我們需要運行的命令
  8. "args": [],//如果需要在命令后面加一些后綴,可以寫在這里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
  9. "group": {"kind":"build","isDefault":true},
  10. "presentation": {
  11. "reveal": "always"//可選always或者silence,代表是否輸出信息
  12. },
  13. "problemMatcher": "$msCompile"
  14. },
  15. ]
  16. }

修改CMakeLists.txt

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

  1. # 頭文件路徑
  2. include_directories(
  3. include
  4. ${catkin_INCLUDE_DIRS}
  5. )
  6. # 生成可執行文件
  7. add_executable( helloworld src/helloworld.cpp )
  8. # 鏈接庫
  9. target_link_libraries(helloworld ${catkin_LIBRARIES})

結果測試

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

使用VScode搭建ROS開發環境的教程詳解

最后測試生成的可執行文件.新開一個終端,運行ROS的master節點,然后按住Fn+F5運行生成的可執行文件,結果如下;

使用VScode搭建ROS開發環境的教程詳解

在另一個終端中輸出該程序發布的話題:

使用VScode搭建ROS開發環境的教程詳解

這樣,VScode的ROS開發環境就搭建好了

參考

ros項目調試:vscode下配置開發ROS項目

到此這篇關于使用VScode搭建ROS開發環境的教程詳解的文章就介紹到這了,更多相關VScode搭建ROS開發環境內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qq_42688495/article/details/107750466

延伸 · 閱讀

精彩推薦
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
主站蜘蛛池模板: 无码11久岁箩筣 | 91传媒制片厂果冻有限公司 | 久久中文电影 | 手机av| 第一次做m被调教经历 | 全黄毛片| 色老板成人永久免费视频 | 调教女秘书 | 国产精品亚洲片在线不卡 | 日本视频中文字幕 | 日本理论片中文在线观看2828 | 美女任你模 | 青青热久麻豆精品视频在线观看 | 成年人在线视频免费观看 | 蜜桃影像传媒推广 | 欧美精品成人a多人在线观看 | 91传媒在线观看 | 91理论片午午伦夜理片久久 | 太深了 太粗h1v1| 毛片免费全部免费观看 | 91久久国产成人免费观看资源 | 日本高清无吗 | 美女靠逼免费网站 | 99精品国产自产在线观看 | 青草香蕉精品视频在线观看 | 亚洲欧美日韩国产精品一区 | 人成网站在线观看 | www.福利| 高h折磨调教古代 | 亚洲欧美日韩在线观看看另类 | 催眠 迷j系列小说 | 波多野结衣 在线播放 | 波多野结衣xxxx性精品 | 丁香网五月天 | 精品AV亚洲乱码一区二区 | 91麻豆国产福利在线观看 | 美国xaxwaswaskino| 女暴露狂校园裸露小说 | 精品国产成人a区在线观看 精品高潮呻吟99AV无码视频 | 母乳在线 | 亚洲第一网色综合久久 |