하루의 쉼터

[IDE] 개발 환경 서포트 By VSco 본문

프로그래밍/ROS2

[IDE] 개발 환경 서포트 By VSco

Changun An 2023. 12. 2. 15:52
반응형

저자 개발 환경

* Host OS : Ubuntu 20.04

* Ros2 Version : Foxy

* Connet OS : Windows11

* IDE Tools : VSCode 1.84.2

* 접속 방법 : SSH

  • 코드 수정 및 개발이 필요 시 상위 워크스페이스 보다는 최하위 패키지를 열어서 설정해두는 것을 권장함.
  • 해당 글에서는 rclcpp/topics/minimal_publisher 패키지 기준으로 작성되었음.
  • 해당 글은 오로카 및 공식레퍼런스를 참조하였음.
  • 본 글에 의도는 SSH 접속으로도 충분히 디버깅이 가능한 모습을 보여주며 기초 환경설정을 알려주기 위함.

1. c_cpp_properties.json

C/C++ 관련 설정으로 해당 패키지(현재 작업 공간)에게 사용할 compiler, include 경로 등을 알려주게 됨.

즉, 코드 탐색, 자동 완성 등과 연관 있음.

* Ctrl + Shift + P를 눌러 C/C++: Edit Configurations(JSON)을 통해 최초 생성하거나 해당 파일을 확인 할 수 있음.

intelliSenseMode : 코드 자동 완성을 위한 설정

name : 작업 공간의 운영 체제를 작성하면 됨 —> Host OS(Linux, Windows, Mac…)

compilerPath : 사용할 컴파일러의 경로 —> 우분투 20.04 기준 /usr/bin/g++ , 윈도우 : mingw 다운 하여 경로 설정

includePath : 사용할 include들 경로를 첨부, 다른 패키지 include, ros include등
—> ${workspaceFolder}/** 작성 시 하위 패키지 검색
—> ${workspaceFolder} 작성 시 하위 패키지는 찾지 않음.

cppStandard : IntelliSense에 사용할 C++ 언어 표준 버전

저자 예시

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/opt/ros/foxy/include/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/g++",
            "cStandard": "c17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

2. task.json

작업 환경 내에 빌드 명령을 위한 것으로 colcon 관련 된 작업을 Task로 만들어 사용

터미널(CLI) 연동 기능

  • Ctrl + Shift + P를 눌러 tasks: Configure Task - CMake: configure를 통하여 최초 작성 및 수정 가능
  • Ctrl + Shift + P - Tasks: Run Task - 만든 Task를 통하여 작업 가능
  • Ctrl + Shift + b 로 빌드 가능

{
    "version": "2.0.0",
    "tasks": [
      {
        "label": "colcon: build",
        "type": "shell",
        "command": "colcon build --cmake-args '-DCMAKE_BUILD_TYPE=Debug'",
        "problemMatcher": [],
        "group": {
          "kind": "build",
          "isDefault": true
        }
      },
      {
        "label": "colcon: install",
        "type": "shell",
        "command": "colcon build --symlink-install"
      }
    ]
  }

3. launch.json

  • launch.json은 디버깅 및 실행 파일을 위해 사용되는 task들을 모아 놓은 json파일로 launch가 실행되기 전 task지정 및 콘솔 기능을 설정할 수 있음.

  • 본 글에서는 아래와 같이 설정하였음.
    • rclcpp를 사용했기때문에 colcon build 를 수행하고 진행함.
    • 패키지 이름 및 노드 이름은 CMakeLists를 참고 하면 입력 하기 수월함.
{
    "version": "0.2.0",
    "configurations": [
      {
        "name": "Debug-rclcpp(gbd)",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/install/${input:package}/lib/${input:package}/${input:node}",
        "args": [],
        "preLaunchTask": "colcon: build",
        "stopAtEntry": true,
        "cwd": "${workspaceFolder}",
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
          {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
          }
        ]
      }
    ],
    "inputs": [
      {
        "id": "package",
        "type": "promptString",
        "description": "package name",
        "default": "minimal_subscriber"
      },
      {
        "id": "node",
        "type": "promptString",
        "description": "node name",
        "default": "minimal_subscriber"
      }
    ]
  }

vscode - ros이용 시 아래와 같이 설정 가능

{
    "version": "0.2.0",
    "configurations": [
      {
          "name": "ROS: Launch my file",
          "request": "launch",
          "target": "<full path to your launch.py or launch file>",
          "launch": ["rviz", "gz", "gzserver", "gzclient"],
          "type": "ros"
      }
    ]
}

* 완료 후 브레이크 포인트를 만들고 Ctrl + D를 통하여 Run and debug를 해준다면 아래와 같이 잘되는 것을 확인 할 수 있음.

 

Reference :

https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference

 

c_cpp_properties.json reference

Schema reference for C++ project settings in Visual Studio Code.

code.visualstudio.com

https://code.visualstudio.com/docs/cpp/config-msvc

 

Configure Visual Studio Code for Microsoft C++

Configure the C++ extension in Visual Studio Code to target Microsoft C++ on Windows.

code.visualstudio.com

https://cafe.naver.com/openrt?iframe_url_utf8=/ArticleRead.nhn%3Fclubid=25572101%26articleid=25288

 

오픈소스 소프트웨어 & 하드웨어: 로... : 네이버 카페

오픈소스 소프트웨어/하드웨어로 만드는 로봇 기술 공유 카페 (ROS,ARM,AVR,mbed,라즈베리파이,아두이노)

cafe.naver.com

https://github.com/ms-iot/vscode-ros

 

GitHub - ms-iot/vscode-ros: Visual Studio Code extension for Robot Operating System (ROS) development

Visual Studio Code extension for Robot Operating System (ROS) development - GitHub - ms-iot/vscode-ros: Visual Studio Code extension for Robot Operating System (ROS) development

github.com

https://code.visualstudio.com/docs/cpp/launch-json-reference

 

Configure launch.json for C/C++ debugging in Visual Studio Code

Configure launch.json for C/C++ debugging in Visual Studio Code

code.visualstudio.com

 

반응형
Comments