본문 바로가기

카테고리 없음

[2023 ROS 스터디] 홍선재 #3주차 - ROS 기본 프로그래밍

반응형

이번 3주차때도 오류에 연속이었다.

ppt를보면서 ros 메세지 통신, 토픽, 서비스, 액션, 매개변수의 노드 과정을 알면서 3주차 강의를 스타트했다.

그러다가 처음에는 오타라는 에러에 만났다. 이때는 비교적 쉽게 10분안에 오타를 발견하면서 해결했다.

publisher.cpp 부분에서 복붙 과정에서 오류가 생긴 것 같다.

 

catkin make를 했을때 성공사진

하지만 비극은 이때부터 시작이었다. cm을 했을때 갑자기 ros_tutorials_topic이 package로 인식이 안되는 불상사가 생긴 것이다. clone을 같이해서 오류가 생긴 것인지, cm을 해서 오류가 생긴 것인지, 어떠한 이유인지 몰랐지만 계속 파일들을 삭제하고 다시 깔고 해본 결과 결국 해결책은 

$ source ~/catkin_ws/devel/setup.bash
$ rospack profile
$ rospack find topic_name

이것이었다. 하지만 이것을 해도 ros_tutorials_topic의 파일 절대주소를 찾았지만 이것을 새 터미널 창마다 명령어를 입력해야한다는 것을 몇시간 뒤에 알아차렸다. 결국 이런 문제를 해결하고 service->parameter 까지 해결했다. 

 

서비스는 요청이 있을 때만 응답하는 서비스 서버 와 요청하고 응답받는 서비스 클라이언트로 나뉜다.

서비스 실습
parameter 실습은 service 실습에다가 조금의 코드만 고치면 된다.

대망의 마지막 실습 코드 roslaunch이다.

rosrun은 하나의 노드를 실행하는 명령어하는 명령어라면 roslaunch는 하나 이상의 정해진 노드를 실행시킬 수 있다.

roslaunch는 ‘*.launch’라는 파일을 사용하여 실행 노드를 설정하는데 이는 XML 기반이며, 태그별 옵션을 제공한다.

강의에서도 웬만하면 roslaunch를 권장하셨다.

ros launch 실습

roslaunch에서 네임스페이스 태그를 사용해서 두 개씩 구동하여 서로 별도의 메시지를 통신하게 하는 것을 해결했다.

(union.launch을 수정했다.)

gitclone으로하면 이상하게 오류가 생겼다. 그래서 일일이 명령어를 작성하고 코드를 작성하는 과정에서 오류가 많이 생겼지만 괜찮은 경험이었다고 생각한다.

반응형