작업공간 만들기
저작권: 쿼드(QUAD) 드론연구소 https://smartstore.naver.com/maponarooo
개요
작업 공간은 ROS2 패키지를 포함하는 디렉토리입니다. ROS2를 사용하기 전에 작업하려는 터미널에서 ROS2 작업 공간을 소싱해야 합니다. 이렇게 하면 해당 터미널에서 ROS2 패키지를 사용할 수 있습니다.
확장하려는 기존 ROS2 작업 공간 또는 "언더레이"를 방해하지 않고 새 패키지를 추가할 수 있는 보조 작업 공간인 "오버레이"를 소싱하는 옵션도 있습니다. 언더레이는 오버레이에 있는 모든 패키지의 종속성을 포함해야 합니다. 오버레이의 패키지는 언더레이의 패키지를 재정의합니다. 상위 언더레이의 패키지를 사용하는 각 연속 오버레이와 함께 여러 레이어의 언더레이 및 오버레이를 가질 수도 있습니다.
실습
1. ROS2 환경 소싱
기본 ROS 2 설치가 이 튜토리얼의 기반이 됩니다. (언더레이가 반드시 기본 ROS2 설치일 필요는 없음을 명심하십시오.)
(소스 또는 바이너리에서) ROS2를 설치한 방법과 사용 중인 플랫폼에 따라 정확한 소스 명령이 달라집니다.
이러한 명령이 작동하지 않는 경우 따랐던 설치 가이드를 참조하십시오.
2. 새 디렉토리 생성
모범 사례는 모든 새 작업 공간에 대해 새 디렉터리를 만드는 것입니다. 이름은 중요하지 않지만 작업 공간의 용도를 나타내면 유용합니다.
또 다른 모범 사례는 작업 공간에 있는 모든 패키지를 src
디렉토리에 넣는 것입니다. 위의 코드는 ros2_ws
내부에 디렉토리를 생성한 다음 해당 src
디렉토리로 이동합니다.
3. 샘플 리포지토리 복제
복제하기 전에 아직 ros2_ws/src 디렉토리에 있는지 확인하십시오 .
초보자 개발자 자습서의 나머지 부분에서는 고유한 패키지를 만들지만 지금은 기존 패키지를 사용하여 작업 공간을 함께 배치하는 연습을 하게 됩니다.
초보자: CLI 도구 자습서를 살펴본 경우 ros_tutorials 의 패키지 중 하나 인 turtlesim
에 익숙할 것입니다 .
리포지토리에는 여러 분기가 있을 수 있습니다. 설치된 ROS 2 배포판을 대상으로 하는 것을 확인해야 합니다. 이 리포지토리를 복제할 때 -b
인수 뒤에 해당 분기를 추가합니다.
디렉터리 ros2_ws/src
에서 다음 명령을 실행합니다.
이제 ros_tutorials
작업 공간에 복제됩니다. ros_tutorials
리포지토리 에는 이 자습서의 나머지 부분에서 사용할 turtlesim
패키지가 포함되어 있습니다 . 이 저장소의 다른 패키지는COLCON_IGNORE
파일 을 포함하고 있기 때문에 빌드되지 않습니다.
지금까지 샘플 패키지로 작업공간을 채웠지만 아직 완전한 기능을 갖춘 작업공간은 아닙니다. 먼저 종속성을 해결한 다음 작업 영역을 빌드해야 합니다.
4. 종속성 해결
작업 영역을 빌드하기 전에 패키지 종속성을 해결해야 합니다. 모든 종속성이 이미 있을 수 있지만 모범 사례는 복제할 때마다 종속성을 확인하는 것입니다. 종속성이 누락되었음을 깨닫기 위해 오랜 시간을 기다린 후 빌드가 실패하는 것을 원하지 않을 것입니다.
작업공간(ros2_ws
)의 루트에서 다음 명령을 실행하십시오.
소스 또는 "fat" 아카이브에서 Linux에 ROS2를 설치한 경우 설치 지침에서 rosdep 명령을 사용해야 합니다. 다음은 원본 rosdep 섹션 과 "fat" 아카이브 rosdep 섹션 입니다 .
이미 모든 종속성이 있는 경우 콘솔에서 다음을 반환합니다.
패키지는 package.xml 파일에서 종속성을 선언합니다(다음 자습서에서 패키지에 대해 자세히 알아볼 것입니다). 이 명령은 해당 선언을 살펴보고 누락된 선언을 설치합니다. rosdep는
다른 튜토리얼(출시 예정)에서 자세히 알아볼 수 있습니다 .
rosdep
rosdep은 ROS2 작업공간 안의 소스에 빌드에 필요한 종속성을 자동으로 설치하는 유용한 툴 입니다.
최초 실행시 다음과 같이 초기와 작업을 수행해 주어야 합니다.
5. colcon 으로 작업공간 구축
이제 작업 공간의 루트( ros2_ws
)에서 다음 명령을 사용하여 패키지를 빌드할 수 있습니다.
콘솔은 다음 메시지를 반환합니다.
메모
colcon build
다음에 대한 기타 유용한 인수 :
--packages-up-to
원하는 패키지와 모든 종속성을 빌드하지만 전체 작업 공간은 빌드하지 않음(시간 절약)--symlink-install
파이썬 스크립트를 조정할 때마다 다시 빌드하지 않아도 됩니다.--event-handlers console_direct+
빌드하는 동안 콘솔 출력을 보여줍니다(그렇지 않으면 디렉토리에서 찾을 수 있음log
).
빌드가 완료되면 ls를
작업 공간 루트( ~/ros2_ws
)에서 입력하면 colcon이 새 디렉토리를 생성한 것을 볼 수 있습니다.
이 install
디렉토리는 오버레이를 소싱하는 데 사용할 수 있는 작업 공간의 설정 파일이 있는 곳입니다.
6. 오버레이 소싱
오버레이를 소싱하기 전에 작업 공간을 구축한 터미널과 별도로 새 터미널을 여는 것이 매우 중요합니다. 빌드한 동일한 터미널에서 오버레이를 소싱하거나 마찬가지로 오버레이가 소싱된 위치에서 빌드하면 복잡한 문제가 발생할 수 있습니다.
새 터미널에서 기본 ROS2 환경을 "언더레이"로 소싱하여 "위에" 오버레이를 구축할 수 있습니다.
작업 공간의 루트로 이동합니다.
루트에서 오버레이를 소싱합니다.
그러나 이것이 메인 설치의 turtlesim이 아니라 오버레이 turtlesim이 실행되고 있다는 것을 어떻게 알 수 있습니까?
효과를 볼 수 있도록 오버레이에서 turtlesim을 수정해 보겠습니다.
언더레이와 별도로 오버레이에서 패키지를 수정하고 다시 빌드할 수 있습니다.
오버레이는 언더레이보다 우선합니다.
7. 오버레이 수정
Turtlesim 창의 제목 표시줄을 편집하여 오버레이에서 turtlesim을
수정할 수 있습니다 . 이렇게 하려면~/ros2_ws/src/ros_tutorials/turtlesim/src
에서 turtle_frame.cpp
파일을 찾습니다 . 선호하는 텍스트 편집기로 turtle_frame.cpp 파일을
엽니다 .
52행에서 setWindowTitle("TurtleSim");
함수를 볼 수 있습니다 . "TurtleSim"
값을 "MyTurtleSim"
로 변경 하고 파일을 저장합니다.
이전에 실행한 첫 번째 터미널로 돌아가서 colcon build
다시 실행합니다.
두 번째 터미널(오버레이 소스)로 돌아가서 turtlesim을 다시 실행합니다.
이제 Turtlesim 창의 제목 표시줄에 "MyTurtleSim"이 표시됩니다.
기본 ROS2 환경이 이전에 이 터미널에서 소싱되었지만 ros2_ws
환경의 오버레이가 언더레이의 내용보다 우선합니다.
언더레이가 여전히 손상되지 않았는지 확인하려면 새 터미널을 열고 ROS 2 설치만 소싱하십시오. Turtlesim을 다시 실행하십시오
오버레이의 수정 사항이 실제로 언더레이의 어떤 항목에도 영향을 미치지 않았음을 확인할 수 있습니다.
Last updated
Was this helpful?