Visual Studio code Settings for ROS2

SSW·2022년 12월 17일
0

VScode

목록 보기
1/2

Extensions 설치

Extensions로 이동

C/C++, Python Extensions

이름코드명설명
C/C++ms-vscode.cpptoolsC/C++ IntelliSense, debugging 및 code 검색
CMaketwxs.cmakeCMake 언어 지원
CMake Toolsms-vscode.cmake-toolsCMake 언어 지원 및 다양한 tool
Pythonms-python.pythonLinting, debugging, Intellisense, code 서식 지정, Refactoring, Unit Test(단위 테스트)

ROS Extensions

이름코드명설명
ROSms-iot.vscode-rosROS 개발 지원
URDFsmilerobotics.urdfURDF/xacro 지원
Colcon Tasksdeitry.colcon-helperColcon 명령어를 위한 VSCode Task

File Format Extensions

이름코드명설명
XML Toolsdotjoshjohnson.xmlXML, XQuery, XPath 지원
YAMLredhat.vscode-yamlYAML 지원
Markdown All in Oneyzhang.markdown-all-in-oneMarkdown 지원

유용한 Extensions

이름코드명설명
Highlight Trailing White Spacesybaumes.highlight-trailing-white-spaces의미 없이 사용된 공백의 스페이스 문자 강조
EOF Markmsfukui.rof-mark[EOF] 없이 끝난 파일에 [EOF] 문자 추가
Bracket Pair Colorizercoenraads.bracket-pair-colorizer괄호 열기/닫기를 짝을 맞추어 색상화시킴
Better Commentsaaron-bond.better-commentsalert, informational, TODO 등의 comment 강화 기능

기타 유용한 Extensions

이름코드명
Dockerms-azuretools.vscode-docker
Remote-SSHms-vscode-remote.remote-ssh
Romote-SSH:Editing Configuration Filesms-vscode-remote.remote-ssh-edit
Dev Containersms-vscode-remote.remote-containers
Pylancems-python.vscode-pylance
Jupyterms-toolsai.jupyter
ESLintdbaeumer.vscode-eslint
VS Code Counteructakeoff.vscode-counter
vscode-iconsvscode-icons-team.vscode-icons

워크스페이스 설정

File -> Add Folder to Workspace

VSCode 개발환경 설정

User settings 설정

settings.json - VSCode의 사용자별 글로벌 환경설정을 지정하는 파일

$ touch ~/.config/Code/User/settings.json
$ cd ~/.config/Code/User
$ vim settings.json
# vim 대신 gedit 사용 가능

아래 코드 입력 후 저장

{
  "cmake.configureOnOpen": false,
  "editor.minimap.enabled": false,
  "editor.mouseWheelZoom": true,
  "editor.renderControlCharacters": true,
  "editor.rulers": [100],
  "editor.tabSize": 2,
  "files.associations": {
    "*.repos": "yaml",
    "*.world": "xml",
    "*.xacro": "xml"
  },
  "files.insertFinalNewline": true,
  "files.trimTrailingWhitespace": true,
  "terminal.integrated.scrollback": 1000000,
  "workbench.iconTheme": "vscode-icons",
  "workbench.editor.pinnedTabSizing": "compact",
  "ros.distro": "foxy",
  "colcon.provideTasks": true
}

C/C++ properties 설정

c_cpp_properties.json - C/C++ 관련 설정(지정한 작업공간의 운영체제 include 폴더 경로, C/C++ 컴파일 버전, 컴파일러의 경로, IntelliSense 모드)

$ mkdir ~/robot_ws/.vscode
$ touch ~/robot_ws/.vscode/c_cpp_properties.json
$ cd ~/robot_ws/.vscode
$ vim c_cpp_properties.json
# vim 대신 gedit 사용 가능

아래 코드 입력 후 저장

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

Tasks 설정

tasks.json - 외부 프로그램을 Command Line Interface(CLI)를 이용하여 VSCode와 연동하는 기능, VSCode에서 Ctrl + Shift + b로 빌드할 수 있음

Ctrl + Shift + p -> Tasks: Run Task -> 지정한 Task 선택

$ touch ~/robot_ws/.vscode/tasks.json
$ cd ~/robot_ws/.vscode
$ vim tasks.json
# vim 대신 gedit 사용 가능

아래 코드 입력 후 저장

{
  "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: test",
      "type": "shell",
      "command": "colcon test && colcon test-result"
    },
    {
      "label": "colcon: clean",
      "type": "shell",
      "command": "rm -rf build install log"
    }
  ]
}

