개요
실습
package 생성하기
package 빌드하기
setup 파일 source하기
package 사용하기
package contents 살펴보기
커스텀 package.xml
새로운 package 생성하기
package란?
ROS 2 코드를 위한 구성 단위
ROS 2에서 code를 설치하거나 공유하기 위해서는 하나의 package로 구성해야함
package로 구성하면 배포 가능하고 다른 사람들이 빌드해서 쉽게 사용이 가능
ROS 2 package 구성
CMakeLists.txt : package를 빌드하는 방법
include/<package_name> directory : package 공용 헤더 파일
package.xml : package에 대한 meta 정보
src 디렉토리 : 소스 코드
my_package/
CMakeLists.txt
include/my_package/
package.xml
src/
이전에 생성한 workspace인 ros2_ws에 새로운 package를 생성하자.
src 폴더로 이동하기 명령
ros2 pkg create --build-type ament_cmake < package_name>
아래 명령으로 package 생성 명령 실행 (my_package)
ros2 pkg create --build-type ament_cmake --node-name my_node my_package
going to create a new package
package name: my_package
destination directory: /home/user/ros2_ws/src
package format: 3
version: 0.0.0
description: TODO: Package description
maintainer: ['<name> <email>']
licenses: ['TODO: License declaration']
build type: ament_cmake
dependencies: []
node_name: my_node
creating folder ./my_package
creating ./my_package/package.xml
creating source and include folder
creating folder ./my_package/src
creating folder ./my_package/include/my_package
creating ./my_package/CMakeLists.txt
creating ./my_package/src/my_node.cpp
src 디렉토리 내부에 my_package라는 폴더 생성
특정 package만 빌드 명령 실행 (my_package)
colcon build --packages-select my_package
workspace를 path에 추가하는 명령(빌드한 package를 실행 가능)
source install/local_setup.bash
--node-name 인자로 생성한 실행자를 실행하는 명령
ros2 run my_package my_node
hello world my_package package
2-5 package contents 살펴보기
ros2_ws/src/my_package 내부 살펴보기
CMakeLists.txt include package.xml src
ros2 pkg create 명령으로 자동 생성된 것들
my_node.cpp 파일은 src 디렉토리 내부에 있음
package.xml (수정 : description, license, maintainer 필드)
<?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 >my_package</name >
<version >0.0.0</version >
<description >TODO: Package description</description >
<maintainer email =" [email protected] " >user</maintainer >
<license >TODO: License declaration</license >
<buildtool_depend >ament_cmake</buildtool_depend >
<test_depend >ament_lint_auto</test_depend >
<test_depend >ament_lint_common</test_depend >
<export >
<build_type >ament_cmake</build_type >
</export >
</package >