대원의 블로그

[ROS #04] ROS 환경 구조 이해하기 본문

개발/ROS

[ROS #04] ROS 환경 구조 이해하기

NDAEWON 2024. 10. 15. 13:29

이번 글에서는 ROS의 환경구조를 이해해보고자 한다. 

참고 자료:

https://www.youtube.com/watch?v=6iQEnVgpHmo&list=PLoc4bSmQajN-y88btKBK6lvAbrTtJDrYs&index=5


ROS 워크 스페이스

저번 글에서 ROS의 워크스페이스를 만들어보았다. (practice라는 이름을 가진...)

이런 구조이다.
요런 느낌스


소스코들를 컴파일한 결과물은 어디에 있을까?

1. 결과물

워크스페이스에서 catkin_make를 통해서 빌드를 진행하면 그에 대한 결과물이 만들어지는데 이는 워크스페이스 devel 안에 존재한다. 

2. 실행파일

그렇다면 실행파일은 어디에 있을까? 실행파일은 devel/lib안에 패키지 이름안에 실행파일의 형태로 존재한다. 

basic_node가 있는것을 확인할 수 있다.

./basic_node

위와 같은 코드로 rosrun과 같은 실행이 가능하다. 


기본 패키지의 위치

turtlesim과 같은 기본 패키지는 opt/ros/noetic/lib에 위치한다.

lib에 위치한 패키지들 확인!


source devel/setup.bash는 무언인가?

우리가 만든 소스코드를 실행을 하기 위해서는 아래의 코드를 통해서 실행을 시켜줬다. 

source devel/setup.bash

하지만 turtlesim을 실행할 때는 그러한 과정이 없었다. 

그 이유는 .bashrc(터미널이 실행될 때 자동으로 실행되는게 뭔지 정하는 파일)에 미리 되어 있었기 때문이다. 

.bashrc를 확인하고 열어주기

 

밑에 보면 source /opt/ros/noetic/setup.bash를 확인할 수 있다. 

이론상 여기에 source ~/practice/devel/setup.bash를 입력하면 추가 과정없이 터미널을 열기만해도 작동이 될것이다. 

한번 해보기

터미널을 한번 닫았다가 열어주면 되는 것을 확인할 수 있다. 

잘 작동이 된다.


ROS 패키지 경로 확인하기

ROS의 패키지 경로는 어떻게 되는지 확인해보겠다.

아래의 명령어를 통해서 현재 ROS의 패키지 경로가 어떻게 되어있는지 확인할 수 있다. 

export |grep ROS

 

내 워크스페이스를 인식을 시키면 

 

다음과 같이 2개의 경로가 모두 인식이 되는 것을 확인할 수 있다. 

이렇게 되면 2개의 패키지를 모두 사용이 가능하다. 

 

이 과정은 기존 ROS 패키지 경로에 내가 만든 패키지 경로가 독립적으로 되어 있는 것이 아니다. 

기존 ROS 패키지 경로에 내가 만드는 패키지 경로가 연결되어 있는 것이다.

 

그 기준은 src 파일에 있는 CMakeList 파일이 기준이 된다. 

주의 : 빌드를 위해 수정했던 것과는 위치가 다름 그건 패키지에 있던거

여기에 위치하는 CMakeList.txt

그러면 한번 Cmake를 삭제했다가 다시 빌드를 해보겠다. 

#CMakeList.txt 다시 만들기 
catkin_init_workspace

빌드가 잘 되는 것을 확인할 수 있다. 


추가 다른 패키지 경로도 연결시켜보기

practice_1이라는 워크스페이스를 만들어서 새로 연결하는데 성공하였다. 

이런 느낌

 

2개 동작 시키는 것도 성공하였다.


여기까지 ROS의 기본 환경 구조에 대해서 알아보았다.