Launch 설정

launch.json - Launch는 Ctrl + Shift + d로 "Run and Debug"를 수행할 때 사용되는 실행 명령어이고, 언어별, 디버거별로 설정 가능, 세부 옵션으로 디버깅 전에 사용할 Task 지정 및 콘솔 기능 설정 가능

$ touch ~/robot_ws/.vscode/launch.json
$ cd ~/robot_ws/.vscode
$ vim launch.json
# vim 대신 gedit 사용 가능

아래 코드 입력 후 저장

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug-rclpy(debugpy)",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal"
    },
    {
      "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",
          "test": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ],
  "inputs": [
    {
      "id": "package",
      "type": "promptString",
      "description": "package name",
      "default": "topic_service_action_rclcpp_example"
    },
    {
      "id": "node",
      "type": "promptString",
      "description": "node name",
      "default": "argument"
    }
  ]
}

Build

$ cd ~/robot_ws/src
$ git clone https://github.com/robotpilot/ros2-seminar-examples.git
Ctrl + Shift + b

만약 build가 되지 않는다면 아래 작업 수행

빌드 설정 파일(CMakeLists.txt) 수정

$ cd ~/robot_ws/src/ros2-seminar-examples/topic_service_action_rclcpp_example
$ gedit CMakeLists.txt

아래 코드로 교체

################################################################################
# Set minimum required version of cmake, project name and compile options
################################################################################
cmake_minimum_required(VERSION 3.5)
project(topic_service_action_rclcpp_example)

if(NOT CMAKE_C_STANDARD)
  set(CMAKE_C_STANDARD 99)
endif()
if(NOT CMAKE_CXX_STANDARD)
  set(CMAKE_CXX_STANDARD 14)
endif()

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

################################################################################
# Find and load build settings from external packages
################################################################################
find_package(ament_cmake REQUIRED)
find_package(msg_srv_action_interface_example REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rclcpp_action REQUIRED)

include_directories(include)

add_executable(argument src/arithmetic/argument.cpp)
ament_target_dependencies(argument
  msg_srv_action_interface_example
  rclcpp
)

add_executable(calculator src/calculator/main.cpp src/calculator/calculator.cpp)
ament_target_dependencies(calculator
  msg_srv_action_interface_example
  rclcpp
  rclcpp_action
)

add_executable(checker src/checker/main.cpp src/checker/checker.cpp)
ament_target_dependencies(checker
  msg_srv_action_interface_example
  rclcpp
  rclcpp_action
)

add_executable(operator src/arithmetic/operator.cpp)
ament_target_dependencies(operator
  msg_srv_action_interface_example
  rclcpp
)


install(TARGETS
  argument
  calculator
  checker
  operator
  DESTINATION lib/${PROJECT_NAME}
)

install(DIRECTORY launch param
  DESTINATION share/${PROJECT_NAME}
)

if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  ament_lint_auto_find_test_dependencies()

  find_package(ament_cmake_gtest REQUIRED)
  add_subdirectory(test)
endif()

################################################################################
# Find and load build settings from external packages
################################################################################
ament_package()
ModuleNotFoundError: No module named 'lark' Error
pip install lark

Debugging

Ctrl + Shift + d

C++, Python 각 언어에 맞게 debugging - 언어별로 다르므로 아래의 실행 순서 참고

rclcpp
  1. Ctrl + Shift + d (Run and Debug)
  2. argument.cpp file을 켠 후 breakpoint 찍기

  1. Debug-rclcpp(gbd) 선택

  1. F5
  2. Package name 입력 -> ex) topic_service_action_rclcpp_example
  3. node name 입력 -> ex) argument
  4. F5 (Start Debugging)

rclpy
  1. Ctrl + Shift + d (Run and Debug)
  2. argument.py file 켠 후 breakpoint 찍기

  1. Debug-rclpy(debugpy) 선택
  2. F5 (Start Debugging)
ModuleNotFoundError: No module named 'msg_srv_action_interface_example.msg_srv_action_interface_example_s__rosidl_typesupport_c' error

rosidl_generator_py.import_type_support_impl.UnsupportedTypeSupport: Could not import 'rosidl_typesupport_c' for package 'msg_srv_action_interface_example'

QtCreator

설치

$ sudo apt install qtcreator

실행

$ qtcreator

(선택) QtCreator Plug-in for ROS

ROS Qt Creator Plug-in Guide

profile
ssw

0개의 댓글