본문 바로가기

Study_ROS

Ubuntu 20.04에서 IDE(Visual Studio Code, Qtcreator)를 통한 ROS 개발환경 구축

728x90
  • IDE(Integrated Development Tool)란? : 프로그래밍시 필요한 각종 기능들을 하나의 프로그램 안에서 처리하는 환경을 제공하는 Software

- ROS에서 사용 가능한 IDE : https://wiki.ros.org/IDEs 각종 IDE 환경 설정법

  1. Qtcreator + Qt Creator Plugin for ROS : 가장 추천하는 IDE. ROS에서는 많은 프로그램들을 qt 기반으로 짜 놓음(GUI toolbox인 rqt가 qt base로 짜여진 프로그램). 큰 프로젝트에서 보통 사용
    • Qt : GUI Program 개발에 자주 쓰이는 cross platform framework
  2. Visual Studio Code + ROS Extension : 위에 비해 가볍고 빠름. 사용시 큰 문제는 없음. ROS Extension 설치 후 사용. 작은 프로젝트에서 주로 사용
  3. Eclips : 많은 사람들이 사용하지만 무거움
  • 여기선 QtcreatorVisual Studio Code만을 다룸

 

 

 

1) Visual Studio Code

  • 간단한 text editor를 지향하므로 사용이 쉽고 속도가 빠름

 

$ sudo apt-get install curl
  • curl  설치
  • curl (Client URL)은 다양한 통신 protocol을 이용하여 command line이나 source code로 server와 통신할 수 있게 하는 기술로, 다양한 command line tool과 library를 지원한다 

 

$ sudo sh -c 'curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg'
  • 마이크로소프트 GPG 키를 다운로드하여 /etc/apt/trusted.gpg.d/ 경로에 복사
  • GPG (Gnu Privacy Guard)는 강력한 암호화 program으로써, data를 암호화 할 때 사용

 

$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
  • Visual Studio Code를 다운로드 받기 위한 저장소 추가

 

$ sudo apt update
  • 추가한 저장소로부터 패키지 목록을 가져옴

 

$ sudo apt install code
  • Visual Studio Code 설치
  • 위 명령어 입력 시, 아래와 같은 error 발생

$ sudo snap install code --classic
  • 위 명령어를 통해 해결
  • apt는 program만 설치하는 반면, snap 명령어는 program 실행에 필요한 의존성(library)들을 모두 설치함

$ code
  • Visual Studio Code 실행 

 

$ sudo apt-get install git
  • Visual Studio Vode 실행 시 git이 없다는 error 발생 시 위 명령어 입력

 

 

  • 'Ctrl' '+' ',' 세 자판을 눌러 Settings 창을 연 후 아래와 같이 ROS를 검색하여 현재 ROS에 해당하는 distro를 적음

 

$ source devel/setup.bash
  • ~/.bashrc에 setup.bash 추가

 

$ sudo apt install ros-noetic-mav*
  • mavros 관련 package들 설치
  • mavros 는 MAVLink 지원 자동조종장치, 지상국 또는 주변 장치에 대해 ROS(1)를 실행하는 컴퓨터 간에 MAVLink 확장 통신을 가능하게 하는 ROS(1) 패키지로써, ROS(1)와 MAVLink 프로토콜 간의 공식 지원 브리지
  • MAVLink (Micro Air Vehicle Link)는 소형 무인 장치들 및 자체내의 서로 다른 내부 컴포넌트과 통신하기 위한 프로토콜로 안정된 데이타 교환을 제공하는 메시징이다

 

  • Terminal 창을 열고 ros 관련 명령어들을 실행하면 정상적으로 작동함을 확인할 수 있다

 

