Extensions로 이동
이름 | 코드명 | 설명 |
---|---|---|
C/C++ | ms-vscode.cpptools | C/C++ IntelliSense, debugging 및 code 검색 |
CMake | twxs.cmake | CMake 언어 지원 |
CMake Tools | ms-vscode.cmake-tools | CMake 언어 지원 및 다양한 tool |
Python | ms-python.python | Linting, debugging, Intellisense, code 서식 지정, Refactoring, Unit Test(단위 테스트) |
이름 | 코드명 | 설명 |
---|---|---|
ROS | ms-iot.vscode-ros | ROS 개발 지원 |
URDF | smilerobotics.urdf | URDF/xacro 지원 |
Colcon Tasks | deitry.colcon-helper | Colcon 명령어를 위한 VSCode Task |
이름 | 코드명 | 설명 |
---|---|---|
XML Tools | dotjoshjohnson.xml | XML, XQuery, XPath 지원 |
YAML | redhat.vscode-yaml | YAML 지원 |
Markdown All in One | yzhang.markdown-all-in-one | Markdown 지원 |
이름 | 코드명 | 설명 |
---|---|---|
Highlight Trailing White Spaces | ybaumes.highlight-trailing-white-spaces | 의미 없이 사용된 공백의 스페이스 문자 강조 |
EOF Mark | msfukui.rof-mark | [EOF] 없이 끝난 파일에 [EOF] 문자 추가 |
Bracket Pair Colorizer | coenraads.bracket-pair-colorizer | 괄호 열기/닫기를 짝을 맞추어 색상화시킴 |
Better Comments | aaron-bond.better-comments | alert, informational, TODO 등의 comment 강화 기능 |
이름 | 코드명 |
---|---|
Docker | ms-azuretools.vscode-docker |
Remote-SSH | ms-vscode-remote.remote-ssh |
Romote-SSH:Editing Configuration Files | ms-vscode-remote.remote-ssh-edit |
Dev Containers | ms-vscode-remote.remote-containers |
Pylance | ms-python.vscode-pylance |
Jupyter | ms-toolsai.jupyter |
ESLint | dbaeumer.vscode-eslint |
VS Code Counter | uctakeoff.vscode-counter |
vscode-icons | vscode-icons-team.vscode-icons |
File -> Add Folder to Workspace
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_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.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.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"
}
]
}
$ cd ~/robot_ws/src
$ git clone https://github.com/robotpilot/ros2-seminar-examples.git
Ctrl + Shift + b
빌드 설정 파일(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()
pip install lark
Ctrl + Shift + d
C++, Python 각 언어에 맞게 debugging - 언어별로 다르므로 아래의 실행 순서 참고
rosidl_generator_py.import_type_support_impl.UnsupportedTypeSupport: Could not import 'rosidl_typesupport_c' for package 'msg_srv_action_interface_example'
$ sudo apt install qtcreator
$ qtcreator