본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2023 ROS 스터디] 김동훈 #3주차 - ROS 기본 프로그래밍

반응형

2주 차에 실패한 uvc camera node에 관하여 같은 에러가 발생한 분들 중에서 해결하신 분을 찾지 못하여 아직도 해결을 못한 상황에서 3주 차 강의를 보며 실습을 진행하였다.

ROS에서는 기본적으로 표준 단위인 SI 단위를 사용하고 오른손 법칙에 따른 방향성을 가지기 때문에 이러한 것들로 헷갈릴 일은 없이 프로그래밍을 할 수 있겠다는 생각을 했다. 

 

노드 빌드까지 끝낸 모습

첫 실습으로 ros_tutorial_topic 패키지를 생성하였다.

패키지를 생성한 뒤 패키지 설정 파일(package.xml)을 수정하고

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

메시지 파일을 작성하고

퍼블리셔, 서브스크라이버 노드를 작성한 후

마지막으로 노드를 빌드하면 끝이다.

퍼블리셔와 서브스크라이버를 실행시킨 후 rqt_graph를 통해 노드들의 통신 상태를 확인해 주었다.

 

이와 비슷하게 ros_tutorial_service 패키지를 생성하고 노드 빌드까지 끝마치고 서비스 클라이언트를 실행해서 매개변수 2와 3을 요청 값으로 전송하여 5를 응답값으로 받아내는 것까지 성공을 한 후 rosservice call 명령어를 사용했는데 여기서 예기치 못한 에러가 발생하였다.(이때의 에러를 캡처하지 못해 상당히 아쉽다..)

패키지를 생성하는 과정 어디선가 오류가 발생하여 에러가 발생했다고 생각하고 

$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-GIT/ros_tutorials.git
$ cd ~/catkin_ws
$ catkin_make

이러한 과정으로 ros_tutorials 파일을 클론한 후 다시 터미네이터를 실행하여 각각 다른 터미널에

$ roscore
$ cd catkin_ws
~/catkin_ws$ rosrun ros_tutorials_service service_server
$ rosservice call /ros_tutorial_srv 10 2
$ rosservice call /ros_tutorial_srv 5 15

를 입력하니

이렇게 에러가 뜨지 않고 잘 실행되는 모습을 볼 수 있었다.

ROS의 GUI 도구인 rqt를 이용한 방법 또한 잘 실행된다는 것을 확인했다.

 

$ rosservice call /ros_tutorial_srv 10 5 → 사칙연산의 변수 a, b 입력
result: 15 → 디폴트 사칙연산인 덧셈 결괏값

$ rosparam set /calculation_method 2 → 뺄셈
$ rosservice call /ros_tutorial_srv 10 5
result: 5

$ rosparam set /calculation_method 3 → 곱셈
$ rosservice call /ros_tutorial_srv 10 5
result: 50

$ rosparam set /calculation_method 4 → 나눗셈
$ rosservice call /ros_tutorial_srv 10 5
result: 2

파라미터는 이미 클론을 한 상태였기 때문에 따로 생성은 하지 않고 이렇게 사칙연산을 하는 실습만 진행하였다.

 

마지막으로 roslaunch를 사용하는 실습에서 union.launch 파일이 이미 알맞게 생성되어 있는 것을 확인하고 rqt_graph를 통해 실행된 노드들의 모습을 볼 수 있었다.

 

이번 주 차는 저번에 진행했던 실습에 비해 오류가 현저히 적고 바로바로 해결이 되어 좋았지만 우리가 배운 것들이 자율주행 자동차에 어떤 방식으로 적용이 되는 건지 아직 전혀 감이 오지 않아 좀 막연하게 공부하는 느낌이 들어 아쉽다.

내 눈으로 직접 확인하고 느끼는 시간이 빨리 왔으면 좋겠다.

반응형