- C++ 관련 추가 설정

  • Ctrl + Shift + P 를 눌러 보이는 입력창에 'c/c++' 입력 후 'Select a Configuration' 선택
  • Compiler path를 /usr/bin/g++로 설정 (C언어 사용시 gcc, C++ 사용시 g++)

 

  • IntelliSense mode를 linux-gcc-x64로 지정
  • IntelliSense는 코드 문법 자동완성 기능을 의미

 

  • 사용할 header file의 경로 지정 (default)

 

 

  • C++ 표준을 c++14로 지정
  • 아래에서 볼 수 있듯, Noetic에서는 c++14를 기준으로 함

 

 

 

  • Source code를 선택한 상태에서 Terminal -> Configure Default Build Task 선택
  • C++을 사용하므로 g++ 선택
  • 위 과정 수행시 오른쪽과 같이 tasks.json 파일이 생성됨

 

  • 테스트를 위한 test.cpp 파일 생성 후 debug 진행
  • 현재 global variable인 a, b는 값이 보이지 않음
  • 아래처럼 WATCH 옆의 '+'를 눌러 추가할 변수 입력 (a, b)

 

 

 

 

- 설치한 Extension들

  1. ROS
  2. XML Tools
  3. Cmake Tools
  4. Indent-raindow
  5. C/C++ Extension Pack

 

 

2) Qtcreator

  • 프로젝트를 CMakeLists.txt를 통해 바로 불러올 수 있다
  • rqt plugin 및 GUI를 개발하기 쉽다 (rqt, RViz 모두 Qt로 만들어짐)
$ sudo apt install qtcreator
$ qtcreator
  • qtcreator 설치 후 실행
  • 아래와 같은 icon을 클릭하여 실행할 수도 있지만 ~/.bashrc에 작성한 ROS관련 설정들을 Qtcreator에도 적용하려면 위처럼 terminal 창에서 실행해야 함

 

 

 

 

 

 


참고 자료 :

https://swiftcam.tistory.com/395

 

Ubuntu 20.04에서 VSCode를 이용하여 ROS 개발환경 구축하기

1. ROS 플러그인 설치하기 Ctrl+Shift + X를 눌러 ros 를 검색하여 플러그인을 설치한다. 그리고 XML툴도 함께 설치한다. vscode에서 Ctrl+,를 누르면 Setting을 할 수 있는 항목들의 검색창이 나타난다. ROS를

swiftcam.tistory.com

https://seonghyuk.tistory.com/259

 

[vscode] intellisense란?

[실행환경 : ubuntu 20.04 lts] vscode에서 c언어로 컴파일하고 빌드 하기 위해선 컴파일러를 설치해야합니다. 그래서 Microsofot의 c/c++ 이라는 익스텐션이 필요합니다 그리고 c_cpp_properties json파일로 들어

seonghyuk.tistory.com

https://webnautes.tistory.com/1158

 

Visual Studio Code에서 C/C++ 프로그래밍( Windows / Ubuntu)

Windows와 Ubuntu 환경에 설치된 Visual Studio Code에서 C/C++을 컴파일하고 실행시키는 방법에 대해 설명합니다. 테스트에 사용한 운영체제 버전은 Windows 10과 Ubuntu 20.04입니다. Visual Studio Code 버전에 따라

webnautes.tistory.com

https://answers.ros.org/question/341313/what-happens-if-i-use-c-17-features-in-my-ros-nodes/

 

What happens if I use c++ 17 features in my ros nodes? - ROS Answers: Open Source Q&A Forum

What happens if I use c++ 17 features in my ros nodes? edit In the ROS manual/wiki you can see, that ROS is only made for C++11. But what exactly does that mean? What happens if I just put add_compile_options(-std=c++17) in the CMakeLists.txt of my ROS-pac

answers.ros.org

https://www.ros.org/reps/rep-0003.html#c

 

REP 3 -- Target Platforms (ROS.org)

[REP Index] [REP Source] REP:3 Title:Target Platforms Author:Tully Foote , Ken Conley Status:Active Type:Informational Content-Type:text/x-rst Created:21-Sep-2010 Post-History:21-Sep-2010, 17-Jan-2011, 13-Jan-2015, 21-Sep-2015, 10-Jan-2017, 23-Oct-2017, 08

www.ros.org

 

 

'Study_ROS' 카테고리의 다른 글

Cartographer/Hector SLAM 사용법  (0) 2023.02.05
Ubuntu 20.04에 ROS Noetic 설치법  (0) 2023.01.21
[ROS] tf란?  (0) 2022.11.06
우분투에서 Arduino IDE를 통한 rosserial 사용법  (0) 2022.11.05
Tutorial of ROS  (0) 2022.10.29