[Navigation] 1. workspace 생성

bbolddagu·2023년 5월 10일
0

IoT

목록 보기
3/7

workspace 만들기 링크

작업 공간(Workspace)은 ROS 2 패키지가 포함된 디렉토리입니다. ROS 2를 사용하기 전에 작업할 터미널에서 ROS 2 설치된 작업 공간을 소스화해야 합니다. 이를 통해 ROS 2의 패키지를 해당 터미널에서 사용할 수 있게 됩니다.
또한 "오버레이"(overlay)라고 하는 것을 소스화하는 옵션도 있습니다. 오버레이는 기존의 ROS 2 작업 공간인 언더레이(underlay)와는 별개로 새로운 패키지를 추가할 수 있는 보조 작업 공간입니다. 언더레이에는 오버레이의 모든 패키지의 종속성이 포함되어야 합니다. 오버레이의 패키지는 언더레이의 패키지를 덮어쓸 수 있습니다. 언더레이와 오버레이의 여러 레이어를 가질 수도 있으며, 각각의 연속적인 오버레이는 그 상위 언더레이의 패키지를 사용할 수 있습니다.

  • 개발환경
    : Linux, Turtlebot3, foxy, Ros2

# Linux

# ROS 2의 설치된 환경을 현재 터미널 세션에 적용하기 위한 명령어 (ROS 2의 환경 변수를 설정하고, ROS 2 패키지와 도구에 대한 경로를 추가하여 사용자가 ROS 2를 정상적으로 사용할 수 있도록 합니다.)
source /opt/ros/foxy/setup.bash

# 새 디렉토리 만들기
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src


📚 package 빌드

colcon build

📌 colcon build에 유용한 arguments
--packages-up-to: 원하는 패키지와 해당 패키지의 의존성을 빌드하지만 전체 워크스페이스를 빌드하지 않습니다. (시간을 절약할 수 있음)
--symlink-install: Python 스크립트를 수정할 때마다 다시 빌드하지 않아도 되도록 도와줍니다.
--event-handlers console_direct+: 빌드 중에 콘솔 출력을 보여줍니다. (그렇지 않으면 로그 디렉토리에서 찾을 수 있음)

➡ 빌드가 완료되면 워크스페이스 루트 (~/ros2_ws)에서 ls를 입력하면 colcon이 새로운 디렉토리를 생성한 것을 확인할 수 있습니다.

build install log src
  • install 디렉토리는 워크스페이스의 설정 파일이 위치하는 곳으로, 이를 사용하여 오버레이를 소스화할 수 있습니다.



📚 Source the overlay

오버레이를 소스화하기 전에, 빌드한 워크스페이스와 별개인 새로운 터미널을 열어야 합니다. 빌드한 워크스페이스와 같은 터미널에서 오버레이를 소스화하거나, 오버레이를 소스화한 상태에서 빌드하는 경우에는 복잡한 문제가 발생할 수 있습니다.

새로운 터미널에서 주요 ROS 2 환경을 "언더레이"로 소스화하고, 오버레이를 이에 "위에" 빌드할 수 있도록 합니다.

📌 오버레이 (overlay)
오버레이(overlay)는 기존의 ROS 2 환경에 추가적인 패키지나 설정을 적용하는 개념입니다. 기본적으로 ROS 2는 설치된 패키지와 설정으로 구성된 "언더레이(underlay)"를 가지고 있습니다. 이 언더레이 위에 새로운 패키지나 설정을 추가하여 오버레이를 형성할 수 있습니다. 오버레이는 기존의 ROS 2 환경을 확장하거나 사용자 정의 설정을 적용하는 데 사용됩니다. 오버레이는 언더레이의 패키지와 설정을 상속하면서 추가적인 패키지와 설정을 제공합니다.

# Linux
source /opt/ros/foxy/setup.bash

# root of workspace
cd ~/ros2_ws

source install/local_setup.bash
  • 오버레이의 local_setup을 소스화하면 해당 오버레이에 있는 패키지만 환경에 추가됩니다. 즉, 오버레이의 local_setup을 소스화하면 해당 오버레이에 있는 패키지만 사용할 수 있게 됩니다. 하지만 setup을 소스화하면 오버레이뿐만 아니라 해당 오버레이가 생성된 언더레이의 환경도 함께 추가됩니다. 따라서, ⭐ROS 2 설치의 setup을 소스화한 후에 오버레이의 local_setup을 소스화하면 오버레이에 있는 패키지뿐만 아니라 언더레이의 환경도 함께 사용할 수 있습니다.
  • 즉, 방금 수행한 작업은 ROS 2 설치의 setup을 소스화한 후에 ros2_ws 오버레이의 local_setup을 소스화한 것과 동일합니다. 왜냐하면 ros2_wssetup에는 해당 오버레이의 환경 뿐만 아니라 언더레이의 환경도 포함되어 있기 때문입니다.

➡ 오버레이에서 패키지 실행

ros2 run [package] [node]


📚 Modify the overlay 링크

  1. 워크스페이스(예: ~/ros2_ws)의 루트 디렉토리에서 새로운 터미널을 엽니다.
  2. ROS 2 환경을 "underlay"로 소스합니다. 이를 통해 오버레이를 "on top of" 기존 설치 위에 빌드할 수 있습니다.
  3. 오버레이에서 수정하려는 패키지의 소스 코드 파일을 찾습니다.
  4. 텍스트 편집기를 사용하여 파일을 열고 원하는 변경을 수행합니다.
  5. 파일을 저장한 후 첫 번째 터미널에서 colcon build 명령어를 실행하여 변경사항을 빌드합니다.
  6. 두 번째 터미널에서 오버레이를 소스한 후, 변경된 패키지를 실행하여 수정사항을 확인합니다.
  7. 이렇게 하면 오버레이에서 원하는 패키지를 수정하고 변경사항을 적용할 수 있습니다. 이는 기존 ROS 2 설치를 건드리지 않고 원하는 기능을 추가하거나 수정할 수 있는 장점을 제공합니다.


아래 내용은 다음에 사용될 내용 - 신경 ㄴㄴ

# 환경 변수 설정 - 안해주면 다음 명령어 동작 안함
source install/setup.bash

# ros2 run [패키지 이름] [노드 이름]
ros2 run pororo go2goal

0개의 댓글