• 在Linux环境下VScode中配置ROS、PCL和OpenCV开发环境记录


    一.安装必要的插件

    打开VScode,在开展中安装CMake、CMake Tools,ROS和catkin-tools插件,截图如下,安装后重新打开VScode插件生效。

     二.创建ROS工作空间

    在选择的路径下,打开终端创建工作空间,具体命令如下:

    1. mkdir -p ~/ROS_Study2/src
    2. cd ~/ROS_Study2/src
    3. catkin_init_workspace
    4. cd ~/ROS_Study2
    5. catkin_make

    三.用VScode打开工作空间,创建工作包

    用VScode打开上面创建的工作空间,文件目录展示如下:

     右键单击src,选择Create Catkin Package,Package命名为HelloROS

     下一步添加roscpp哥rospy依赖

     接下来src文件里的文件目录如下:

     在.vscode里自动生成了c_cpp_properties.jsonsettings.json

     接下来在src/helloROS/src目录下添加一个cpp文件,命令为helloros.cpp,内容如下:

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

    四..vscode里json文件的生成和配置

    1.c_cpp_properties.json:用于指定C/C++类库和包含路径,按住Fn+F1,找到C/C++:编辑配置(JSON)即可自动生成json文件(这里已经自动生成,不需要创建)

     这里自动生成的c_cpp_properties.json文件,具体的内容如下:

    1. {
    2. "configurations": [
    3. {
    4. "browse": {
    5. "databaseFilename": "${workspaceFolder}/.vscode/browse.vc.db",
    6. "limitSymbolsToIncludedHeaders": false
    7. },
    8. "includePath": [
    9. "/opt/ros/kinetic/include/**",
    10. "/usr/include/**"
    11. //这里就可以包含ROS,PCL和OpenCV相关的头文件的路径
    12. ],
    13. "name": "ROS",
    14. "intelliSenseMode": "gcc-x64",
    15. "compilerPath": "/usr/bin/gcc",
    16. "cStandard": "gnu11",
    17. "cppStandard": "c++14"
    18. }
    19. ],
    20. "version": 4
    21. }

    2.tasks.json:用于编译

    按下ctrl + shfit + p输入指令tasks: configure task,然后在下拉里选择catkin_make: build 会自动生成tasks.json文件。生成的tasks.json文件内容如下:

    1. {
    2. "version": "2.0.0",
    3. "tasks": [
    4. {
    5. "type": "catkin_make",
    6. "args": [
    7. "--directory",
    8. "/home/yang/Project/ROS_Study2",
    9. "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
    10. ],
    11. "problemMatcher": [
    12. "$catkin-gcc"
    13. ],
    14. "group": "build",
    15. "label": "catkin_make: build"
    16. }
    17. ]
    18. }

    修改src/helloROS/CMakeLists.txt文件,添加的内容如下:

    1. catkin_package(
    2. CATKIN_DEPENDS
    3. )
    4. # 头文件路径
    5. include_directories(
    6. include
    7. ${catkin_INCLUDE_DIRS}
    8. )
    9. # 生成可执行文件
    10. add_executable( helloROS src/helloros.cpp )
    11. # 链接库
    12. target_link_libraries(helloROS ${catkin_LIBRARIES})

    3. launch.json,用于调试

    快捷键ctrl+shift+d,新建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) 启动",
    9. "type": "cppdbg",
    10. "request": "launch",
    11. "program": "${workspaceFolder}/devel/lib/helloROS/helloROS",
    12. "args": [],
    13. "stopAtEntry": false,
    14. "cwd": "${fileDirname}",
    15. "environment": [],
    16. "externalConsole": false,
    17. "MIMode": "gdb",
    18. "setupCommands": [
    19. {
    20. "description": "为 gdb 启用整齐打印",
    21. "text": "-enable-pretty-printing",
    22. "ignoreFailures": true
    23. }
    24. ]
    25. },
    26. ]
    27. }

    五 运行节点

    1.运行ROS MASTER

    执行快捷键ctrl + shfit + p,

    再输入 ROS:Start

     2.运行节点

    执行快捷键ctrl + shfit + p

    输入ROS:Run a Ros executable

    依次输入创建的功能包的名称以及节点名称(即编译成功后二进制文件的名称,注意不是文件名)

     终端打印结果如下:

     至此完成ROS在VScode中的配置,PLC和OpenCV在VScode配置只需要在c_cpp_properties.json和CMakeLists.txt添加相应头文件路径和相关命令即可,可实现动补全功能。

    后记:VScode使用compile_commands.json配置includePath环境

    1.使用cmake导出compile_commands.json

    命令:cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=YES ..

    2.在ROS下使用

    命令:catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=YES

    3.在CMakeLists.txt中添加set命令

    命令:set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

    4.在VScode中的compile_commands.json中添加

    在中添加:

    "compileCommands": "${workspaceFolder}/build/compile_commands.json" //添加cmaker生成的compile_commands.json

    如图:

  • 相关阅读:
    01-06-Hbase基础定义
    LLM系列-大模型技术汇总
    网络安全(黑客)自学
    .NET C#版本和.NET版本以及VS版本的对应关系
    -树的高度-
    虹科技术 | 不用外部Redbox如何无缝合并PRP和HSR网络实现精确时间同步?
    Java基础面试题突击系列6
    Node.js躬行记(20)——KOA源码分析(下)
    [工业自动化-13]:西门子S7-15xxx编程 - 分布式从站 - 硬件配置
    Unity 中使用foreach注意
  • 原文地址:https://blog.csdn.net/qq_36812406/article/details/127696926