[ros2] package.xml

About_work·2024년 3월 5일
0

ros2

목록 보기
25/41
  • 사용목적
    • 소스 코드를 실제 실행 가능한 프로그램이나 라이브러리로 변환하기 위해 colcon build 를 수행하면, package.xml 을 참조하여
      • 빌드할 패키지들 사이의 의존성을 해석하고,
      • 적절한 빌드 순서를 결정
    • 또한, 패키지의 의존성을 설치하기 위해 rosdep와 함께 사용될 때 이 파일의 정보를 기반으로 합니다.
  • 설명
    • 패키지의 "신분증"
    • 패키지의 메타데이터를 정의하는 파일
    • 패키지 이름, 버전, 라이선스, 의존성 및 기타 정보가 포함
    • rclpy, sensor_msgs, geometry_msgs에 대한 의존성이 명시
  • 사용처
    • ament 같은 ROS2 빌드 도구는, package.xml에서 제공하는 정보를 사용하여 패키지를 올바르게 빌드하고 설치
      • ament는 package.xml 파일에 기록된 정보(예: 패키지 이름, 버전, 의존하는 다른 패키지 등)를 읽습니다.
      • 이 정보를 바탕으로, 패키지를 올바르게 컴파일하고 빌드하는 과정을 수행
      • colcon은 ament를 포함한 여러 빌드 시스템을 지원하는 도구
        • colcon build를 하면, ament 가 실행됨.
    • rosdep 같은 도구는 package.xml에 정의된 의존성을 기반으로 필요한 ROS 및 시스템 의존성을 자동으로 설치
      • 이 도구는 주로 패키지가 필요로 하는 외부 라이브러리나 도구들을 자동으로 설치하는 데 사용 (package.xml을 참조하여)
      • 아래 명령은 src 디렉토리 내의 모든 패키지에 대한 의존성을 해결하고, 이미 소스로부터 설치된 패키지를 무시하며(--ignore-src), 필요한 모든 의존성을 자동으로 설치합니다(-r -y).
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -r -y
  • 예: example_pkg의 package.xml
<package format="3">
  <name>example_pkg</name>
  <version>0.0.1</version>
  <description>An example package for ROS2</description>
  <maintainer email="developer@example.com">Your Name</maintainer>
  <license>MIT</license>

  <depend>rclpy</depend>
  <depend>sensor_msgs</depend>
  <depend>geometry_msgs</depend>

  <export>
    <!-- Other export tags -->
  </export>
</package>

본격적 내용 탐구

<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
  <name>nav_temp_interfaces</name>
  <version>0.0.1</version>
  <description>test.</description>
  <maintainer email="xxx@xxx.com">Your Name</maintainer>
  <license>Apache License 2.0</license>

  <buildtool_depend>ament_cmake</buildtool_depend>

  <build_depend>builtin_interfaces</build_depend>
  <buildtool_depend>rosidl_default_generators</buildtool_depend>

  <exec_depend>builtin_interfaces</exec_depend>
  <exec_depend>rosidl_default_runtime</exec_depend>

  <member_of_group>rosidl_interface_packages</member_of_group>

  <export>
    <build_type>ament_cmake</build_type>
  </export>
</package>
  • <?xml version="1.0"?>
    • 문서가 XML 버전 1.0을 사용한다는 것을 선언합니다.
  • <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
    • 이 줄은 XML 문서에 대한 스키마 파일의 위치를 나타내며, 패키지 XML이 ROS 패키지 형식 3을 따르고 있음을 명시합니다.
  • <package format="3">:
    • 이 태그는 이 파일이 패키지 형식 3을 사용하는 ROS 패키지의 구성 파일임을 나타냅니다.
  • <name>nav_temp_interfaces</name>:
    • 패키지의 이름을 nav_temp_interfaces로 정의합니다.
  • <version>0.0.1</version>:
    • 패키지의 버전을 0.0.1로 지정합니다.
  • <description>test.</description>:
    • 패키지에 대한 간단한 설명을 추가합니다. 여기서는 "test."라고 되어 있습니다.
  • <license>Apache License 2.0</license>:
    • 패키지의 라이선스를 Apache License 2.0으로 명시합니다.
  • <buildtool_depend>ament_cmake</buildtool_depend>:
    • 패키지 빌드 시 사용되는 빌드 도구로 ament_cmake를 사용한다는 의존성을 나타냄
  • <build_depend>builtin_interfaces</build_depend>:
    • 빌드 시간에 필요한 의존성으로 builtin_interfaces 패키지를 명시
  • <buildtool_depend>rosidl_default_generators</buildtool_depend>:
    • 메시지 및 서비스 인터페이스를 위한 기본 ROS IDL(Interface Definition Language) 생성기에 대한 빌드 시 의존성을 나타냄
  • <exec_depend>builtin_interfaces</exec_depend>:
    • 패키지가 실행될 때 builtin_interfaces 패키지에 의존한다는 것을 명시
  • <exec_depend>rosidl_default_runtime</exec_depend>:
    • 실행 시에 ROS IDL 생성기의 런타임 라이브러리에 대한 의존성을 명시
  • <member_of_group>rosidl_interface_packages</member_of_group>: 이 패키지가 ROS IDL 인터페이스 패키지 그룹의 일부임을 선언합니다. 이는 패키지가 메시지, 서비스, 액션 인터페이스를 정의한다는 것을 나타냅니다.
  • <export><build_type>ament_cmake</build_type></export>: 패키지가 ament_cmake 빌드 시스템을 사용한다는 것을 다른 도구에 알리기 위해 이 정보를 내보냅니다.
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글