앞선 포스트 에서 ROS 설치와 Catkin 빌드 그리고 토픽 메세지를 송.수신하는 ROS 프로그래밍 예제까지 살펴보았다. 이번 포스팅에서는 VSCode 에서 ROS 디버깅하는 것을 알아본다.
우선 VSCode 에서 디버깅을 하기위해 VSCode 를 설치해야 한다. Ubuntu 에서 VSCode 설치 및 C++ 디버깅 하기 에서 기본적인 설치 및 C++ 개발을 위한 익스텐션 설치까지 진행해 보았다. 이제 VSCode 에서 ROS 개발을 위한 익스텐션 설치 및 빌드 설정을 진행해 보자.
아래와 같이 VSCode 를 캣킨 워크스페이스 디렉토리를 현재 디렉토리로 하고 실행시킨다. (이하 튜토리얼을 진행하기 위해서는 앞선 글 ROS 설치와 Catkin 빌드를 먼저 진행해야한다.)
VSCode 에서 이전에 작성한 ros_tutorials_topic 패키지의 topic_publisher.cpp 파일을 열어보면 아직 ROS 개발을 위한 익스텐션이 설치되지 않아 헤더파일 인클루드 부분에서 문제가 발생하는 것을 볼 수 있다.
이제 VSCode ROS 익스텐션을 설치해 보자. 좌측 바 하단의 익스텐션 탭 버튼을 누르고 ROS 를 검색하면 Microsoft 에서 제공하는 ROS 익스텐션을 설치 할 수 있다. 또한 XML Tools 익스텐션도 검색하여 설치한다.
위의 두 익스텐션을 설치하면 VS Code Explorer 탭에서 .vscode 폴더가 생성되고 c_cpp_properties.json 파일과 settings.json 파일이 생성된 것을 확인 할 수 있다.
c_cpp_properties.json 파일에는 IncludePath 정보가 들어 있어 이후 cpp 파일의 헤더 인클루드의 문제가 해결되는 것을 확인할 수 있고 인텔리센스 기능도 정상적으로 동작하는 것을 확인할 수 있다.
이제 tasks.json 파일을 생성하자. Terminal 메뉴의 Configure Default Build Task... 버튼을 클릭하면 아래와 같이 build task 를 선택할 수 있는 드롭다운 메뉴가 나타난다. ROS 익스텐션이 설치되어 있다면 아래와 같이 catkin_make: build 라는 task 를 선택할 수 있다. Tasks.json 파일에는 catkin_make 스크립트 명령에 대한 옵션이 설정되어 있다.
이제 디버깅 관련 셋팅을 하자. 아래 그림과 같이 좌측 중앙의 Run and Debug (Ctrl+Shift+D) 탭을 누르면 디버깅 탭이 나타나는데 create a launch.json file 을 클릭하면 디버깅을 위한 launch.json 파일을 생성한다.
그런데 ROS 디버깅을 위해서는 launch 파일을 먼저 만들어야 한다. ROS 의 launch 파일은 roslaunch 명령어로 실행할 수 있는 일종의 배치와 같은 역할을 하는데, ROS 워크스페이스에서 VSCode 의 Run and Debug 탭의 create a launch.json file 을 클릭 하면 launch 파일을 선택할 수 있다.
그럼 먼저 ros_tutorials_topic 패키지 내에 launch 파일을 만들어 보자. 아래 그림과 같이 topic_test.launch 파일을 만들고 launch파일에서 실행할 pkg 와 type 을 아래와 같이 작성한다. (경로는 ~/catkin_ws/src/ros_tutorials_topic/launch/topic_test.launch 이다.)
그럼 다시 Run and Debug 탭 메뉴로 들어가서 아래 그림의 순서대로 create a launch.json file 을 통해 launch.json 파일을 생성하자.
create a launch.json file 메뉴를 클릭하면 순서대로
1. Select Debugger
2. Choose a request type
3. Choose a package
4. Choose a launch file
메뉴가 나타나는데, 순서대로 아래와 같이 선택하자.
1. Select Debugger 에서 ROS 를 선택
2. Choose a request type 에서 ROS: launch 를 선택
3. Choose a package 에서 ros_tutorials_topic 을 선택
4. Choose a launch file 에서 미리 만들어 둔 topic_test.launch 파일을 선택
생성된 launch.json 파일을 보면 target 에 topic_test.launch 파일의 경로가 들어가 있다.
위에 생성된 launch.json 파일에 preLaunchTask 를 추가하고 속성으로 tasks.json 의 label 값을 입력하자. 그럼 변경된 launch.json 파일은 아래와 같다.
이렇게 하게 되면 launch.json 파일을 완성하면 Run and Debug 시 먼저 tasks 에 지정된 라벨 catkin_make: build 를 먼저 실행하고 디버그로 들어가게 된다.
이제 topic_publisher.cpp 파일에 break point 를 걸고 Run and Debug (Ctrl+Shift+D) 를 실행하여 디버그 모드로 들어가보자.
launch.json 의 preLaunchTask 에 설정된 task가 (여기서는 catkin_make: build) 먼저 수행되고 topic_publisher.cpp 의 코드내 break point 에 디버그 포인트가 걸리는 것을 확인 할 수 있다.
지금까지 ROS 설치, Catkin 빌드 그리고 VSCode 디버깅까지 순서대로 정리를 해 봤다. 이제 Ubuntu 에서 ROS 개발환경 셋팅을 마쳤으니 본격적으로 ROS 프로그래밍을 진행해보자. :-)
'IT 스터디 > ROS' 카테고리의 다른 글
URDF, xacro 그리고 Rviz (0) | 2024.02.23 |
---|---|
rosbag 을 사용하여 여러 rostopic 메세지를 하나의 bag 파일로 저장하기 (feat. Velodyne VLP-16 그리고 ZED Stereo Camera) (0) | 2023.07.24 |
velodyne pcap to bag 파일 변환 (0) | 2023.07.13 |
ROS 설치, Catkin 빌드 그리고 VSCode 디버깅 (2) (0) | 2023.06.15 |
ROS 설치, Catkin 빌드 그리고 VSCode 디버깅 (1) (0) | 2023.06.14 |