ROS2 Jazzy 개발환경 구성
저작권: 쿼드(QUAD) 드론연구소 https://smartstore.naver.com/maponarooo
ROS2는 셸 환경을 사용하여 작업 공간을 결합한다는 개념에 의존합니다. "workspace"은 ROS2로 개발 중인 시스템의 위치를 나타내는 ROS 용어입니다. 핵심 ROS2 작업 공간을 언더레이라고 합니다. 후속 로컬 작업 공간을 오버레이라고 합니다. ROS2로 개발할 때 일반적으로 여러 작업 공간이 동시에 활성화됩니다.
작업 공간을 결합하면 다양한 버전의 ROS2 또는 다양한 패키지 세트에 대한 개발이 더 쉬워집니다. 또한 동일한 컴퓨터에 여러 ROS2 배포판(또는 "distros", 예: Dashing 및 Eloquent)을 설치하고 배포판 간에 전환할 수 있습니다.
1. ROS2 설치
소스 설정
ROS2 패키지 설치
2. 환경 설정
가. 설정파일 소싱
나. 쉘 시작 스크립트에 소싱 추가
새 셸을 열 때마다 설정 파일을 소싱하지 않으려면(작업 1 건너뛰기) 셸 시작 스크립트에 명령을 추가할 수 있습니다.
다. 환경변수 확인
ROS 2 설정 파일을 소싱하면 ROS 2 작동에 필요한 여러 환경 변수가 설정됩니다. ROS 2 패키지를 찾거나 사용하는 데 문제가 있는 경우 다음 명령을 사용하여 환경이 올바르게 설정되었는지 확인하십시오.
ROS_DISTRO
및 와 같은 변수가 ROS_VERSION
설정되어 있는지 확인하십시오. 예를 들어 Foxy를 사용하는 경우 다음과 같이 표시됩니다.
ROS_DOMAIN_ID
변수
ROS 2가 통신에 사용하는 기본 미들웨어는 DDS입니다. DDS에서 서로 다른 논리 네트워크가 물리적 네트워크를 공유하도록 하는 기본 메커니즘을 도메인 ID라고 합니다. 동일한 도메인에 있는 ROS 2 노드는 서로 자유롭게 메시지를 검색하고 보낼 수 있지만 다른 도메인에 있는 ROS 2 노드는 할 수 없습니다. 모든 ROS 2 노드는 기본적으로 도메인 ID 0을 사용합니다. 동일한 네트워크에서 ROS 2를 실행하는 서로 다른 컴퓨터 그룹 간의 간섭을 방지하려면 각 그룹에 대해 서로 다른 도메인 ID를 설정해야 합니다.
ROS 2 노드 그룹의 고유한 정수를 결정했으면 다음 명령을 사용하여 환경 변수를 설정할 수 있습니다.
ROS_LOCALHOST_ONLY
변수
기본적으로 ROS 2 통신은 localhost로 제한되지 않습니다. ROS_LOCALHOST_ONLY
환경 변수를 사용하면 ROS 2 통신을 localhost로만 제한할 수 있습니다. 이는 ROS 2 시스템과 해당 항목, 서비스 및 작업이 로컬 네트워크의 다른 컴퓨터에 표시되지 않음을 의미합니다. 를 사용하는 ROS_LOCALHOST_ONLY
것은 여러 로봇이 이상한 행동을 유발하는 동일한 주제에 대해 게시할 수 있는 교실과 같은 특정 설정에서 유용합니다. 다음 명령을 사용하여 환경 변수를 설정할 수 있습니다.
ROS2 작업 공간 만들기
작업 공간은 ROS2 패키지를 포함하는 디렉토리입니다. ROS2를 사용하기 전에 작업하려는 터미널에서 ROS2 작업 공간을 소싱해야 합니다. 이렇게 하면 해당 터미널에서 ROS2 패키지를 사용할 수 있습니다.
확장하려는 기존 ROS2 작업 공간 또는 "언더레이"를 방해하지 않고 새 패키지를 추가할 수 있는 보조 작업 공간인 "오버레이"를 소싱하는 옵션도 있습니다. 언더레이는 오버레이에 있는 모든 패키지의 종속성을 포함해야 합니다. 오버레이의 패키지는 언더레이의 패키지를 재정의합니다. 상위 언더레이의 패키지를 사용하는 각 연속 오버레이와 함께 여러 레이어의 언더레이 및 오버레이를 가질 수도 있습니다.
1. ROS2 환경 소싱
기본 ROS 2 설치가 이 튜토리얼의 기반이 됩니다. (언더레이가 반드시 기본 ROS2 설치일 필요는 없음을 명심하십시오.)
(소스 또는 바이너리에서) ROS2를 설치한 방법과 사용 중인 플랫폼에 따라 정확한 소스 명령이 달라집니다.
이러한 명령이 작동하지 않는 경우 따랐던 설치 가이드를 참조하십시오.
2. 새 디렉토리 생성
모범 사례는 모든 새 작업 공간에 대해 새 디렉터리를 만드는 것입니다. 이름은 중요하지 않지만 작업 공간의 용도를 나타내면 유용합니다.
또 다른 모범 사례는 작업 공간에 있는 모든 패키지를 src
디렉토리에 넣는 것입니다. 위의 코드는 ros2_ws
내부에 디렉토리를 생성한 다음 해당 src
디렉토리로 이동합니다.
3. 샘플 리포지토리 복제
복제하기 전에 아직 ros2_ws/src 디렉토리에 있는지 확인하십시오 .
초보자 개발자 자습서의 나머지 부분에서는 고유한 패키지를 만들지만 지금은 기존 패키지를 사용하여 작업 공간을 함께 배치하는 연습을 하게 됩니다.
리포지토리에는 여러 분기가 있을 수 있습니다. 설치된 ROS 2 배포판을 대상으로 하는 것을 확인해야 합니다. 이 리포지토리를 복제할 때 -b
인수 뒤에 해당 분기를 추가합니다.
디렉터리 ros2_ws/src
에서 다음 명령을 실행합니다.
이제 ros_tutorials
작업 공간에 복제됩니다. ros_tutorials
리포지토리 에는 이 자습서의 나머지 부분에서 사용할 turtlesim
패키지가 포함되어 있습니다 . 이 저장소의 다른 패키지는COLCON_IGNORE
파일 을 포함하고 있기 때문에 빌드되지 않습니다.
지금까지 샘플 패키지로 작업공간을 채웠지만 아직 완전한 기능을 갖춘 작업공간은 아닙니다. 먼저 종속성을 해결한 다음 작업 영역을 빌드해야 합니다.
4. 종속성 해결
작업 영역을 빌드하기 전에 패키지 종속성을 해결해야 합니다. 모든 종속성이 이미 있을 수 있지만 모범 사례는 복제할 때마다 종속성을 확인하는 것입니다. 종속성이 누락되었음을 깨닫기 위해 오랜 시간을 기다린 후 빌드가 실패하는 것을 원하지 않을 것입니다.
작업공간(ros2_ws
)의 루트에서 다음 명령을 실행하십시오.
이미 모든 종속성이 있는 경우 콘솔에서 다음을 반환합니다.
패키지는 package.xml 파일에서 종속성을 선언합니다(다음 자습서에서 패키지에 대해 자세히 알아볼 것입니다). 이 명령은 해당 선언을 살펴보고 누락된 선언을 설치합니다. rosdep는
다른 튜토리얼(출시 예정)에서 자세히 알아볼 수 있습니다 .
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을 다시 실행하십시오
오버레이의 수정 사항이 실제로 언더레이의 어떤 항목에도 영향을 미치지 않았음을 확인할 수 있습니다.
ROS2 명령alias 설정
VS Code 설치
VisualStudio Code 를 설치 합니다.
Last updated